Reordering

This commit is contained in:
nub31
2025-07-09 20:32:59 +02:00
parent 0aa0911b0f
commit a0b7b9026c
8 changed files with 96 additions and 72 deletions

View File

@@ -0,0 +1,78 @@
using NubLang.Syntax.Binding;
using NubLang.Syntax.Binding.Node;
namespace NubLang.Generation;
public sealed class BoundDefinitionTable
{
private readonly List<BoundDefinition> _definitions;
public BoundDefinitionTable(IEnumerable<BoundSyntaxTree> syntaxTrees)
{
_definitions = syntaxTrees.SelectMany(x => x.Definitions).ToList();
}
public BoundLocalFunc LookupLocalFunc(string @namespace, string name)
{
return _definitions
.OfType<BoundLocalFunc>()
.First(x => x.Namespace == @namespace && x.Name == name);
}
public BoundExternFunc LookupExternFunc(string @namespace, string name)
{
return _definitions
.OfType<BoundExternFunc>()
.First(x => x.Namespace == @namespace && x.Name == name);
}
public BoundStruct LookupStruct(string @namespace, string name)
{
return _definitions
.OfType<BoundStruct>()
.First(x => x.Namespace == @namespace && x.Name == name);
}
public BoundStructField LookupStructField(BoundStruct @struct, string field)
{
return @struct.Fields.First(x => x.Name == field);
}
public IEnumerable<BoundTraitImpl> LookupTraitImpls(NubType itemType)
{
return _definitions
.OfType<BoundTraitImpl>()
.Where(x => x.ForType == itemType);
}
public BoundTraitFuncImpl LookupTraitFuncImpl(NubType forType, string name)
{
return _definitions
.OfType<BoundTraitImpl>()
.Where(x => x.ForType == forType)
.SelectMany(x => x.Functions)
.First(x => x.Name == name);
}
public BoundTrait LookupTrait(string @namespace, string name)
{
return _definitions
.OfType<BoundTrait>()
.First(x => x.Namespace == @namespace && x.Name == name);
}
public BoundTraitFunc LookupTraitFunc(BoundTrait trait, string name)
{
return trait.Functions.First(x => x.Name == name);
}
public IEnumerable<BoundStruct> GetStructs()
{
return _definitions.OfType<BoundStruct>();
}
public IEnumerable<BoundTrait> GetTraits()
{
return _definitions.OfType<BoundTrait>();
}
}

View File

@@ -1,5 +1,6 @@
using System.Diagnostics;
using System.Globalization;
using NubLang.Syntax.Binding;
using NubLang.Syntax.Binding.Node;
using NubLang.Syntax.Tokenization;

View File

@@ -1,6 +1,7 @@
using System.Diagnostics;
using System.Diagnostics.CodeAnalysis;
using System.Text;
using NubLang.Syntax.Binding;
using NubLang.Syntax.Binding.Node;
using NubLang.Syntax.Tokenization;