private ITreeRange AdjustExpression(ITreeRange range, ICompoundExpression expression)
        {
            var expressionStatement = ExpressionStatementNavigator.GetByExpression(expression);
            if (expressionStatement != null)
                return AdjustStatement(new TreeRange(expressionStatement, expressionStatement), expressionStatement);
            
            var ifStatement = IfStatementNavigator.GetByCondition(expression);
            if (ifStatement != null)
            {
                if (ifStatement.Else == null)
                {
                    return new TreeRange(ifStatement, ifStatement);
                }
                if (_executing)
                {
                    var block = ifStatement.Else as IBlock;
                    if (block == null)
                    {
                        ifStatement.ReplaceBy(ifStatement.Else);
                    }
                    else
                    {
                        //StatementUtil.ReplaceStatementWithBlock(block, ifStatementByCondition);
                    }
                }
                return null;
            }

            var switchStatement = SwitchStatementNavigator.GetByCondition(expression);
            if (switchStatement != null)
                return new TreeRange(switchStatement, switchStatement);
            
            var whileStatement = WhileStatementNavigator.GetByCondition(expression);
            if (whileStatement != null)
                return new TreeRange(whileStatement, whileStatement);

            var doStatement = DoStatementNavigator.GetByCondition(expression);
            if (doStatement != null)
            {
                if (!_executing)
                    return range;
                var block = doStatement.Statement as IBlock;
                if (block != null && block.Statements.Count == 1)
                {
                    doStatement.ReplaceBy(block.Statements[0]);
                }
                else
                {
                    doStatement.ReplaceBy(doStatement.Statement);
                }
                return null;
            }

            var forStatement = ForStatementNavigator.GetByForCondition(expression);
            if (forStatement != null)
                return new TreeRange(forStatement, forStatement);

            return range;
        }
Ejemplo n.º 2
0
        private ITreeRange AdjustExpression(ITreeRange range, ICompoundExpression expression)
        {
            var expressionStatement = ExpressionStatementNavigator.GetByExpression(expression);

            if (expressionStatement != null)
            {
                return(AdjustStatement(new TreeRange(expressionStatement, expressionStatement), expressionStatement));
            }

            var ifStatement = IfStatementNavigator.GetByCondition(expression);

            if (ifStatement != null)
            {
                if (ifStatement.Else == null)
                {
                    return(new TreeRange(ifStatement, ifStatement));
                }
                if (_executing)
                {
                    var block = ifStatement.Else as IBlock;
                    if (block == null)
                    {
                        ifStatement.ReplaceBy(ifStatement.Else);
                    }
                    else
                    {
                        //StatementUtil.ReplaceStatementWithBlock(block, ifStatementByCondition);
                    }
                }
                return(null);
            }

            var switchStatement = SwitchStatementNavigator.GetByCondition(expression);

            if (switchStatement != null)
            {
                return(new TreeRange(switchStatement, switchStatement));
            }

            var whileStatement = WhileStatementNavigator.GetByCondition(expression);

            if (whileStatement != null)
            {
                return(new TreeRange(whileStatement, whileStatement));
            }

            var doStatement = DoStatementNavigator.GetByCondition(expression);

            if (doStatement != null)
            {
                if (!_executing)
                {
                    return(range);
                }
                var block = doStatement.Statement as IBlock;
                if (block != null && block.Statements.Count == 1)
                {
                    doStatement.ReplaceBy(block.Statements[0]);
                }
                else
                {
                    doStatement.ReplaceBy(doStatement.Statement);
                }
                return(null);
            }

            var forStatement = ForStatementNavigator.GetByForCondition(expression);

            if (forStatement != null)
            {
                return(new TreeRange(forStatement, forStatement));
            }

            return(range);
        }
Ejemplo n.º 3
0
 public virtual void Visit(ICompoundExpression instance)
 {
 }