public static String getAssignmentOrLocalVarName(SyntaxNode node) { AssignmentExpressionSyntax assignmentExpressionSyntax = node as AssignmentExpressionSyntax; if (assignmentExpressionSyntax != null) { return(assignmentExpressionSyntax.Left.ToString()); } LocalDeclarationStatementSyntax localDeclarationStatementSyntax = node as LocalDeclarationStatementSyntax; if (localDeclarationStatementSyntax != null) { VariableDeclaratorSyntax variableDeclaratorSyntax = localDeclarationStatementSyntax.ChildNodes().First().ChildNodes().ElementAtOrDefault(1) as VariableDeclaratorSyntax; if (variableDeclaratorSyntax != null) { return(variableDeclaratorSyntax.Identifier.ToString()); } } VariableDeclarationSyntax variableDeclarationSyntax = node as VariableDeclarationSyntax; if (variableDeclarationSyntax != null) { VariableDeclaratorSyntax variableDeclaratorSyntax = variableDeclarationSyntax.ChildNodes().ElementAtOrDefault(1) as VariableDeclaratorSyntax; if (variableDeclaratorSyntax != null) { return(variableDeclaratorSyntax.Identifier.ToString()); } } return(null); }
internal static DocumentedElement LoadFromSyntaxNode(VariableDeclarationSyntax variable, SyntaxTriviaList syntaxTriviaList) { SyntaxToken syntaxToken = variable .ChildNodes().First(token => token.IsKind(SyntaxKind.VariableDeclarator)) .ChildTokens().First(token => token.IsKind(SyntaxKind.IdentifierToken)); return(DocumentedElement.LoadFromSyntaxTokenAndTrivia(syntaxToken, syntaxTriviaList)); }
private void liveVarHelper(SyntaxNode node, ISet <IdentifierNameSyntax> OutWithRemovedNodesRemoved) { CustomSyntaxVisitor visitor = new CustomSyntaxVisitor(); visitor.Visit(node); if (visitor.isFor || visitor.isWhile || visitor.isIf) { //do nothing } else if (visitor.isAss) { //only dive into right side AssignmentExpressionSyntax assignmentExpression = node as AssignmentExpressionSyntax; ISet <IdentifierNameSyntax> uses = FindIdentifierNameSyntax(assignmentExpression.Right); foreach (IdentifierNameSyntax lineUse in uses) { OutWithRemovedNodesRemoved.Add(lineUse); } } else if (visitor.isLocalDec) { LocalDeclarationStatementSyntax localDeclarationStatement = node as LocalDeclarationStatementSyntax; ISet <IdentifierNameSyntax> uses = FindIdentifierNameSyntax(localDeclarationStatement.ChildNodes().First().ChildNodes().ElementAtOrDefault(1).ChildNodes().First()); foreach (IdentifierNameSyntax lineUse in uses) { OutWithRemovedNodesRemoved.Add(lineUse); } } else if (visitor.isVarDec) { VariableDeclarationSyntax variableDeclaration = node as VariableDeclarationSyntax; ISet <IdentifierNameSyntax> uses = FindIdentifierNameSyntax(variableDeclaration.ChildNodes().ElementAtOrDefault(1).ChildNodes().First()); foreach (IdentifierNameSyntax lineUse in uses) { OutWithRemovedNodesRemoved.Add(lineUse); } } else { //Dive into whole statement ISet <IdentifierNameSyntax> uses = FindIdentifierNameSyntax(node); if (uses.Count != 0) { foreach (IdentifierNameSyntax lineUse in uses) { OutWithRemovedNodesRemoved.Add(lineUse); } } } }
//TODO: Move it to other class private MethodDeclarationSyntax Method(VariableDeclarationSyntax node) { var name = node.Variables .Where(v => !string.IsNullOrEmpty(v.Identifier.Text)) .Select(v => v.Identifier.Text) .Single(); var body = node.ChildNodes().OfType <VariableDeclaratorSyntax>().Single().Initializer.Value; var parameters = Parameters(body); var methodRoot = SyntaxFactory.MethodDeclaration(node.Type, name) .WithBody(SyntaxFactory.Block(SyntaxFactory.ReturnStatement(body))) .AddParameterListParameters(parameters.ToArray()); return(methodRoot); }
public override void VisitVariableDeclaration(VariableDeclarationSyntax node) { var afterEqualitySign = node.ChildNodes().OfType <VariableDeclaratorSyntax>().Single().Initializer.Value; if (afterEqualitySign is LiteralExpressionSyntax) { base.VisitVariableDeclaration(node); return; } var model = new ExtractedStatementModel { TargetStatement = node, Method = Method(node) }; model.Call = Call(model.Method); ExtractedStatements.Add(model); base.VisitVariableDeclaration(node); }