Ejemplo n.º 1
0
        protected override SyntaxNode VisitIfStatement(IfStatementSyntax node)
        {
            if (!node.DescendentNodes().OfType <BlockSyntax>().Any())
            {
                node = node.Update(node.IfKeyword, node.OpenParenToken, node.Condition, node.CloseParenToken,
                                   Syntax.Block(statements: node.Statement), node.ElseOpt);
            }

            if (node.ElseOpt != null)
            {
                ElseClauseSyntax  elseOpt  = node.ElseOpt;
                IfStatementSyntax ifSyntax = elseOpt.Statement as IfStatementSyntax;
                if (ifSyntax != null)
                {
                    if (!ifSyntax.DescendentNodes().OfType <BlockSyntax>().Any())
                    {
                        ifSyntax = ifSyntax.Update(ifSyntax.IfKeyword, ifSyntax.OpenParenToken, ifSyntax.Condition, ifSyntax.CloseParenToken,
                                                   Syntax.Block(statements: ifSyntax.Statement), ifSyntax.ElseOpt);

                        elseOpt = elseOpt.Update(elseOpt.ElseKeyword, ifSyntax);
                    }
                }
                else if (!elseOpt.DescendentNodes().OfType <BlockSyntax>().Any())
                {
                    elseOpt = node.ElseOpt.Update(node.ElseOpt.ElseKeyword, Syntax.Block(statements: node.ElseOpt.Statement));
                }

                if (elseOpt != node.ElseOpt)
                {
                    node = node.Update(node.IfKeyword, node.OpenParenToken, node.Condition, node.CloseParenToken, node.Statement, elseOpt);
                }
            }

            return(base.VisitIfStatement(node));
        }