using NubLang.Syntax.Parsing.Node; namespace NubLang.Syntax.Binding; public class DefinitionTable { private readonly List _definitions; public DefinitionTable(IEnumerable syntaxTrees) { _definitions = syntaxTrees.SelectMany(x => x.Definitions).ToList(); } public IEnumerable LookupLocalFunc(string @namespace, string name) { return _definitions .OfType() .Where(x => x.Namespace == @namespace && x.Name == name); } public IEnumerable LookupExternFunc(string @namespace, string name) { return _definitions .OfType() .Where(x => x.Namespace == @namespace && x.Name == name); } public IEnumerable LookupStruct(NubCustomType type) { return _definitions .OfType() .Where(x => x.Namespace == type.Namespace && x.Name == type.Name); } public IEnumerable LookupStructField(StructSyntax structNode, string field) { return structNode.Fields.Where(x => x.Name == field); } // public IEnumerable LookupTraitFuncImpl(NubType forType, string name) // { // return _definitions // .OfType() // .Where(x => x.ForType == forType) // .SelectMany(x => x.Functions) // .Where(x => x.Name == name); // } public IEnumerable LookupTrait(NubCustomType type) { return _definitions .OfType() .Where(x => x.Namespace == type.Namespace && x.Name == type.Name); } public IEnumerable LookupTraitFunc(TraitSyntax trait, string name) { return trait.Functions.Where(x => x.Name == name); } }