...
This commit is contained in:
@@ -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>();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user