public static ConstructorDeclarationSyntax MkCSharpConstructor(SyntaxToken name, SyntaxTokenList modifiers, List <SyntaxNode> constrPars, ConstructorInitializerSyntax initializer, List <StatementSyntax> body) { List <SyntaxNodeOrToken> pars = CSharpHelper.MkCSharpParameterList(constrPars); return(SyntaxFactory.ConstructorDeclaration(name) .WithModifiers(modifiers) .WithParameterList(SyntaxFactory.ParameterList(SyntaxFactory.SeparatedList <ParameterSyntax>(pars))) .WithInitializer(initializer) .WithBody(SyntaxFactory.Block(body))); }
public static SyntaxNode MkCSharpMethodDeclaration(SyntaxNode type, SyntaxToken name, SyntaxToken[] attrs, SyntaxList <StatementSyntax> body, List <SyntaxNode> methodPars) { List <SyntaxNodeOrToken> pars = CSharpHelper.MkCSharpParameterList(methodPars); return(SyntaxFactory.MethodDeclaration((TypeSyntax)type, name) .WithModifiers(SyntaxFactory.TokenList(attrs)) .WithParameterList( SyntaxFactory.ParameterList( SyntaxFactory.SeparatedList <ParameterSyntax>(pars))) .WithBody(SyntaxFactory.Block(body)) .NormalizeWhitespace()); }
public static ObjectCreationExpressionSyntax MkCSharpObjectCreationExpression(SyntaxNode type, params SyntaxNode[] names) { List <SyntaxNode> hd = new List <SyntaxNode>(); if (names.Length == 0) { return(SyntaxFactory.ObjectCreationExpression( (TypeSyntax)type) .WithArgumentList( SyntaxFactory.ArgumentList())); } //TODO(improve): merge this case with the general case else if (names.Length == 1) { return(SyntaxFactory.ObjectCreationExpression( (TypeSyntax)type) .WithArgumentList( SyntaxFactory.ArgumentList( SyntaxFactory.SingletonSeparatedList <ArgumentSyntax>( SyntaxFactory.Argument(((ExpressionSyntax)names[0]))))) //IdentifierName("p1"))))) .NormalizeWhitespace()); } else { hd.Add(SyntaxFactory.Argument((ExpressionSyntax)names[0])); for (int i = 1; i < names.Length; i++) { ArgumentSyntax tl = SyntaxFactory.Argument((ExpressionSyntax)names[i]); hd.Add(tl); } //hd contains list of Argument(IdentifierName(names[i])) //Insert Token(SyntaxKind.CommaToken) after each Argument except the last one //and create new SyntaxNodeOrToken[] out of the result: List <SyntaxNodeOrToken> hdWithCommas = CSharpHelper.MkCSharpParameterList(hd); //TODO(question): in Roslyn quoter, the initialization for List<SyntaxNodeOrToken> //looks different: "new SyntaxNodeOrToken[]{ el1, el2, ... } //Does that matter? return(SyntaxFactory.ObjectCreationExpression( (TypeSyntax)type) .WithArgumentList( SyntaxFactory.ArgumentList( SyntaxFactory.SeparatedList <ArgumentSyntax>( new List <SyntaxNodeOrToken>(hdWithCommas)))) .NormalizeWhitespace()); } }