ShaderTools.Hlsl.Binding.Binder.BindInterfaceDeclaration C# (CSharp) Method

BindInterfaceDeclaration() private method

private BindInterfaceDeclaration ( InterfaceTypeSyntax declaration, Symbol parent ) : BoundInterfaceType
declaration InterfaceTypeSyntax
parent ShaderTools.Hlsl.Symbols.Symbol
return ShaderTools.Hlsl.Binding.BoundNodes.BoundInterfaceType
        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());
        }