|
@@ -63,7 +63,7 @@ class TypedExprTools {
|
|
|
case TVar(v,eo): with(e, TVar(v, eo == null ? null : f(eo)));
|
|
|
case TFunction(fu): with(e, TFunction({ t: fu.t, args: fu.args, expr: f(fu.expr)}));
|
|
|
case TIf(e1, e2, e3): with(e, TIf(f(e1), f(e2), e3 == null ? null : f(e3)));
|
|
|
- case TSwitch(e1, cases, e2): with(e, TSwitch(f(e1), cases.map(function(c) return { values: c.values, expr: f(c.expr) }), e2 == null ? null : f(e2)));
|
|
|
+ case TSwitch(e1, cases, e2): with(e, TSwitch(f(e1), cases.map(function(c) return { values: c.values.map(f), expr: f(c.expr) }), e2 == null ? null : f(e2)));
|
|
|
case TPatMatch: throw false;
|
|
|
case TTry(e1, catches): with(e, TTry(f(e1), catches.map(function(c) return { v:c.v, expr: f(c.expr) })));
|
|
|
case TReturn(e1): with(e, TReturn(e1 == null ? null : f(e1)));
|
|
@@ -104,7 +104,10 @@ class TypedExprTools {
|
|
|
if (e3 != null) f(e3);
|
|
|
case TSwitch(e1, cases, e2):
|
|
|
f(e1);
|
|
|
- for (c in cases) f(c.expr);
|
|
|
+ for (c in cases) {
|
|
|
+ for (v in c.values) f(v);
|
|
|
+ f(c.expr);
|
|
|
+ }
|
|
|
if (e2 != null) f(e2);
|
|
|
case TTry(e1, catches):
|
|
|
f(e1);
|
|
@@ -144,7 +147,7 @@ class TypedExprTools {
|
|
|
case TVar(v,eo): with(e, TVar(fv(v), eo == null ? null : f(eo)), ft(e.t));
|
|
|
case TFunction(fu): with(e, TFunction({ t: ft(fu.t), args: fu.args.map(function(arg) return { v: fv(arg.v), value: arg.value }), expr: f(fu.expr)}), ft(e.t));
|
|
|
case TIf(e1, e2, e3): with(e, TIf(f(e1), f(e2), e3 == null ? null : f(e3)), ft(e.t));
|
|
|
- case TSwitch(e1, cases, e2): with(e, TSwitch(f(e1), cases.map(function(c) return { values: c.values, expr: f(c.expr) }), e2 == null ? null : f(e2)), ft(e.t));
|
|
|
+ case TSwitch(e1, cases, e2): with(e, TSwitch(f(e1), cases.map(function(c) return { values: c.values.map(f), expr: f(c.expr) }), e2 == null ? null : f(e2)), ft(e.t));
|
|
|
case TPatMatch: throw false;
|
|
|
case TTry(e1, catches): with(e, TTry(f(e1), catches.map(function(c) return { v:fv(c.v), expr: f(c.expr) })), ft(e.t));
|
|
|
case TReturn(e1): with(e, TReturn(e1 == null ? null : f(e1)), ft(e.t));
|