Esempio n. 1
0
        public override SyntaxList <StatementSyntax> VisitIfStatement(CSS.IfStatementSyntax node)
        {
            IdentifierNameSyntax  name;
            List <ArgumentSyntax> arguments = new List <ArgumentSyntax>();
            StatementSyntax       stmt;

            if (node.Else == null && TryConvertRaiseEvent(node, out name, arguments))
            {
                stmt = SyntaxFactory.RaiseEventStatement(name, SyntaxFactory.ArgumentList(SyntaxFactory.SeparatedList(arguments)));
                return(SyntaxFactory.SingletonList(stmt));
            }
            var             elseIfBlocks = new List <ElseIfBlockSyntax>();
            ElseBlockSyntax elseBlock    = null;

            CollectElseBlocks(node, elseIfBlocks, ref elseBlock);
            if (node.Statement is CSS.BlockSyntax)
            {
                stmt = SyntaxFactory.MultiLineIfBlock(
                    SyntaxFactory.IfStatement((ExpressionSyntax)node.Condition.Accept(_nodesVisitor)).WithThenKeyword(SyntaxFactory.Token(SyntaxKind.ThenKeyword)),
                    ConvertBlock(node.Statement),
                    SyntaxFactory.List(elseIfBlocks),
                    elseBlock
                    );
            }
            else
            {
                if (elseIfBlocks.Any() || elseBlock != null || !IsSimpleStatement(node.Statement))
                {
                    stmt = SyntaxFactory.MultiLineIfBlock(
                        SyntaxFactory.IfStatement((ExpressionSyntax)node.Condition.Accept(_nodesVisitor)).WithThenKeyword(SyntaxFactory.Token(SyntaxKind.ThenKeyword)),
                        ConvertBlock(node.Statement),
                        SyntaxFactory.List(elseIfBlocks),
                        elseBlock
                        );
                }
                else
                {
                    stmt = SyntaxFactory.SingleLineIfStatement(
                        (ExpressionSyntax)node.Condition.Accept(_nodesVisitor),
                        ConvertBlock(node.Statement),
                        null
                        ).WithThenKeyword(SyntaxFactory.Token(SyntaxKind.ThenKeyword));
                }
            }
            return(SyntaxFactory.SingletonList(stmt));
        }