This commit is contained in:
nub31
2025-07-21 17:06:31 +02:00
parent 1f6f4eab95
commit 69982017c5
6 changed files with 42 additions and 75 deletions

View File

@@ -50,30 +50,14 @@ public sealed class Binder
return node switch
{
ExternFuncSyntax definition => BindExternFuncDefinition(definition),
TraitImplSyntax definition => BindTraitImplementation(definition),
TraitSyntax definition => BindTraitDefinition(definition),
InterfaceSyntax definition => BindTraitDefinition(definition),
LocalFuncSyntax definition => BindLocalFuncDefinition(definition),
StructSyntax definition => BindStruct(definition),
_ => throw new ArgumentOutOfRangeException(nameof(node))
};
}
private BoundTraitImpl BindTraitImplementation(TraitImplSyntax node)
{
var functions = new List<BoundTraitFuncImpl>();
foreach (var func in node.Functions)
{
var signature = BindFuncSignature(func.Signature);
var body = BindFuncBody(func.Body, signature.ReturnType, signature.Parameters);
functions.Add(new BoundTraitFuncImpl(func.Tokens, func.Name, signature, body));
}
return new BoundTraitImpl(node.Tokens, node.Namespace, BindType(node.TraitType), BindType(node.ForType), functions);
}
private BoundTrait BindTraitDefinition(TraitSyntax node)
private BoundTrait BindTraitDefinition(InterfaceSyntax node)
{
var functions = new List<BoundTraitFunc>();