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 )); } } }
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);") }))); }
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(); } }
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);