Example #1
0
        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)));
        }
Example #2
0
        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());
        }
Example #3
0
        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());
            }
        }