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