public override IStmt VisitLocalDeclarationStatement(LocalDeclarationStatementSyntax node)
 {
     return(new CompoundLocalDeclStmt
     {
         Declarations = node.DescendantNodes().OfType <VariableDeclaratorSyntax>().Select(Visit).ToArray()
     });
 }
            public override MemberDeclarationSyntax VisitLocalDeclarationStatement(LocalDeclarationStatementSyntax node)
            {
                if (!ExistLocalVariable(node))
                {
                    return(null);
                }
                var variableDeclaration = node.DescendantNodes().OfType <VariableDeclarationSyntax>().FirstOrDefault();

                if (variableDeclaration == null)
                {
                    return(null);
                }
                return(variableDeclaration.Accept(new ExpressionVisitor(localVaribleName, semanticModel)));
            }
        private async Task <Document> ReplaceVarWithTypeAsync
            (Document document,
            LocalDeclarationStatementSyntax varDeclaration,
            CancellationToken cancellationToken)
        {
            SyntaxNode root = await document.GetSyntaxRootAsync(cancellationToken);

            // Get the symbol representing the type to be renamed.
            SemanticModel semanticModel = await document.GetSemanticModelAsync(cancellationToken);

            SymbolInfo typeSymbol    = semanticModel.GetSymbolInfo(varDeclaration.Declaration.Type);
            var        newIdentifier = SyntaxFactory.IdentifierName(typeSymbol.Symbol.ToDisplayString());

            IdentifierNameSyntax            varTypeName    = varDeclaration.DescendantNodes().OfType <IdentifierNameSyntax>().FirstOrDefault();
            LocalDeclarationStatementSyntax newDeclaration = varDeclaration.ReplaceNode(varTypeName, newIdentifier);
            SyntaxNode newRoot = root.ReplaceNode(varDeclaration, newDeclaration);

            return(document.WithSyntaxRoot(newRoot));
        }
Example #4
0
        private async Task <Document> AggregateMultiplication(Document document, LocalDeclarationStatementSyntax varDecl, CancellationToken cancellationToken)
        {
            try
            {
                var multiplication = varDecl.DescendantNodes().OfType <BinaryExpressionSyntax>().First();
                var left           = int.Parse(multiplication.Left.GetText().ToString());
                var right          = int.Parse(multiplication.Right.GetText().ToString());

                var updated = varDecl.Declaration.Variables.First().Initializer.Update(varDecl.Declaration.Variables.First().Initializer.EqualsToken,
                                                                                       SyntaxFactory.LiteralExpression(SyntaxKind.NumericLiteralExpression,
                                                                                                                       SyntaxFactory.Literal(left * right)));

                var oldRoot = await document.GetSyntaxRootAsync(cancellationToken);

                var newRoot = oldRoot.ReplaceNode(varDecl.Declaration.Variables.First().Initializer, updated);
                return(document.WithSyntaxRoot(newRoot));
            }
            catch (Exception e)
            {
                return(document);
            }
        }
        private String GetClassName(LocalDeclarationStatementSyntax localDeclarationStatement)
        {
            var objectCreation = localDeclarationStatement.DescendantNodes().OfType <ObjectCreationExpressionSyntax>().FirstOrDefault();

            return(objectCreation.DescendantNodes().OfType <IdentifierNameSyntax>().FirstOrDefault().Identifier.ValueText);
        }