コード例 #1
0
ファイル: MethodExtensions.cs プロジェクト: floehopper/jsii
        public static ParameterListSyntax GetParameterListSyntax(this Method method, INamespaceSet namespaces, ISymbolMap symbols)
        {
            method     = method ?? throw new ArgumentNullException(nameof(method));
            namespaces = namespaces ?? throw new ArgumentNullException(nameof(namespaces));
            symbols    = symbols ?? throw new ArgumentNullException(nameof(symbols));

            return(SF.ParameterList(SF.SeparatedList(GetParameters())));

            IEnumerable <ParameterSyntax> GetParameters()
            {
                if (method.Parameters == null)
                {
                    yield break;
                }

                foreach (Parameter parameter in method.Parameters)
                {
                    namespaces.Add(parameter.Type);

                    yield return(SF.Parameter(
                                     SF.List <AttributeListSyntax>(),
                                     SF.TokenList(),
                                     symbols.GetTypeSyntax(parameter.Type),
                                     symbols.GetNameSyntaxToken(parameter),
                                     null
                                     ));
                }
            }
        }
コード例 #2
0
ファイル: Usage.cs プロジェクト: zihotki/Excess
        private SyntaxNode memberExtension(SyntaxNode node, SyntacticalExtension <SyntaxNode> extension)
        {
            var memberDecl = node as MethodDeclarationSyntax;

            Assert.IsNotNull(memberDecl);

            return(memberDecl
                   .WithReturnType(CSharp.ParseTypeName("int"))
                   .WithIdentifier(CSharp.ParseToken("anotherName"))
                   .WithParameterList(CSharp.ParameterList())
                   .WithBody(memberDecl.Body
                             .AddStatements(new[] {
                CSharp.ParseStatement("var myFoo = 5;"),
                CSharp.ParseStatement("bar(myFoo);")
            })));
        }
コード例 #3
0
        private LocalFunctionStatementSyntax ConvertLambda(LambdaExpressionSyntax node)
        {
            LambdaExpressionSyntax visited;
            ParameterListSyntax    parameterList;

            switch (node)
            {
            case ParenthesizedLambdaExpressionSyntax parLambda: {
                var v = (ParenthesizedLambdaExpressionSyntax)base.VisitParenthesizedLambdaExpression(parLambda);
                parameterList = v.ParameterList;
                visited       = v;
                break;
            }

            case SimpleLambdaExpressionSyntax simpleLambda: {
                var v = (SimpleLambdaExpressionSyntax)base.VisitSimpleLambdaExpression(simpleLambda);
                parameterList = SyntaxFactory.ParameterList(
                    SyntaxFactory.SingletonSeparatedList(v.Parameter)
                    );
                visited = v;
                break;
            }

            default:
                throw new NotImplementedException();
            }
            if (_lambdaNumbersDict.TryGetValue(node, out var index))
            {
                return(SyntaxFactory.LocalFunctionStatement(GetDummyMethodReturnType(), $"lambda__{index}")
                       .NormalizeWhitespace()
                       .WithParameterList(parameterList)
                       .WithBody((BlockSyntax)visited.Body));
            }
            else
            {
                throw new Exception();
            }
        }
コード例 #4
0
 public LambdaExpressionSyntax Build()
 => _parameters.Count != 1
         ? (LambdaExpressionSyntax)SF.ParenthesizedLambdaExpression(SF.ParameterList(SF.SeparatedList(_parameters.Select(p => p.Build()).ToArray())), _block.HasValue ? _block.Value.Build() : null, _expr.HasValue ? _expr.Value.Build() : null)
         : SF.SimpleLambdaExpression(_parameters[0].Build(), _block.HasValue ? _block.Value.Build() : null, _expr.HasValue ? _expr.Value.Build() : null);