BindVariableDeclarator() private method

private BindVariableDeclarator ( VariableDeclaratorSyntax syntax, TypeSymbol variableType, Func createSymbol ) : BoundVariableDeclaration
syntax VariableDeclaratorSyntax
variableType ShaderTools.Hlsl.Symbols.TypeSymbol
createSymbol Func
return ShaderTools.Hlsl.Binding.BoundNodes.BoundVariableDeclaration
Exemplo n.º 1
0
        private ImmutableArray<BoundVariableDeclaration> BindParameters(ParameterListSyntax parameterList, Binder invocableBinder, InvocableSymbol invocableSymbol)
        {
            var boundParameters = new List<BoundVariableDeclaration>();
            foreach (var parameterSyntax in parameterList.Parameters)
            {
                var parameterValueType = Bind(parameterSyntax.Type, x => BindType(x, null));
                var parameterDirection = SyntaxFacts.GetParameterDirection(parameterSyntax.Modifiers);

                boundParameters.Add(invocableBinder.Bind(parameterSyntax.Declarator, x => invocableBinder.BindVariableDeclarator(x, parameterValueType.TypeSymbol, (d, t) =>
                    new SourceParameterSymbol(
                        parameterSyntax,
                        invocableSymbol,
                        t,
                        parameterDirection))));
            }

            invocableSymbol.ClearParameters();
            foreach (var parameter in invocableBinder.LocalSymbols.Values.SelectMany(x => x))
                invocableSymbol.AddParameter((ParameterSymbol) parameter);

            return boundParameters.ToImmutableArray();
        }
        private ImmutableArray <BoundVariableDeclaration> BindParameters(ParameterListSyntax parameterList, Binder invocableBinder, InvocableSymbol invocableSymbol)
        {
            var boundParameters = new List <BoundVariableDeclaration>();

            foreach (var parameterSyntax in parameterList.Parameters)
            {
                var parameterValueType = Bind(parameterSyntax.Type, x => BindType(x, null));
                var parameterDirection = SyntaxFacts.GetParameterDirection(parameterSyntax.Modifiers);

                boundParameters.Add(invocableBinder.Bind(parameterSyntax.Declarator, x => invocableBinder.BindVariableDeclarator(x, parameterValueType.TypeSymbol, (d, t) =>
                                                                                                                                 new SourceParameterSymbol(
                                                                                                                                     parameterSyntax,
                                                                                                                                     invocableSymbol,
                                                                                                                                     t,
                                                                                                                                     parameterDirection))));
            }

            invocableSymbol.ClearParameters();
            foreach (var parameter in invocableBinder.LocalSymbols.Values.SelectMany(x => x))
            {
                invocableSymbol.AddParameter((ParameterSymbol)parameter);
            }

            return(boundParameters.ToImmutableArray());
        }