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