private Statement FixSwitchingStatement(Statement statement)
 {
     if (statement is SwitchStatement)
     {
         SwitchStatement theSwitch = statement as SwitchStatement;
         if (theSwitch.Condition.Equals(theIntVariable))
         {
             theSwitch.Condition = theStringVariable.CloneExpressionOnly();
         }
         foreach (SwitchCase @case in theSwitch.Cases)
         {
             if (@case is ConditionCase)
             {
                 ConditionCase condCase  = @case as ConditionCase;
                 int           caseValue = (int)(condCase.Condition as LiteralExpression).Value;
                 condCase.Condition = new LiteralExpression(valueDictionary[caseValue], theTypeSystem, null);
             }
         }
     }
     else if (statement is IfElseIfStatement)
     {
         IfElseIfStatement irregularSwitch = statement as IfElseIfStatement;
         foreach (KeyValuePair <Expression, BlockStatement> condPair in irregularSwitch.ConditionBlocks)
         {
             FixConditionExpression(condPair.Key as BinaryExpression);
         }
     }
     return(statement);
 }
Ejemplo n.º 2
0
 public override ICodeNode VisitSwitchStatement(SwitchStatement node)
 {
     node.Condition = (Expression)Visit(node.Condition);
     foreach (SwitchCase @case in node.Cases)
     {
         if (@case is ConditionCase)
         {
             ConditionCase conditionCase = @case as ConditionCase;
             if (NeedsCast(conditionCase.Condition.ExpressionType, node.Condition.ExpressionType))
             {
                 if (conditionCase.Condition is LiteralExpression)
                 {
                     conditionCase.Condition = EnumHelper.GetEnumExpression(node.Condition.ExpressionType.Resolve(),
                                                                            (conditionCase.Condition as LiteralExpression), typeSystem);
                 }
                 else
                 {
                     conditionCase.Condition = new CastExpression(conditionCase.Condition, node.Condition.ExpressionType, null);
                 }
             }
         }
     }
     node = (SwitchStatement)base.VisitSwitchStatement(node);
     return(node);
 }
Ejemplo n.º 3
0
        public override void VisitConditionCase(ConditionCase node)
        {
            WriteKeyword("case");
            WriteSpace();
            Visit(node.Condition);
            WriteToken(":");
            WriteLine();

            Visit(node.Body);
        }
        private void ChangeCasesLabel()
        {
            foreach (SwitchCase @case in theSwitch.Cases)
            {
                if (@case.CodeNodeType != CodeNodeType.ConditionCase)
                {
                    continue;
                }

                ConditionCase     conditionCase    = @case as ConditionCase;
                LiteralExpression literalCondition = conditionCase.Condition as LiteralExpression;
                if (literalCondition == null || literalCondition.Value is string)
                {
                    continue;
                }
                conditionCase.Condition = FixCaseLiteralValue(literalCondition);
            }
        }
Ejemplo n.º 5
0
 public virtual void VisitConditionCase(ConditionCase node)
 {
     Visit(node.Condition);
     Visit(node.Body);
 }
Ejemplo n.º 6
0
 public virtual ICodeNode VisitConditionCase(ConditionCase node)
 {
     node.Condition = (Expression)Visit(node.Condition);
     node.Body      = (BlockStatement)Visit(node.Body);
     return(node);
 }
Ejemplo n.º 7
0
 public virtual void VisitConditionCase(ConditionCase node)
 {
     this.Visit(node.get_Condition());
     this.Visit(node.get_Body());
     return;
 }
 public override ICodeNode VisitConditionCase(ConditionCase node)
 {
     return(node);
 }
 public virtual ICodeNode VisitConditionCase(ConditionCase node)
 {
     node.set_Condition((Expression)this.Visit(node.get_Condition()));
     node.set_Body((BlockStatement)this.Visit(node.get_Body()));
     return(node);
 }