private BoundInterfaceType BindInterfaceDeclaration(InterfaceTypeSyntax declaration, Symbol parent) { var interfaceSymbol = new InterfaceSymbol(declaration, parent); AddSymbol(interfaceSymbol, declaration.Name.Span); var methods = new List<BoundFunction>(); var interfaceBinder = new Binder(_sharedBinderState, this); foreach (var memberSyntax in declaration.Methods) methods.Add(interfaceBinder.Bind(memberSyntax, x => interfaceBinder.BindFunctionDeclaration(x, interfaceSymbol))); foreach (var member in interfaceBinder.LocalSymbols.Values.SelectMany(x => x)) interfaceSymbol.AddMember(member); return new BoundInterfaceType(interfaceSymbol, methods.ToImmutableArray()); }
public BoundInterfaceType(InterfaceSymbol interfaceSymbol, ImmutableArray<BoundFunction> methods) : base(BoundNodeKind.InterfaceType, interfaceSymbol) { InterfaceSymbol = interfaceSymbol; Methods = methods; }