Пример #1
0
        public override SyntaxList <StatementSyntax> VisitContinueStatement(CSS.ContinueStatementSyntax node)
        {
            var statementKind = SyntaxKind.None;
            var keywordKind   = SyntaxKind.None;

            foreach (var stmt in node.GetAncestors <CSS.StatementSyntax>())
            {
                if (stmt is CSS.DoStatementSyntax)
                {
                    statementKind = SyntaxKind.ContinueDoStatement;
                    keywordKind   = SyntaxKind.DoKeyword;
                    break;
                }
                if (stmt is CSS.WhileStatementSyntax)
                {
                    statementKind = SyntaxKind.ContinueWhileStatement;
                    keywordKind   = SyntaxKind.WhileKeyword;
                    break;
                }
                if (stmt is CSS.ForStatementSyntax || stmt is CSS.ForEachStatementSyntax)
                {
                    statementKind = SyntaxKind.ContinueForStatement;
                    keywordKind   = SyntaxKind.ForKeyword;
                    break;
                }
            }
            return(SyntaxFactory.SingletonList <StatementSyntax>(SyntaxFactory.ContinueStatement(statementKind, SyntaxFactory.Token(keywordKind))));
        }
Пример #2
0
        public override SyntaxList <StatementSyntax> VisitContinueStatement(CSS.ContinueStatementSyntax node)
        {
            var statementKind = SyntaxKind.None;
            var keywordKind   = SyntaxKind.None;

            foreach (var stmt in node.GetAncestors <CSS.StatementSyntax>())
            {
                if (stmt is CSS.DoStatementSyntax)
                {
                    statementKind = SyntaxKind.ContinueDoStatement;
                    keywordKind   = SyntaxKind.DoKeyword;
                    break;
                }
                if (stmt is CSS.WhileStatementSyntax)
                {
                    statementKind = SyntaxKind.ContinueWhileStatement;
                    keywordKind   = SyntaxKind.WhileKeyword;
                    break;
                }
                if (stmt is CSS.ForEachStatementSyntax)
                {
                    statementKind = SyntaxKind.ContinueForStatement;
                    keywordKind   = SyntaxKind.ForKeyword;
                    break;
                }
                if (stmt is CSS.ForStatementSyntax fs)
                {
                    bool isFor = ConvertForToSimpleForNextWithoutStatements(fs, out _);
                    statementKind = isFor ? SyntaxKind.ContinueForStatement : SyntaxKind.ContinueWhileStatement;
                    keywordKind   = isFor ? SyntaxKind.ForKeyword : SyntaxKind.WhileKeyword;
                    break;
                }
            }
            return(SyntaxFactory.SingletonList <StatementSyntax>(SyntaxFactory.ContinueStatement(statementKind, SyntaxFactory.Token(keywordKind))));
        }
            private VB.Syntax.StatementSyntax VisitContinueStatementWorker(CS.Syntax.ContinueStatementSyntax node)
            {
                foreach (SyntaxNode parent in node.GetAncestorsOrThis <SyntaxNode>())
                {
                    if (parent.IsContinuableConstruct())
                    {
                        switch (parent.Kind())
                        {
                        case CS.SyntaxKind.DoStatement:
                            return(VB.SyntaxFactory.ContinueDoStatement());

                        case CS.SyntaxKind.WhileStatement:
                            return(VB.SyntaxFactory.ContinueWhileStatement());

                        case CS.SyntaxKind.ForStatement:
                        case CS.SyntaxKind.ForEachStatement:
                            return(VB.SyntaxFactory.ContinueForStatement());
                        }
                    }
                }

                return(CreateBadStatement(node, nodeVisitor));
            }
 public override SyntaxList <VB.Syntax.StatementSyntax> VisitContinueStatement(CS.Syntax.ContinueStatementSyntax node)
 {
     return(List(VisitContinueStatementWorker(node)));
 }