public void VisitNode(JSSwitchStatement ss) { AbsoluteJumpsSeenStack.Add(0); VisitChildren(ss); AbsoluteJumpsSeenStack.RemoveAt(AbsoluteJumpsSeenStack.Count - 1); }
public void VisitNode(JSSwitchStatement ss) { var conditionType = ss.Condition.GetExpectedType(TypeSystem); if ( !ILBlockTranslator.IsIntegral(conditionType) && ILBlockTranslator.IsEnum(conditionType) ) { var cast = JSInvocationExpression.InvokeStatic( new JSFakeMethod("Number", TypeSystem.Int32, conditionType), new[] { ss.Condition }, true ); ss.ReplaceChild(ss.Condition, cast); } VisitChildren(ss); }
public void VisitNode(JSSwitchStatement ss) { CheckLabel(ss); PushBlock(ss); try { VisitChildren(ss); } finally { BlockStack.Pop(); } }
public JSSwitchStatement TranslateNode(ILSwitch swtch) { var condition = TranslateNode(swtch.Condition); var conditionType = condition.GetExpectedType(TypeSystem); var result = new JSSwitchStatement(condition); Blocks.Push(result); result.Cases.AddRange( (from cb in swtch.CaseBlocks select TranslateNode(cb, conditionType)) ); Blocks.Pop(); return result; }
public void VisitNode(JSSwitchStatement ss) { var conditionType = ss.Condition.GetActualType(TypeSystem); if ( !TypeUtil.IsIntegral(conditionType) && IsEnumOrNullableEnum(conditionType) ) { var cast = JSInvocationExpression.InvokeMethod( JS.valueOf(TypeSystem.Int32), ss.Condition, null, true ); ss.ReplaceChild(ss.Condition, cast); } VisitChildren(ss); }