diff --git a/CHANGELOG.md b/CHANGELOG.md index 25e3f669b4..b3df440a3e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -74,6 +74,7 @@ These are only breaking changes for unformatted code. - New internal representation for uncurried functions using built-in type `function$` this avoids having to declare all the possible arities ahead of time https://github.com/rescript-lang/rescript-compiler/pull/5870 - PPX V3: allow uncurried `make` function and treat it like a curried one https://github.com/rescript-lang/rescript-compiler/pull/6081 - Add support for `|>` in uncurried mode by desugaring it https://github.com/rescript-lang/rescript-compiler/pull/6083 +- Change the compilation of pattern matching for variants so it does not depends on variats being integers https://github.com/rescript-lang/rescript-compiler/pull/6085 # 10.1.4 diff --git a/jscomp/core/js_exp_make.ml b/jscomp/core/js_exp_make.ml index 66e0fb4fba..1199eb5c0b 100644 --- a/jscomp/core/js_exp_make.ml +++ b/jscomp/core/js_exp_make.ml @@ -760,6 +760,9 @@ let string_equal ?comment (e0 : t) (e1 : t) : t = let is_type_number ?comment (e : t) : t = string_equal ?comment (typeof e) (str "number") +let is_tag (e : t) : t = + string_equal ~comment:"tag" (typeof e) (str "number") + let is_type_string ?comment (e : t) : t = string_equal ?comment (typeof e) (str "string") diff --git a/jscomp/core/js_exp_make.mli b/jscomp/core/js_exp_make.mli index 351663cceb..00959c53ae 100644 --- a/jscomp/core/js_exp_make.mli +++ b/jscomp/core/js_exp_make.mli @@ -199,6 +199,7 @@ val eq_null_undefined_boolean : ?comment:string -> t -> t -> t val neq_null_undefined_boolean : ?comment:string -> t -> t -> t val is_type_number : ?comment:string -> t -> t +val is_tag : t -> t val is_type_string : ?comment:string -> t -> t diff --git a/jscomp/core/lam_compile.ml b/jscomp/core/lam_compile.ml index 2e56858873..a82dc4eb39 100644 --- a/jscomp/core/lam_compile.ml +++ b/jscomp/core/lam_compile.ml @@ -616,7 +616,7 @@ and compile_switch (switch_arg : Lam.t) (sw : Lam.lambda_switch) else (* [e] will be used twice *) let dispatch e = - S.if_ (E.is_type_number e) + S.if_ (E.is_tag e) (compile_cases cxt e sw_consts sw_num_default get_const_name) (* default still needed, could simplified*) ~else_: diff --git a/jscomp/core/lam_convert.ml b/jscomp/core/lam_convert.ml index add8745cbc..87266c46d3 100644 --- a/jscomp/core/lam_convert.ml +++ b/jscomp/core/lam_convert.ml @@ -119,16 +119,16 @@ let lam_is_var (x : Lam.t) (y : Ident.t) = (** Make sure no int range overflow happens also we only check [int] *) -let happens_to_be_diff (sw_consts : (int * Lambda.lambda) list) : int option = +let happens_to_be_diff (sw_consts : (int * Lambda.lambda) list) sw_names : int option = match sw_consts with | ( a, - Lconst (Const_pointer (a0, Pt_constructor _) | Const_base (Const_int a0)) + Lconst (Const_base (Const_int a0)) ) :: ( b, Lconst - (Const_pointer (b0, Pt_constructor _) | Const_base (Const_int b0)) ) + (Const_base (Const_int b0)) ) :: rest - when no_over_flow a && no_over_flow a0 && no_over_flow b && no_over_flow b0 + when sw_names = None && no_over_flow a && no_over_flow a0 && no_over_flow b && no_over_flow b0 -> let diff = a0 - a in if b0 - b = diff then @@ -136,8 +136,7 @@ let happens_to_be_diff (sw_consts : (int * Lambda.lambda) list) : int option = Ext_list.for_all rest (fun (x, lam) -> match lam with | Lconst - ( Const_pointer (x0, Pt_constructor _) - | Const_base (Const_int x0) ) + ( Const_base (Const_int x0) ) when no_over_flow x0 && no_over_flow x -> x0 - x = diff | _ -> false) @@ -701,8 +700,9 @@ let convert (exports : Set_ident.t) (lam : Lambda.lambda) : sw_numblocks = 0; sw_consts; sw_numconsts; + sw_names; } -> ( - match happens_to_be_diff sw_consts with + match happens_to_be_diff sw_consts sw_names with | Some 0 -> e | Some i -> prim ~primitive:Paddint @@ -712,7 +712,7 @@ let convert (exports : Set_ident.t) (lam : Lambda.lambda) : Lam.const (Const_int { i = Int32.of_int i; comment = None }); ] Location.none - | None -> + | _ -> Lam.switch e { sw_failaction = None; diff --git a/jscomp/ml/matching.ml b/jscomp/ml/matching.ml index 4802a3dbf8..6b140691f4 100644 --- a/jscomp/ml/matching.ml +++ b/jscomp/ml/matching.ml @@ -2348,19 +2348,25 @@ let combine_constructor sw_names loc arg ex_pat cstr partial ctx def match (cstr.cstr_consts, cstr.cstr_nonconsts, consts, nonconsts) with - | (1, 1, [0, act1], [0, act2]) -> - (* Typically, match on lists, will avoid isint primitive in that - case *) + | (1, 1, [0, act1], [0, act2]) + when cstr.cstr_name = "::" || cstr.cstr_name = "[]" || Datarepr.constructor_has_optional_shape cstr + -> + (* Typically, match on lists, will avoid isint primitive in that + case *) let arg = if !Config.bs_only && Datarepr.constructor_has_optional_shape cstr then Lprim(is_not_none_bs_primitve , [arg], loc) else arg in Lifthenelse(arg, act2, act1) - | (2,0, [(i1,act1); (_,act2)],[]) -> - if i1 = 0 then Lifthenelse(arg, act2, act1) - else Lifthenelse (arg,act1,act2) - | (n,0,_,[]) -> (* The type defines constant constructors only *) + | (2,0, [(i1,act1); (_,act2)],[]) when + (match act1, act2 with + | Lconst (Const_pointer (_, Pt_constructor _ )), _ -> false + | _, Lconst (Const_pointer (_, Pt_constructor _ )) -> false + | _ -> true) -> + if i1 = 0 then Lifthenelse(arg, act2, act1) + else Lifthenelse (arg, act1, act2) + | (n,0,_,[]) when false (* relies on tag being an int *) -> (* The type defines constant constructors only *) call_switcher loc fail_opt arg 0 (n-1) consts sw_names | (n, _, _, _) -> let act0 = @@ -2373,7 +2379,7 @@ let combine_constructor sw_names loc arg ex_pat cstr partial ctx def else None | None,_ -> same_actions nonconsts in match act0 with - | Some act -> + | Some act when false (* relies on tag being an int *) -> Lifthenelse (Lprim (Pisint, [arg], loc), call_switcher loc @@ -2381,7 +2387,7 @@ let combine_constructor sw_names loc arg ex_pat cstr partial ctx def 0 (n-1) consts sw_names, act) (* Emit a switch, as bytecode implements this sophisticated instruction *) - | None -> + | _ -> let sw = {sw_numconsts = cstr.cstr_consts; sw_consts = consts; sw_numblocks = cstr.cstr_nonconsts; sw_blocks = nonconsts; diff --git a/jscomp/test/adt_optimize_test.js b/jscomp/test/adt_optimize_test.js index 20f076855e..2ee94ba712 100644 --- a/jscomp/test/adt_optimize_test.js +++ b/jscomp/test/adt_optimize_test.js @@ -2,23 +2,58 @@ function f(x) { - return x + 1 | 0; + switch (x) { + case /* A */0 : + return 1; + case /* B */1 : + return 2; + case /* C */2 : + return 3; + + } } function f_0(x) { - return x - 1 | 0; + switch (x) { + case /* A */0 : + return -1; + case /* B */1 : + return 0; + case /* C */2 : + return 1; + + } } function f2(param) { if (param >= 3) { return /* T003 */3; - } else { - return param; + } + switch (param) { + case 0 : + return /* T000 */0; + case 1 : + return /* T001 */1; + case 2 : + return /* T002 */2; + } } function f3(param) { - return param; + switch (param) { + case /* X0 */0 : + return /* Y0 */0; + case /* X1 */1 : + return /* Y1 */1; + case /* X2 */2 : + return /* Y2 */2; + case /* X3 */3 : + return /* Y3 */3; + case /* X4 */4 : + return /* Y4 */4; + + } } function f4(param) { @@ -26,7 +61,7 @@ function f4(param) { } function f5(param) { - if (typeof param === "number") { + if (/* tag */typeof param === "number") { switch (param) { case /* A */0 : return 1; @@ -49,19 +84,21 @@ function f5(param) { } function f6(param) { - if (typeof param === "number") { - if (param >= 2) { - return 2; - } else { - return 0; - } - } else { + if (/* tag */typeof param !== "number") { return 1; } + switch (param) { + case /* A */0 : + case /* B */1 : + return 0; + case /* F */2 : + return 2; + + } } function f7(param) { - if (typeof param === "number") { + if (/* tag */typeof param === "number") { switch (param) { case /* A */0 : return 1; @@ -85,7 +122,7 @@ function f7(param) { } function f8(param) { - if (typeof param === "number") { + if (/* tag */typeof param === "number") { switch (param) { case /* T60 */0 : case /* T61 */1 : @@ -105,7 +142,7 @@ function f8(param) { } function f9(param) { - if (typeof param === "number") { + if (/* tag */typeof param === "number") { if (param === /* T63 */3) { return 3; } else { @@ -124,7 +161,7 @@ function f9(param) { } function f10(param) { - if (typeof param === "number") { + if (/* tag */typeof param === "number") { switch (param) { case /* T60 */0 : return 0; @@ -150,7 +187,7 @@ function f10(param) { } function f11(x) { - if (typeof x === "number") { + if (/* tag */typeof x === "number") { return 2; } if (x.TAG === /* D */0) { diff --git a/jscomp/test/bal_set_mini.js b/jscomp/test/bal_set_mini.js index 3b79e9fc9e..b64f0025b7 100644 --- a/jscomp/test/bal_set_mini.js +++ b/jscomp/test/bal_set_mini.js @@ -2,10 +2,10 @@ function height(param) { - if (param) { - return param._3; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return param._3; } } @@ -24,7 +24,7 @@ function bal(l, v, r) { var hl = height(l); var hr = height(r); if (hl > (hr + 2 | 0)) { - if (!l) { + if (/* tag */typeof l === "number") { return /* Empty */0; } var lr = l._2; @@ -32,10 +32,10 @@ function bal(l, v, r) { var ll = l._0; if (height(ll) >= height(lr)) { return create(ll, lv, create(lr, v, r)); - } else if (lr) { - return create(create(ll, lv, lr._0), lr._1, create(lr._2, v, r)); - } else { + } else if (/* tag */typeof lr === "number") { return /* Empty */0; + } else { + return create(create(ll, lv, lr._0), lr._1, create(lr._2, v, r)); } } if (hr <= (hl + 2 | 0)) { @@ -46,7 +46,7 @@ function bal(l, v, r) { _3: hl >= hr ? hl + 1 | 0 : hr + 1 | 0 }; } - if (!r) { + if (/* tag */typeof r === "number") { return /* Empty */0; } var rr = r._2; @@ -54,10 +54,10 @@ function bal(l, v, r) { var rl = r._0; if (height(rr) >= height(rl)) { return create(create(l, v, rl), rv, rr); - } else if (rl) { - return create(create(l, v, rl._0), rl._1, create(rl._2, rv, rr)); - } else { + } else if (/* tag */typeof rl === "number") { return /* Empty */0; + } else { + return create(create(l, v, rl._0), rl._1, create(rl._2, rv, rr)); } } @@ -72,7 +72,7 @@ function compare_int(x, y) { } function add(x, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Node */{ _0: /* Empty */0, _1: x, @@ -97,11 +97,11 @@ function min_elt(_def, _param) { while(true) { var param = _param; var def = _def; - if (!param) { + if (/* tag */typeof param === "number") { return def; } var l = param._0; - if (!l) { + if (/* tag */typeof l === "number") { return param._1; } _param = l; @@ -111,18 +111,18 @@ function min_elt(_def, _param) { } function remove_min_elt(l, v, r) { - if (l) { - return bal(remove_min_elt(l._0, l._1, l._2), v, r); - } else { + if (/* tag */typeof l === "number") { return r; + } else { + return bal(remove_min_elt(l._0, l._1, l._2), v, r); } } function internal_merge(l, r) { - if (!l) { + if (/* tag */typeof l === "number") { return r; } - if (!r) { + if (/* tag */typeof r === "number") { return l; } var rv = r._1; @@ -130,7 +130,7 @@ function internal_merge(l, r) { } function remove(x, tree) { - if (!tree) { + if (/* tag */typeof tree === "number") { return /* Empty */0; } var r = tree._2; @@ -149,7 +149,7 @@ function remove(x, tree) { function mem(x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } var c = compare_int(x, param._1); @@ -180,7 +180,7 @@ for(var i$2 = 0; i$2 <= 100000; ++i$2){ var match = v; -if (match) { +if (/* tag */typeof match !== "number") { console.log("impossible"); } diff --git a/jscomp/test/bdd.js b/jscomp/test/bdd.js index c8f6a5d75c..3c5a714d60 100644 --- a/jscomp/test/bdd.js +++ b/jscomp/test/bdd.js @@ -5,8 +5,12 @@ var Caml_array = require("../../lib/js/caml_array.js"); function $$eval(_bdd, vars) { while(true) { var bdd = _bdd; - if (typeof bdd === "number") { - return bdd === 0; + if (/* tag */typeof bdd === "number") { + if (bdd === /* One */0) { + return true; + } else { + return false; + } } if (Caml_array.get(vars, bdd._1)) { _bdd = bdd._3; @@ -18,11 +22,11 @@ function $$eval(_bdd, vars) { } function getId(bdd) { - if (typeof bdd === "number") { - if (bdd !== 0) { - return 0; - } else { + if (/* tag */typeof bdd === "number") { + if (bdd === /* One */0) { return 1; + } else { + return 0; } } else { return bdd._2; @@ -60,7 +64,18 @@ function resize(newSize) { return ; } var n = bucket.hd; - if (typeof n === "number") { + if (/* tag */typeof n === "number") { + if (n === /* One */0) { + throw { + RE_EXN_ID: "Assert_failure", + _1: [ + "bdd.ml", + 54, + 27 + ], + Error: new Error() + }; + } throw { RE_EXN_ID: "Assert_failure", _1: [ @@ -70,14 +85,15 @@ function resize(newSize) { ], Error: new Error() }; + } else { + var ind = hashVal(getId(n._0), getId(n._3), n._1) & newSz_1; + Caml_array.set(newArr, ind, { + hd: n, + tl: Caml_array.get(newArr, ind) + }); + _bucket = bucket.tl; + continue ; } - var ind = hashVal(getId(n._0), getId(n._3), n._1) & newSz_1; - Caml_array.set(newArr, ind, { - hd: n, - tl: Caml_array.get(newArr, ind) - }); - _bucket = bucket.tl; - continue ; }; }; for(var n = 0 ,n_finish = sz_1.contents; n <= n_finish; ++n){ @@ -124,7 +140,18 @@ function mkNode(low, v, high) { var b = _b; if (b) { var n = b.hd; - if (typeof n === "number") { + if (/* tag */typeof n === "number") { + if (n === /* One */0) { + throw { + RE_EXN_ID: "Assert_failure", + _1: [ + "bdd.ml", + 99, + 31 + ], + Error: new Error() + }; + } throw { RE_EXN_ID: "Assert_failure", _1: [ @@ -134,22 +161,24 @@ function mkNode(low, v, high) { ], Error: new Error() }; + } else { + if (v === n._1 && idl === getId(n._0) && idh === getId(n._3)) { + return n; + } + _b = b.tl; + continue ; } - if (v === n._1 && idl === getId(n._0) && idh === getId(n._3)) { - return n; - } - _b = b.tl; - continue ; + } else { + var n_2 = (nodeC.contents = nodeC.contents + 1 | 0, nodeC.contents); + var n$1 = /* Node */{ + _0: low, + _1: v, + _2: n_2, + _3: high + }; + insert(getId(low), getId(high), v, ind, bucket, n$1); + return n$1; } - var n_2 = (nodeC.contents = nodeC.contents + 1 | 0, nodeC.contents); - var n$1 = /* Node */{ - _0: low, - _1: v, - _2: n_2, - _3: high - }; - insert(getId(low), getId(high), v, ind, bucket, n$1); - return n$1; }; } @@ -188,11 +217,11 @@ function hash(x, y) { } function not(n) { - if (typeof n === "number") { - if (n !== 0) { - return /* One */0; - } else { + if (/* tag */typeof n === "number") { + if (n === /* One */0) { return /* Zero */1; + } else { + return /* One */0; } } var id = n._2; @@ -207,22 +236,22 @@ function not(n) { } function and2(n1, n2) { - if (typeof n1 === "number") { - if (n1 !== 0) { - return /* Zero */1; - } else { + if (/* tag */typeof n1 === "number") { + if (n1 === /* One */0) { return n2; + } else { + return /* Zero */1; } } var r1 = n1._3; var i1 = n1._2; var v1 = n1._1; var l1 = n1._0; - if (typeof n2 === "number") { - if (n2 !== 0) { - return /* Zero */1; - } else { + if (/* tag */typeof n2 === "number") { + if (n2 === /* One */0) { return n1; + } else { + return /* Zero */1; } } var r2 = n2._3; @@ -254,22 +283,22 @@ function and2(n1, n2) { } function xor(n1, n2) { - if (typeof n1 === "number") { - if (n1 !== 0) { - return n2; - } else { + if (/* tag */typeof n1 === "number") { + if (n1 === /* One */0) { return not(n2); + } else { + return n2; } } var r1 = n1._3; var i1 = n1._2; var v1 = n1._1; var l1 = n1._0; - if (typeof n2 === "number") { - if (n2 !== 0) { - return n1; - } else { + if (/* tag */typeof n2 === "number") { + if (n2 === /* One */0) { return not(n1); + } else { + return n1; } } var r2 = n2._3; diff --git a/jscomp/test/big_enum.js b/jscomp/test/big_enum.js index 4da3da2481..1022a33d21 100644 --- a/jscomp/test/big_enum.js +++ b/jscomp/test/big_enum.js @@ -2,7 +2,609 @@ function to_enum(param) { - return param; + switch (param) { + case /* A0 */0 : + return 0; + case /* A1 */1 : + return 1; + case /* A2 */2 : + return 2; + case /* A3 */3 : + return 3; + case /* A4 */4 : + return 4; + case /* A5 */5 : + return 5; + case /* A6 */6 : + return 6; + case /* A7 */7 : + return 7; + case /* A8 */8 : + return 8; + case /* A9 */9 : + return 9; + case /* A10 */10 : + return 10; + case /* A11 */11 : + return 11; + case /* A12 */12 : + return 12; + case /* A13 */13 : + return 13; + case /* A14 */14 : + return 14; + case /* A15 */15 : + return 15; + case /* A16 */16 : + return 16; + case /* A17 */17 : + return 17; + case /* A18 */18 : + return 18; + case /* A19 */19 : + return 19; + case /* A20 */20 : + return 20; + case /* A21 */21 : + return 21; + case /* A22 */22 : + return 22; + case /* A23 */23 : + return 23; + case /* A24 */24 : + return 24; + case /* A25 */25 : + return 25; + case /* A26 */26 : + return 26; + case /* A27 */27 : + return 27; + case /* A28 */28 : + return 28; + case /* A29 */29 : + return 29; + case /* A30 */30 : + return 30; + case /* A31 */31 : + return 31; + case /* A32 */32 : + return 32; + case /* A33 */33 : + return 33; + case /* A34 */34 : + return 34; + case /* A35 */35 : + return 35; + case /* A36 */36 : + return 36; + case /* A37 */37 : + return 37; + case /* A38 */38 : + return 38; + case /* A39 */39 : + return 39; + case /* A40 */40 : + return 40; + case /* A41 */41 : + return 41; + case /* A42 */42 : + return 42; + case /* A43 */43 : + return 43; + case /* A44 */44 : + return 44; + case /* A45 */45 : + return 45; + case /* A46 */46 : + return 46; + case /* A47 */47 : + return 47; + case /* A48 */48 : + return 48; + case /* A49 */49 : + return 49; + case /* A50 */50 : + return 50; + case /* A51 */51 : + return 51; + case /* A52 */52 : + return 52; + case /* A53 */53 : + return 53; + case /* A54 */54 : + return 54; + case /* A55 */55 : + return 55; + case /* A56 */56 : + return 56; + case /* A57 */57 : + return 57; + case /* A58 */58 : + return 58; + case /* A59 */59 : + return 59; + case /* A60 */60 : + return 60; + case /* A61 */61 : + return 61; + case /* A62 */62 : + return 62; + case /* A63 */63 : + return 63; + case /* A64 */64 : + return 64; + case /* A65 */65 : + return 65; + case /* A66 */66 : + return 66; + case /* A67 */67 : + return 67; + case /* A68 */68 : + return 68; + case /* A69 */69 : + return 69; + case /* A70 */70 : + return 70; + case /* A71 */71 : + return 71; + case /* A72 */72 : + return 72; + case /* A73 */73 : + return 73; + case /* A74 */74 : + return 74; + case /* A75 */75 : + return 75; + case /* A76 */76 : + return 76; + case /* A77 */77 : + return 77; + case /* A78 */78 : + return 78; + case /* A79 */79 : + return 79; + case /* A80 */80 : + return 80; + case /* A81 */81 : + return 81; + case /* A82 */82 : + return 82; + case /* A83 */83 : + return 83; + case /* A84 */84 : + return 84; + case /* A85 */85 : + return 85; + case /* A86 */86 : + return 86; + case /* A87 */87 : + return 87; + case /* A88 */88 : + return 88; + case /* A89 */89 : + return 89; + case /* A90 */90 : + return 90; + case /* A91 */91 : + return 91; + case /* A92 */92 : + return 92; + case /* A93 */93 : + return 93; + case /* A94 */94 : + return 94; + case /* A95 */95 : + return 95; + case /* A96 */96 : + return 96; + case /* A97 */97 : + return 97; + case /* A98 */98 : + return 98; + case /* A99 */99 : + return 99; + case /* A100 */100 : + return 100; + case /* A101 */101 : + return 101; + case /* A102 */102 : + return 102; + case /* A103 */103 : + return 103; + case /* A104 */104 : + return 104; + case /* A105 */105 : + return 105; + case /* A106 */106 : + return 106; + case /* A107 */107 : + return 107; + case /* A108 */108 : + return 108; + case /* A109 */109 : + return 109; + case /* A110 */110 : + return 110; + case /* A111 */111 : + return 111; + case /* A112 */112 : + return 112; + case /* A113 */113 : + return 113; + case /* A114 */114 : + return 114; + case /* A115 */115 : + return 115; + case /* A116 */116 : + return 116; + case /* A117 */117 : + return 117; + case /* A118 */118 : + return 118; + case /* A119 */119 : + return 119; + case /* A120 */120 : + return 120; + case /* A121 */121 : + return 121; + case /* A122 */122 : + return 122; + case /* A123 */123 : + return 123; + case /* A124 */124 : + return 124; + case /* A125 */125 : + return 125; + case /* A126 */126 : + return 126; + case /* A127 */127 : + return 127; + case /* A128 */128 : + return 128; + case /* A129 */129 : + return 129; + case /* A130 */130 : + return 130; + case /* A131 */131 : + return 131; + case /* A132 */132 : + return 132; + case /* A133 */133 : + return 133; + case /* A134 */134 : + return 134; + case /* A135 */135 : + return 135; + case /* A136 */136 : + return 136; + case /* A137 */137 : + return 137; + case /* A138 */138 : + return 138; + case /* A139 */139 : + return 139; + case /* A140 */140 : + return 140; + case /* A141 */141 : + return 141; + case /* A142 */142 : + return 142; + case /* A143 */143 : + return 143; + case /* A144 */144 : + return 144; + case /* A145 */145 : + return 145; + case /* A146 */146 : + return 146; + case /* A147 */147 : + return 147; + case /* A148 */148 : + return 148; + case /* A149 */149 : + return 149; + case /* A150 */150 : + return 150; + case /* A151 */151 : + return 151; + case /* A152 */152 : + return 152; + case /* A153 */153 : + return 153; + case /* A154 */154 : + return 154; + case /* A155 */155 : + return 155; + case /* A156 */156 : + return 156; + case /* A157 */157 : + return 157; + case /* A158 */158 : + return 158; + case /* A159 */159 : + return 159; + case /* A160 */160 : + return 160; + case /* A161 */161 : + return 161; + case /* A162 */162 : + return 162; + case /* A163 */163 : + return 163; + case /* A164 */164 : + return 164; + case /* A165 */165 : + return 165; + case /* A166 */166 : + return 166; + case /* A167 */167 : + return 167; + case /* A168 */168 : + return 168; + case /* A169 */169 : + return 169; + case /* A170 */170 : + return 170; + case /* A171 */171 : + return 171; + case /* A172 */172 : + return 172; + case /* A173 */173 : + return 173; + case /* A174 */174 : + return 174; + case /* A175 */175 : + return 175; + case /* A176 */176 : + return 176; + case /* A177 */177 : + return 177; + case /* A178 */178 : + return 178; + case /* A179 */179 : + return 179; + case /* A180 */180 : + return 180; + case /* A181 */181 : + return 181; + case /* A182 */182 : + return 182; + case /* A183 */183 : + return 183; + case /* A184 */184 : + return 184; + case /* A185 */185 : + return 185; + case /* A186 */186 : + return 186; + case /* A187 */187 : + return 187; + case /* A188 */188 : + return 188; + case /* A189 */189 : + return 189; + case /* A190 */190 : + return 190; + case /* A191 */191 : + return 191; + case /* A192 */192 : + return 192; + case /* A193 */193 : + return 193; + case /* A194 */194 : + return 194; + case /* A195 */195 : + return 195; + case /* A196 */196 : + return 196; + case /* A197 */197 : + return 197; + case /* A198 */198 : + return 198; + case /* A199 */199 : + return 199; + case /* A200 */200 : + return 200; + case /* A201 */201 : + return 201; + case /* A202 */202 : + return 202; + case /* A203 */203 : + return 203; + case /* A204 */204 : + return 204; + case /* A205 */205 : + return 205; + case /* A206 */206 : + return 206; + case /* A207 */207 : + return 207; + case /* A208 */208 : + return 208; + case /* A209 */209 : + return 209; + case /* A210 */210 : + return 210; + case /* A211 */211 : + return 211; + case /* A212 */212 : + return 212; + case /* A213 */213 : + return 213; + case /* A214 */214 : + return 214; + case /* A215 */215 : + return 215; + case /* A216 */216 : + return 216; + case /* A217 */217 : + return 217; + case /* A218 */218 : + return 218; + case /* A219 */219 : + return 219; + case /* A220 */220 : + return 220; + case /* A221 */221 : + return 221; + case /* A222 */222 : + return 222; + case /* A223 */223 : + return 223; + case /* A224 */224 : + return 224; + case /* A225 */225 : + return 225; + case /* A226 */226 : + return 226; + case /* A227 */227 : + return 227; + case /* A228 */228 : + return 228; + case /* A229 */229 : + return 229; + case /* A230 */230 : + return 230; + case /* A231 */231 : + return 231; + case /* A232 */232 : + return 232; + case /* A233 */233 : + return 233; + case /* A234 */234 : + return 234; + case /* A235 */235 : + return 235; + case /* A236 */236 : + return 236; + case /* A237 */237 : + return 237; + case /* A238 */238 : + return 238; + case /* A239 */239 : + return 239; + case /* A240 */240 : + return 240; + case /* A241 */241 : + return 241; + case /* A242 */242 : + return 242; + case /* A243 */243 : + return 243; + case /* A244 */244 : + return 244; + case /* A245 */245 : + return 245; + case /* A246 */246 : + return 246; + case /* A247 */247 : + return 247; + case /* A248 */248 : + return 248; + case /* A249 */249 : + return 249; + case /* A250 */250 : + return 250; + case /* A251 */251 : + return 251; + case /* A252 */252 : + return 252; + case /* A253 */253 : + return 253; + case /* A254 */254 : + return 254; + case /* A255 */255 : + return 255; + case /* A256 */256 : + return 256; + case /* A257 */257 : + return 257; + case /* A258 */258 : + return 258; + case /* A259 */259 : + return 259; + case /* A260 */260 : + return 260; + case /* A261 */261 : + return 261; + case /* A262 */262 : + return 262; + case /* A263 */263 : + return 263; + case /* A264 */264 : + return 264; + case /* A265 */265 : + return 265; + case /* A266 */266 : + return 266; + case /* A267 */267 : + return 267; + case /* A268 */268 : + return 268; + case /* A269 */269 : + return 269; + case /* A270 */270 : + return 270; + case /* A271 */271 : + return 271; + case /* A272 */272 : + return 272; + case /* A273 */273 : + return 273; + case /* A274 */274 : + return 274; + case /* A275 */275 : + return 275; + case /* A276 */276 : + return 276; + case /* A277 */277 : + return 277; + case /* A278 */278 : + return 278; + case /* A279 */279 : + return 279; + case /* A280 */280 : + return 280; + case /* A281 */281 : + return 281; + case /* A282 */282 : + return 282; + case /* A283 */283 : + return 283; + case /* A284 */284 : + return 284; + case /* A285 */285 : + return 285; + case /* A286 */286 : + return 286; + case /* A287 */287 : + return 287; + case /* A288 */288 : + return 288; + case /* A289 */289 : + return 289; + case /* A290 */290 : + return 290; + case /* A291 */291 : + return 291; + case /* A292 */292 : + return 292; + case /* A293 */293 : + return 293; + case /* A294 */294 : + return 294; + case /* A295 */295 : + return 295; + case /* A296 */296 : + return 296; + case /* A297 */297 : + return 297; + case /* A298 */298 : + return 298; + case /* A299 */299 : + return 299; + + } } function to_string(param) { diff --git a/jscomp/test/build.ninja b/jscomp/test/build.ninja index 5aa4ac9571..4f6ce47b11 100644 --- a/jscomp/test/build.ninja +++ b/jscomp/test/build.ninja @@ -723,6 +723,7 @@ o test/unsafe_this.cmi : cc test/unsafe_this.mli | $bsc $stdlib runtime o test/update_record_test.cmi test/update_record_test.cmj : cc test/update_record_test.ml | test/mt.cmj $bsc $stdlib runtime o test/utf8_decode_test.cmi test/utf8_decode_test.cmj : cc test/utf8_decode_test.ml | test/mt.cmj $bsc $stdlib runtime o test/variant.cmi test/variant.cmj : cc test/variant.ml | $bsc $stdlib runtime +o test/variantsMatching.cmi test/variantsMatching.cmj : cc test/variantsMatching.res | $bsc $stdlib runtime o test/watch_test.cmi test/watch_test.cmj : cc test/watch_test.ml | $bsc $stdlib runtime o test/webpack_config.cmi test/webpack_config.cmj : cc test/webpack_config.ml | $bsc $stdlib runtime -o test : phony test/406_primitive_test.cmi test/406_primitive_test.cmj test/EmptyRecord.cmi test/EmptyRecord.cmj test/SafePromises.cmi test/SafePromises.cmj test/UncurriedAlways.cmi test/UncurriedAlways.cmj test/UncurriedExternals.cmi test/UncurriedExternals.cmj test/UncurriedPervasives.cmi test/UncurriedPervasives.cmj test/a.cmi test/a.cmj test/a_filename_test.cmi test/a_filename_test.cmj test/a_list_test.cmi test/a_list_test.cmj test/a_recursive_type.cmi test/a_recursive_type.cmj test/a_scope_bug.cmi test/a_scope_bug.cmj test/a_string_test.cmi test/a_string_test.cmj test/abstract_type.cmi test/abstract_type.cmj test/adt_optimize_test.cmi test/adt_optimize_test.cmj test/alias_default_value_test.cmi test/alias_default_value_test.cmj test/alias_test.cmi test/alias_test.cmj test/and_or_tailcall_test.cmi test/and_or_tailcall_test.cmj test/app_root_finder.cmi test/app_root_finder.cmj test/argv_test.cmi test/argv_test.cmj test/ari_regress_test.cmi test/ari_regress_test.cmj test/arith_lexer.cmi test/arith_lexer.cmj test/arith_parser.cmi test/arith_parser.cmj test/arith_syntax.cmi test/arith_syntax.cmj test/arity.cmi test/arity.cmj test/arity_deopt.cmi test/arity_deopt.cmj test/arity_infer.cmi test/arity_infer.cmj test/array_data_util.cmi test/array_data_util.cmj test/array_safe_get.cmi test/array_safe_get.cmj test/array_subtle_test.cmi test/array_subtle_test.cmj test/array_test.cmi test/array_test.cmj test/ast_abstract_test.cmi test/ast_abstract_test.cmj test/ast_js_mapper_poly_test.cmi test/ast_js_mapper_poly_test.cmj test/ast_js_mapper_test.cmi test/ast_js_mapper_test.cmj test/ast_mapper_defensive_test.cmi test/ast_mapper_defensive_test.cmj test/ast_mapper_unused_warning_test.cmi test/ast_mapper_unused_warning_test.cmj test/async_await.cmi test/async_await.cmj test/async_ideas.cmi test/async_ideas.cmj test/async_inline.cmi test/async_inline.cmj test/attr_test.cmi test/attr_test.cmj test/b.cmi test/b.cmj test/bal_set_mini.cmi test/bal_set_mini.cmj test/bang_primitive.cmi test/bang_primitive.cmj test/basic_module_test.cmi test/basic_module_test.cmj test/bb.cmi test/bb.cmj test/bdd.cmi test/bdd.cmj test/belt_internal_test.cmi test/belt_internal_test.cmj test/belt_result_alias_test.cmi test/belt_result_alias_test.cmj test/bench.cmi test/bench.cmj test/big_enum.cmi test/big_enum.cmj test/big_polyvar_test.cmi test/big_polyvar_test.cmj test/block_alias_test.cmi test/block_alias_test.cmj test/boolean_test.cmi test/boolean_test.cmj test/bs_MapInt_test.cmi test/bs_MapInt_test.cmj test/bs_abstract_test.cmi test/bs_abstract_test.cmj test/bs_array_test.cmi test/bs_array_test.cmj test/bs_auto_uncurry.cmi test/bs_auto_uncurry.cmj test/bs_auto_uncurry_test.cmi test/bs_auto_uncurry_test.cmj test/bs_float_test.cmi test/bs_float_test.cmj test/bs_hashmap_test.cmi test/bs_hashmap_test.cmj test/bs_hashset_int_test.cmi test/bs_hashset_int_test.cmj test/bs_hashtbl_string_test.cmi test/bs_hashtbl_string_test.cmj test/bs_ignore_effect.cmi test/bs_ignore_effect.cmj test/bs_ignore_test.cmi test/bs_ignore_test.cmj test/bs_int_test.cmi test/bs_int_test.cmj test/bs_list_test.cmi test/bs_list_test.cmj test/bs_map_set_dict_test.cmi test/bs_map_set_dict_test.cmj test/bs_map_test.cmi test/bs_map_test.cmj test/bs_min_max_test.cmi test/bs_min_max_test.cmj test/bs_mutable_set_test.cmi test/bs_mutable_set_test.cmj test/bs_node_string_buffer_test.cmi test/bs_node_string_buffer_test.cmj test/bs_poly_map_test.cmi test/bs_poly_map_test.cmj test/bs_poly_mutable_map_test.cmi test/bs_poly_mutable_map_test.cmj test/bs_poly_mutable_set_test.cmi test/bs_poly_mutable_set_test.cmj test/bs_poly_set_test.cmi test/bs_poly_set_test.cmj test/bs_qualified.cmi test/bs_qualified.cmj test/bs_queue_test.cmi test/bs_queue_test.cmj test/bs_rbset_int_bench.cmi test/bs_rbset_int_bench.cmj test/bs_rest_test.cmi test/bs_rest_test.cmj test/bs_set_bench.cmi test/bs_set_bench.cmj test/bs_set_int_test.cmi test/bs_set_int_test.cmj test/bs_sort_test.cmi test/bs_sort_test.cmj test/bs_splice_partial.cmi test/bs_splice_partial.cmj test/bs_stack_test.cmi test/bs_stack_test.cmj test/bs_string_test.cmi test/bs_string_test.cmj test/bs_unwrap_test.cmi test/bs_unwrap_test.cmj test/buffer_test.cmi test/buffer_test.cmj test/bytes_split_gpr_743_test.cmi test/bytes_split_gpr_743_test.cmj test/caml_compare_test.cmi test/caml_compare_test.cmj test/caml_format_test.cmi test/caml_format_test.cmj test/caml_sys_poly_fill_test.cmi test/caml_sys_poly_fill_test.cmj test/chain_code_test.cmi test/chain_code_test.cmj test/chn_test.cmi test/chn_test.cmj test/class_type_ffi_test.cmi test/class_type_ffi_test.cmj test/coercion_module_alias_test.cmi test/coercion_module_alias_test.cmj test/compare_test.cmi test/compare_test.cmj test/complete_parmatch_test.cmi test/complete_parmatch_test.cmj test/complex_if_test.cmi test/complex_if_test.cmj test/complex_test.cmi test/complex_test.cmj test/complex_while_loop.cmi test/complex_while_loop.cmj test/condition_compilation_test.cmi test/condition_compilation_test.cmj test/config1_test.cmi test/config1_test.cmj test/console_log_test.cmi test/console_log_test.cmj test/const_block_test.cmi test/const_block_test.cmj test/const_defs.cmi test/const_defs.cmj test/const_defs_test.cmi test/const_defs_test.cmj test/const_test.cmi test/const_test.cmj test/cont_int_fold_test.cmi test/cont_int_fold_test.cmj test/cps_test.cmi test/cps_test.cmj test/cross_module_inline_test.cmi test/cross_module_inline_test.cmj test/custom_error_test.cmi test/custom_error_test.cmj test/debug_keep_test.cmi test/debug_keep_test.cmj test/debug_mode_value.cmi test/debug_mode_value.cmj test/debug_tmp.cmi test/debug_tmp.cmj test/debugger_test.cmi test/debugger_test.cmj test/default_export_test.cmi test/default_export_test.cmj test/defunctor_make_test.cmi test/defunctor_make_test.cmj test/demo_int_map.cmi test/demo_int_map.cmj test/demo_page.cmi test/demo_page.cmj test/demo_pipe.cmi test/demo_pipe.cmj test/derive_dyntype.cmi test/derive_dyntype.cmj test/derive_projector_test.cmi test/derive_projector_test.cmj test/derive_type_test.cmi test/derive_type_test.cmj test/digest_test.cmi test/digest_test.cmj test/directives.cmi test/directives.cmj test/div_by_zero_test.cmi test/div_by_zero_test.cmj test/dollar_escape_test.cmi test/dollar_escape_test.cmj test/earger_curry_test.cmi test/earger_curry_test.cmj test/effect.cmi test/effect.cmj test/epsilon_test.cmi test/epsilon_test.cmj test/equal_box_test.cmi test/equal_box_test.cmj test/equal_exception_test.cmi test/equal_exception_test.cmj test/equal_test.cmi test/equal_test.cmj test/es6_export.cmi test/es6_export.cmj test/es6_import.cmi test/es6_import.cmj test/es6_module_test.cmi test/es6_module_test.cmj test/escape_esmodule.cmi test/escape_esmodule.cmj test/esmodule_ref.cmi test/esmodule_ref.cmj test/event_ffi.cmi test/event_ffi.cmj test/exception_alias.cmi test/exception_alias.cmj test/exception_def.cmi test/exception_def.cmj test/exception_raise_test.cmi test/exception_raise_test.cmj test/exception_rebind_test.cmi test/exception_rebind_test.cmj test/exception_rebound_err_test.cmi test/exception_rebound_err_test.cmj test/exception_value_test.cmi test/exception_value_test.cmj test/exn_error_pattern.cmi test/exn_error_pattern.cmj test/exponentiation_precedence_test.cmi test/exponentiation_precedence_test.cmj test/export_keyword.cmi test/export_keyword.cmj test/ext_array_test.cmi test/ext_array_test.cmj test/ext_bytes_test.cmi test/ext_bytes_test.cmj test/ext_filename_test.cmi test/ext_filename_test.cmj test/ext_list_test.cmi test/ext_list_test.cmj test/ext_pervasives_test.cmi test/ext_pervasives_test.cmj test/ext_string_test.cmi test/ext_string_test.cmj test/ext_sys_test.cmi test/ext_sys_test.cmj test/extensible_variant_test.cmi test/extensible_variant_test.cmj test/external_polyfill_test.cmi test/external_polyfill_test.cmj test/external_ppx.cmi test/external_ppx.cmj test/external_ppx2.cmi test/external_ppx2.cmj test/fail_comp.cmi test/fail_comp.cmj test/ffi_arity_test.cmi test/ffi_arity_test.cmj test/ffi_array_test.cmi test/ffi_array_test.cmj test/ffi_js_test.cmi test/ffi_js_test.cmj test/ffi_splice_test.cmi test/ffi_splice_test.cmj test/ffi_test.cmi test/ffi_test.cmj test/fib.cmi test/fib.cmj test/flattern_order_test.cmi test/flattern_order_test.cmj test/flexible_array_test.cmi test/flexible_array_test.cmj test/float_array.cmi test/float_array.cmj test/float_of_bits_test.cmi test/float_of_bits_test.cmj test/float_record.cmi test/float_record.cmj test/float_test.cmi test/float_test.cmj test/floatarray_test.cmi test/floatarray_test.cmj test/flow_parser_reg_test.cmi test/flow_parser_reg_test.cmj test/for_loop_test.cmi test/for_loop_test.cmj test/for_side_effect_test.cmi test/for_side_effect_test.cmj test/format_regression.cmi test/format_regression.cmj test/format_test.cmi test/format_test.cmj test/fs_test.cmi test/fs_test.cmj test/fun_pattern_match.cmi test/fun_pattern_match.cmj test/functor_app_test.cmi test/functor_app_test.cmj test/functor_def.cmi test/functor_def.cmj test/functor_ffi.cmi test/functor_ffi.cmj test/functor_inst.cmi test/functor_inst.cmj test/functors.cmi test/functors.cmj test/gbk.cmi test/gbk.cmj test/genlex_test.cmi test/genlex_test.cmj test/gentTypeReTest.cmi test/gentTypeReTest.cmj test/global_exception_regression_test.cmi test/global_exception_regression_test.cmj test/global_mangles.cmi test/global_mangles.cmj test/global_module_alias_test.cmi test/global_module_alias_test.cmj test/google_closure_test.cmi test/google_closure_test.cmj test/gpr496_test.cmi test/gpr496_test.cmj test/gpr_1072.cmi test/gpr_1072.cmj test/gpr_1072_reg.cmi test/gpr_1072_reg.cmj test/gpr_1150.cmi test/gpr_1150.cmj test/gpr_1154_test.cmi test/gpr_1154_test.cmj test/gpr_1170.cmi test/gpr_1170.cmj test/gpr_1240_missing_unbox.cmi test/gpr_1240_missing_unbox.cmj test/gpr_1245_test.cmi test/gpr_1245_test.cmj test/gpr_1268.cmi test/gpr_1268.cmj test/gpr_1409_test.cmi test/gpr_1409_test.cmj test/gpr_1423_app_test.cmi test/gpr_1423_app_test.cmj test/gpr_1423_nav.cmi test/gpr_1423_nav.cmj test/gpr_1438.cmi test/gpr_1438.cmj test/gpr_1481.cmi test/gpr_1481.cmj test/gpr_1484.cmi test/gpr_1484.cmj test/gpr_1503_test.cmi test/gpr_1503_test.cmj test/gpr_1539_test.cmi test/gpr_1539_test.cmj test/gpr_1658_test.cmi test/gpr_1658_test.cmj test/gpr_1667_test.cmi test/gpr_1667_test.cmj test/gpr_1692_test.cmi test/gpr_1692_test.cmj test/gpr_1698_test.cmi test/gpr_1698_test.cmj test/gpr_1701_test.cmi test/gpr_1701_test.cmj test/gpr_1716_test.cmi test/gpr_1716_test.cmj test/gpr_1717_test.cmi test/gpr_1717_test.cmj test/gpr_1728_test.cmi test/gpr_1728_test.cmj test/gpr_1749_test.cmi test/gpr_1749_test.cmj test/gpr_1759_test.cmi test/gpr_1759_test.cmj test/gpr_1760_test.cmi test/gpr_1760_test.cmj test/gpr_1762_test.cmi test/gpr_1762_test.cmj test/gpr_1817_test.cmi test/gpr_1817_test.cmj test/gpr_1822_test.cmi test/gpr_1822_test.cmj test/gpr_1891_test.cmi test/gpr_1891_test.cmj test/gpr_1943_test.cmi test/gpr_1943_test.cmj test/gpr_1946_test.cmi test/gpr_1946_test.cmj test/gpr_2316_test.cmi test/gpr_2316_test.cmj test/gpr_2352_test.cmi test/gpr_2352_test.cmj test/gpr_2413_test.cmi test/gpr_2413_test.cmj test/gpr_2474.cmi test/gpr_2474.cmj test/gpr_2487.cmi test/gpr_2487.cmj test/gpr_2503_test.cmi test/gpr_2503_test.cmj test/gpr_2608_test.cmi test/gpr_2608_test.cmj test/gpr_2614_test.cmi test/gpr_2614_test.cmj test/gpr_2633_test.cmi test/gpr_2633_test.cmj test/gpr_2642_test.cmi test/gpr_2642_test.cmj test/gpr_2652_test.cmi test/gpr_2652_test.cmj test/gpr_2682_test.cmi test/gpr_2682_test.cmj test/gpr_2700_test.cmi test/gpr_2700_test.cmj test/gpr_2731_test.cmi test/gpr_2731_test.cmj test/gpr_2789_test.cmi test/gpr_2789_test.cmj test/gpr_2931_test.cmi test/gpr_2931_test.cmj test/gpr_3142_test.cmi test/gpr_3142_test.cmj test/gpr_3154_test.cmi test/gpr_3154_test.cmj test/gpr_3209_test.cmi test/gpr_3209_test.cmj test/gpr_3492_test.cmi test/gpr_3492_test.cmj test/gpr_3519_jsx_test.cmi test/gpr_3519_jsx_test.cmj test/gpr_3519_test.cmi test/gpr_3519_test.cmj test/gpr_3536_test.cmi test/gpr_3536_test.cmj test/gpr_3546_test.cmi test/gpr_3546_test.cmj test/gpr_3548_test.cmi test/gpr_3548_test.cmj test/gpr_3549_test.cmi test/gpr_3549_test.cmj test/gpr_3566_drive_test.cmi test/gpr_3566_drive_test.cmj test/gpr_3566_test.cmi test/gpr_3566_test.cmj test/gpr_3595_test.cmi test/gpr_3595_test.cmj test/gpr_3609_test.cmi test/gpr_3609_test.cmj test/gpr_3697_test.cmi test/gpr_3697_test.cmj test/gpr_373_test.cmi test/gpr_373_test.cmj test/gpr_3770_test.cmi test/gpr_3770_test.cmj test/gpr_3852_alias.cmi test/gpr_3852_alias.cmj test/gpr_3852_alias_reify.cmi test/gpr_3852_alias_reify.cmj test/gpr_3852_effect.cmi test/gpr_3852_effect.cmj test/gpr_3865.cmi test/gpr_3865.cmj test/gpr_3865_bar.cmi test/gpr_3865_bar.cmj test/gpr_3865_foo.cmi test/gpr_3865_foo.cmj test/gpr_3875_test.cmi test/gpr_3875_test.cmj test/gpr_3877_test.cmi test/gpr_3877_test.cmj test/gpr_3895_test.cmi test/gpr_3895_test.cmj test/gpr_3897_test.cmi test/gpr_3897_test.cmj test/gpr_3931_test.cmi test/gpr_3931_test.cmj test/gpr_3980_test.cmi test/gpr_3980_test.cmj test/gpr_4025_test.cmi test/gpr_4025_test.cmj test/gpr_405_test.cmi test/gpr_405_test.cmj test/gpr_4069_test.cmi test/gpr_4069_test.cmj test/gpr_4265_test.cmi test/gpr_4265_test.cmj test/gpr_4274_test.cmi test/gpr_4274_test.cmj test/gpr_4280_test.cmi test/gpr_4280_test.cmj test/gpr_4407_test.cmi test/gpr_4407_test.cmj test/gpr_441.cmi test/gpr_441.cmj test/gpr_4442_test.cmi test/gpr_4442_test.cmj test/gpr_4491_test.cmi test/gpr_4491_test.cmj test/gpr_4494_test.cmi test/gpr_4494_test.cmj test/gpr_4519_test.cmi test/gpr_4519_test.cmj test/gpr_459_test.cmi test/gpr_459_test.cmj test/gpr_4632.cmi test/gpr_4632.cmj test/gpr_4639_test.cmi test/gpr_4639_test.cmj test/gpr_4900_test.cmi test/gpr_4900_test.cmj test/gpr_4924_test.cmi test/gpr_4924_test.cmj test/gpr_4931.cmi test/gpr_4931.cmj test/gpr_4931_allow.cmi test/gpr_4931_allow.cmj test/gpr_5071_test.cmi test/gpr_5071_test.cmj test/gpr_5169_test.cmi test/gpr_5169_test.cmj test/gpr_5218_test.cmi test/gpr_5218_test.cmj test/gpr_5280_optimize_test.cmi test/gpr_5280_optimize_test.cmj test/gpr_5312.cmi test/gpr_5312.cmj test/gpr_5557.cmi test/gpr_5557.cmj test/gpr_5753.cmi test/gpr_5753.cmj test/gpr_658.cmi test/gpr_658.cmj test/gpr_858_test.cmi test/gpr_858_test.cmj test/gpr_858_unit2_test.cmi test/gpr_858_unit2_test.cmj test/gpr_904_test.cmi test/gpr_904_test.cmj test/gpr_974_test.cmi test/gpr_974_test.cmj test/gpr_977_test.cmi test/gpr_977_test.cmj test/gpr_return_type_unused_attribute.cmi test/gpr_return_type_unused_attribute.cmj test/gray_code_test.cmi test/gray_code_test.cmj test/guide_for_ext.cmi test/guide_for_ext.cmj test/hamming_test.cmi test/hamming_test.cmj test/hash_collision_test.cmi test/hash_collision_test.cmj test/hash_sugar_desugar.cmi test/hash_sugar_desugar.cmj test/hash_test.cmi test/hash_test.cmj test/hashtbl_test.cmi test/hashtbl_test.cmj test/hello.foo.cmi test/hello.foo.cmj test/hello_res.cmi test/hello_res.cmj test/ignore_test.cmi test/ignore_test.cmj test/imm_map_bench.cmi test/imm_map_bench.cmj test/include_side_effect.cmi test/include_side_effect.cmj test/include_side_effect_free.cmi test/include_side_effect_free.cmj test/incomplete_toplevel_test.cmi test/incomplete_toplevel_test.cmj test/infer_type_test.cmi test/infer_type_test.cmj test/inline_const.cmi test/inline_const.cmj test/inline_const_test.cmi test/inline_const_test.cmj test/inline_edge_cases.cmi test/inline_edge_cases.cmj test/inline_map2_test.cmi test/inline_map2_test.cmj test/inline_map_demo.cmi test/inline_map_demo.cmj test/inline_map_test.cmi test/inline_map_test.cmj test/inline_record_test.cmi test/inline_record_test.cmj test/inline_regression_test.cmi test/inline_regression_test.cmj test/inline_string_test.cmi test/inline_string_test.cmj test/inner_call.cmi test/inner_call.cmj test/inner_define.cmi test/inner_define.cmj test/inner_unused.cmi test/inner_unused.cmj test/installation_test.cmi test/installation_test.cmj test/int32_test.cmi test/int32_test.cmj test/int64_mul_div_test.cmi test/int64_mul_div_test.cmj test/int64_string_bench.cmi test/int64_string_bench.cmj test/int64_string_test.cmi test/int64_string_test.cmj test/int64_test.cmi test/int64_test.cmj test/int_hashtbl_test.cmi test/int_hashtbl_test.cmj test/int_map.cmi test/int_map.cmj test/int_overflow_test.cmi test/int_overflow_test.cmj test/int_poly_var.cmi test/int_poly_var.cmj test/int_switch_test.cmi test/int_switch_test.cmj test/internal_unused_test.cmi test/internal_unused_test.cmj test/io_test.cmi test/io_test.cmj test/js_array_test.cmi test/js_array_test.cmj test/js_bool_test.cmi test/js_bool_test.cmj test/js_cast_test.cmi test/js_cast_test.cmj test/js_date_test.cmi test/js_date_test.cmj test/js_dict_test.cmi test/js_dict_test.cmj test/js_exception_catch_test.cmi test/js_exception_catch_test.cmj test/js_float_test.cmi test/js_float_test.cmj test/js_global_test.cmi test/js_global_test.cmj test/js_int_test.cmi test/js_int_test.cmj test/js_json_test.cmi test/js_json_test.cmj test/js_list_test.cmi test/js_list_test.cmj test/js_math_test.cmi test/js_math_test.cmj test/js_null_test.cmi test/js_null_test.cmj test/js_null_undefined_test.cmi test/js_null_undefined_test.cmj test/js_nullable_test.cmi test/js_nullable_test.cmj test/js_obj_test.cmi test/js_obj_test.cmj test/js_option_test.cmi test/js_option_test.cmj test/js_promise_basic_test.cmi test/js_promise_basic_test.cmj test/js_re_test.cmi test/js_re_test.cmj test/js_string_test.cmi test/js_string_test.cmj test/js_typed_array_test.cmi test/js_typed_array_test.cmj test/js_undefined_test.cmi test/js_undefined_test.cmj test/js_val.cmi test/js_val.cmj test/jsoo_400_test.cmi test/jsoo_400_test.cmj test/jsoo_485_test.cmi test/jsoo_485_test.cmj test/jsxv4_newtype.cmi test/jsxv4_newtype.cmj test/key_word_property.cmi test/key_word_property.cmj test/key_word_property2.cmi test/key_word_property2.cmj test/key_word_property_plus_test.cmi test/key_word_property_plus_test.cmj test/label_uncurry.cmi test/label_uncurry.cmj test/large_integer_pat.cmi test/large_integer_pat.cmj test/large_record_duplication_test.cmi test/large_record_duplication_test.cmj test/largest_int_flow.cmi test/largest_int_flow.cmj test/lazy_demo.cmi test/lazy_demo.cmj test/lazy_test.cmi test/lazy_test.cmj test/lexer_test.cmi test/lexer_test.cmj test/lib_js_test.cmi test/lib_js_test.cmj test/libarg_test.cmi test/libarg_test.cmj test/libqueue_test.cmi test/libqueue_test.cmj test/limits_test.cmi test/limits_test.cmj test/list_stack.cmi test/list_stack.cmj test/list_test.cmi test/list_test.cmj test/local_exception_test.cmi test/local_exception_test.cmj test/loop_regression_test.cmi test/loop_regression_test.cmj test/loop_suites_test.cmi test/loop_suites_test.cmj test/map_find_test.cmi test/map_find_test.cmj test/map_test.cmi test/map_test.cmj test/mario_game.cmi test/mario_game.cmj test/marshal.cmi test/marshal.cmj test/meth_annotation.cmi test/meth_annotation.cmj test/method_name_test.cmi test/method_name_test.cmj test/method_string_name.cmi test/method_string_name.cmj test/minimal_test.cmi test/minimal_test.cmj test/miss_colon_test.cmi test/miss_colon_test.cmj test/mock_mt.cmi test/mock_mt.cmj test/module_alias_test.cmi test/module_alias_test.cmj test/module_as_class_ffi.cmi test/module_as_class_ffi.cmj test/module_as_function.cmi test/module_as_function.cmj test/module_missing_conversion.cmi test/module_missing_conversion.cmj test/module_parameter_test.cmi test/module_parameter_test.cmj test/module_splice_test.cmi test/module_splice_test.cmj test/more_poly_variant_test.cmi test/more_poly_variant_test.cmj test/more_uncurry.cmi test/more_uncurry.cmj test/mpr_6033_test.cmi test/mpr_6033_test.cmj test/mt.cmi test/mt.cmj test/mt_global.cmi test/mt_global.cmj test/mutable_obj_test.cmi test/mutable_obj_test.cmj test/mutable_uncurry_test.cmi test/mutable_uncurry_test.cmj test/mutual_non_recursive_type.cmi test/mutual_non_recursive_type.cmj test/name_mangle_test.cmi test/name_mangle_test.cmj test/nested_include.cmi test/nested_include.cmj test/nested_module_alias.cmi test/nested_module_alias.cmj test/nested_obj_literal.cmi test/nested_obj_literal.cmj test/nested_obj_test.cmi test/nested_obj_test.cmj test/nested_pattern_match_test.cmi test/nested_pattern_match_test.cmj test/noassert.cmi test/noassert.cmj test/node_fs_test.cmi test/node_fs_test.cmj test/node_path_test.cmi test/node_path_test.cmj test/null_list_test.cmi test/null_list_test.cmj test/number_lexer.cmi test/number_lexer.cmj test/obj_literal_ppx.cmi test/obj_literal_ppx.cmj test/obj_literal_ppx_test.cmi test/obj_literal_ppx_test.cmj test/obj_magic_test.cmi test/obj_magic_test.cmj test/obj_type_test.cmi test/obj_type_test.cmj test/ocaml_re_test.cmi test/ocaml_re_test.cmj test/of_string_test.cmi test/of_string_test.cmj test/offset.cmi test/offset.cmj test/option_encoding_test.cmi test/option_encoding_test.cmj test/option_record_none_test.cmi test/option_record_none_test.cmj test/option_repr_test.cmi test/option_repr_test.cmj test/optional_ffi_test.cmi test/optional_ffi_test.cmj test/optional_regression_test.cmi test/optional_regression_test.cmj test/pipe_send_readline.cmi test/pipe_send_readline.cmj test/pipe_syntax.cmi test/pipe_syntax.cmj test/poly_empty_array.cmi test/poly_empty_array.cmj test/poly_variant_test.cmi test/poly_variant_test.cmj test/polymorphic_raw_test.cmi test/polymorphic_raw_test.cmj test/polymorphism_test.cmi test/polymorphism_test.cmj test/polyvar_convert.cmi test/polyvar_convert.cmj test/polyvar_test.cmi test/polyvar_test.cmj test/ppx_apply_test.cmi test/ppx_apply_test.cmj test/pq_test.cmi test/pq_test.cmj test/pr6726.cmi test/pr6726.cmj test/pr_regression_test.cmi test/pr_regression_test.cmj test/prepend_data_ffi.cmi test/prepend_data_ffi.cmj test/primitive_reg_test.cmi test/primitive_reg_test.cmj test/print_alpha_test.cmi test/print_alpha_test.cmj test/promise_catch_test.cmi test/promise_catch_test.cmj test/queue_402.cmi test/queue_402.cmj test/queue_test.cmi test/queue_test.cmj test/random_test.cmi test/random_test.cmj test/raw_hash_tbl_bench.cmi test/raw_hash_tbl_bench.cmj test/raw_output_test.cmi test/raw_output_test.cmj test/raw_pure_test.cmi test/raw_pure_test.cmj test/rbset.cmi test/rbset.cmj test/react.cmi test/react.cmj test/reactDOMRe.cmi test/reactDOMRe.cmj test/reactDOMServerRe.cmi test/reactDOMServerRe.cmj test/reactEvent.cmi test/reactEvent.cmj test/reactTestUtils.cmi test/reactTestUtils.cmj test/reasonReact.cmi test/reasonReact.cmj test/reasonReactCompat.cmi test/reasonReactCompat.cmj test/reasonReactOptimizedCreateClass.cmi test/reasonReactOptimizedCreateClass.cmj test/reasonReactRouter.cmi test/reasonReactRouter.cmj test/rebind_module.cmi test/rebind_module.cmj test/rebind_module_test.cmi test/rebind_module_test.cmj test/rec_array_test.cmi test/rec_array_test.cmj test/rec_fun_test.cmi test/rec_fun_test.cmj test/rec_module_opt.cmi test/rec_module_opt.cmj test/rec_module_test.cmi test/rec_module_test.cmj test/rec_value_test.cmi test/rec_value_test.cmj test/record_debug_test.cmi test/record_debug_test.cmj test/record_extension_test.cmi test/record_extension_test.cmj test/record_name_test.cmi test/record_name_test.cmj test/record_regression.cmi test/record_regression.cmj test/record_with_test.cmi test/record_with_test.cmj test/recursive_module.cmi test/recursive_module.cmj test/recursive_module_test.cmi test/recursive_module_test.cmj test/recursive_react_component.cmi test/recursive_react_component.cmj test/recursive_records_test.cmi test/recursive_records_test.cmj test/recursive_unbound_module_test.cmi test/recursive_unbound_module_test.cmj test/regression_print.cmi test/regression_print.cmj test/relative_path.cmi test/relative_path.cmj test/res_debug.cmi test/res_debug.cmj test/return_check.cmi test/return_check.cmj test/runtime_encoding_test.cmi test/runtime_encoding_test.cmj test/set_annotation.cmi test/set_annotation.cmj test/set_gen.cmi test/set_gen.cmj test/sexp.cmi test/sexp.cmj test/sexpm.cmi test/sexpm.cmj test/sexpm_test.cmi test/sexpm_test.cmj test/side_effect.cmi test/side_effect.cmj test/side_effect_free.cmi test/side_effect_free.cmj test/simple_derive_test.cmi test/simple_derive_test.cmj test/simple_derive_use.cmi test/simple_derive_use.cmj test/simple_lexer_test.cmi test/simple_lexer_test.cmj test/simplify_lambda_632o.cmi test/simplify_lambda_632o.cmj test/single_module_alias.cmi test/single_module_alias.cmj test/singular_unit_test.cmi test/singular_unit_test.cmj test/small_inline_test.cmi test/small_inline_test.cmj test/splice_test.cmi test/splice_test.cmj test/stack_comp_test.cmi test/stack_comp_test.cmj test/stack_test.cmi test/stack_test.cmj test/stream_parser_test.cmi test/stream_parser_test.cmj test/string_bound_get_test.cmi test/string_bound_get_test.cmj test/string_constant_compare.cmi test/string_constant_compare.cmj test/string_get_set_test.cmi test/string_get_set_test.cmj test/string_literal_print_test.cmi test/string_literal_print_test.cmj test/string_runtime_test.cmi test/string_runtime_test.cmj test/string_set.cmi test/string_set.cmj test/string_set_test.cmi test/string_set_test.cmj test/string_test.cmi test/string_test.cmj test/string_unicode_test.cmi test/string_unicode_test.cmj test/stringmatch_test.cmi test/stringmatch_test.cmj test/submodule.cmi test/submodule.cmj test/submodule_call.cmi test/submodule_call.cmj test/switch_case_test.cmi test/switch_case_test.cmj test/switch_string.cmi test/switch_string.cmj test/tailcall_inline_test.cmi test/tailcall_inline_test.cmj test/template.cmi test/template.cmj test/test.cmi test/test.cmj test/test2.cmi test/test2.cmj test/test_alias.cmi test/test_alias.cmj test/test_ari.cmi test/test_ari.cmj test/test_array.cmi test/test_array.cmj test/test_array_append.cmi test/test_array_append.cmj test/test_array_primitive.cmi test/test_array_primitive.cmj test/test_bool_equal.cmi test/test_bool_equal.cmj test/test_bs_this.cmi test/test_bs_this.cmj test/test_bug.cmi test/test_bug.cmj test/test_bytes.cmi test/test_bytes.cmj test/test_case_opt_collision.cmi test/test_case_opt_collision.cmj test/test_case_set.cmi test/test_case_set.cmj test/test_char.cmi test/test_char.cmj test/test_closure.cmi test/test_closure.cmj test/test_common.cmi test/test_common.cmj test/test_const_elim.cmi test/test_const_elim.cmj test/test_const_propogate.cmi test/test_const_propogate.cmj test/test_cpp.cmi test/test_cpp.cmj test/test_cps.cmi test/test_cps.cmj test/test_demo.cmi test/test_demo.cmj test/test_dup_param.cmi test/test_dup_param.cmj test/test_eq.cmi test/test_eq.cmj test/test_exception.cmi test/test_exception.cmj test/test_exception_escape.cmi test/test_exception_escape.cmj test/test_export2.cmi test/test_export2.cmj test/test_external.cmi test/test_external.cmj test/test_external_unit.cmi test/test_external_unit.cmj test/test_ffi.cmi test/test_ffi.cmj test/test_fib.cmi test/test_fib.cmj test/test_filename.cmi test/test_filename.cmj test/test_for_loop.cmi test/test_for_loop.cmj test/test_for_map.cmi test/test_for_map.cmj test/test_for_map2.cmi test/test_for_map2.cmj test/test_format.cmi test/test_format.cmj test/test_formatter.cmi test/test_formatter.cmj test/test_functor_dead_code.cmi test/test_functor_dead_code.cmj test/test_generative_module.cmi test/test_generative_module.cmj test/test_global_print.cmi test/test_global_print.cmj test/test_google_closure.cmi test/test_google_closure.cmj test/test_include.cmi test/test_include.cmj test/test_incomplete.cmi test/test_incomplete.cmj test/test_incr_ref.cmi test/test_incr_ref.cmj test/test_int_map_find.cmi test/test_int_map_find.cmj test/test_internalOO.cmi test/test_internalOO.cmj test/test_is_js.cmi test/test_is_js.cmj test/test_js_ffi.cmi test/test_js_ffi.cmj test/test_let.cmi test/test_let.cmj test/test_list.cmi test/test_list.cmj test/test_literal.cmi test/test_literal.cmj test/test_literals.cmi test/test_literals.cmj test/test_match_exception.cmi test/test_match_exception.cmj test/test_mutliple.cmi test/test_mutliple.cmj test/test_nat64.cmi test/test_nat64.cmj test/test_nested_let.cmi test/test_nested_let.cmj test/test_nested_print.cmi test/test_nested_print.cmj test/test_non_export.cmi test/test_non_export.cmj test/test_nullary.cmi test/test_nullary.cmj test/test_obj.cmi test/test_obj.cmj test/test_obj_simple_ffi.cmi test/test_obj_simple_ffi.cmj test/test_order.cmi test/test_order.cmj test/test_order_tailcall.cmi test/test_order_tailcall.cmj test/test_other_exn.cmi test/test_other_exn.cmj test/test_pack.cmi test/test_pack.cmj test/test_per.cmi test/test_per.cmj test/test_pervasive.cmi test/test_pervasive.cmj test/test_pervasives2.cmi test/test_pervasives2.cmj test/test_pervasives3.cmi test/test_pervasives3.cmj test/test_primitive.cmi test/test_primitive.cmj test/test_ramification.cmi test/test_ramification.cmj test/test_react.cmi test/test_react.cmj test/test_react_case.cmi test/test_react_case.cmj test/test_regex.cmi test/test_regex.cmj test/test_require.cmi test/test_require.cmj test/test_runtime_encoding.cmi test/test_runtime_encoding.cmj test/test_scope.cmi test/test_scope.cmj test/test_seq.cmi test/test_seq.cmj test/test_set.cmi test/test_set.cmj test/test_side_effect_functor.cmi test/test_side_effect_functor.cmj test/test_simple_include.cmi test/test_simple_include.cmj test/test_simple_pattern_match.cmi test/test_simple_pattern_match.cmj test/test_simple_ref.cmi test/test_simple_ref.cmj test/test_simple_tailcall.cmi test/test_simple_tailcall.cmj test/test_small.cmi test/test_small.cmj test/test_sprintf.cmi test/test_sprintf.cmj test/test_stack.cmi test/test_stack.cmj test/test_static_catch_ident.cmi test/test_static_catch_ident.cmj test/test_string.cmi test/test_string.cmj test/test_string_case.cmi test/test_string_case.cmj test/test_string_const.cmi test/test_string_const.cmj test/test_string_map.cmi test/test_string_map.cmj test/test_string_switch.cmi test/test_string_switch.cmj test/test_switch.cmi test/test_switch.cmj test/test_trywith.cmi test/test_trywith.cmj test/test_tuple.cmi test/test_tuple.cmj test/test_tuple_destructring.cmi test/test_tuple_destructring.cmj test/test_type_based_arity.cmi test/test_type_based_arity.cmj test/test_u.cmi test/test_u.cmj test/test_unknown.cmi test/test_unknown.cmj test/test_unsafe_cmp.cmi test/test_unsafe_cmp.cmj test/test_unsafe_obj_ffi.cmi test/test_unsafe_obj_ffi.cmj test/test_unsafe_obj_ffi_ppx.cmi test/test_unsafe_obj_ffi_ppx.cmj test/test_unsupported_primitive.cmi test/test_unsupported_primitive.cmj test/test_while_closure.cmi test/test_while_closure.cmj test/test_while_side_effect.cmi test/test_while_side_effect.cmj test/test_zero_nullable.cmi test/test_zero_nullable.cmj test/then_mangle_test.cmi test/then_mangle_test.cmj test/ticker.cmi test/ticker.cmj test/to_string_test.cmi test/to_string_test.cmj test/topsort_test.cmi test/topsort_test.cmj test/tramp_fib.cmi test/tramp_fib.cmj test/tuple_alloc.cmi test/tuple_alloc.cmj test/type_disambiguate.cmi test/type_disambiguate.cmj test/typeof_test.cmi test/typeof_test.cmj test/ui_defs.cmi test/unboxed_attribute.cmi test/unboxed_attribute.cmj test/unboxed_attribute_test.cmi test/unboxed_attribute_test.cmj test/unboxed_crash.cmi test/unboxed_crash.cmj test/unboxed_use_case.cmi test/unboxed_use_case.cmj test/uncurried_cast.cmi test/uncurried_cast.cmj test/uncurried_default.args.cmi test/uncurried_default.args.cmj test/uncurried_pipe.cmi test/uncurried_pipe.cmj test/uncurry_external_test.cmi test/uncurry_external_test.cmj test/uncurry_glob_test.cmi test/uncurry_glob_test.cmj test/uncurry_test.cmi test/uncurry_test.cmj test/undef_regression2_test.cmi test/undef_regression2_test.cmj test/undef_regression_test.cmi test/undef_regression_test.cmj test/undefine_conditional.cmi test/undefine_conditional.cmj test/unicode_type_error.cmi test/unicode_type_error.cmj test/unit_undefined_test.cmi test/unit_undefined_test.cmj test/unitest_string.cmi test/unitest_string.cmj test/unsafe_full_apply_primitive.cmi test/unsafe_full_apply_primitive.cmj test/unsafe_ppx_test.cmi test/unsafe_ppx_test.cmj test/unsafe_this.cmi test/unsafe_this.cmj test/update_record_test.cmi test/update_record_test.cmj test/utf8_decode_test.cmi test/utf8_decode_test.cmj test/variant.cmi test/variant.cmj test/watch_test.cmi test/watch_test.cmj test/webpack_config.cmi test/webpack_config.cmj +o test : phony test/406_primitive_test.cmi test/406_primitive_test.cmj test/EmptyRecord.cmi test/EmptyRecord.cmj test/SafePromises.cmi test/SafePromises.cmj test/UncurriedAlways.cmi test/UncurriedAlways.cmj test/UncurriedExternals.cmi test/UncurriedExternals.cmj test/UncurriedPervasives.cmi test/UncurriedPervasives.cmj test/a.cmi test/a.cmj test/a_filename_test.cmi test/a_filename_test.cmj test/a_list_test.cmi test/a_list_test.cmj test/a_recursive_type.cmi test/a_recursive_type.cmj test/a_scope_bug.cmi test/a_scope_bug.cmj test/a_string_test.cmi test/a_string_test.cmj test/abstract_type.cmi test/abstract_type.cmj test/adt_optimize_test.cmi test/adt_optimize_test.cmj test/alias_default_value_test.cmi test/alias_default_value_test.cmj test/alias_test.cmi test/alias_test.cmj test/and_or_tailcall_test.cmi test/and_or_tailcall_test.cmj test/app_root_finder.cmi test/app_root_finder.cmj test/argv_test.cmi test/argv_test.cmj test/ari_regress_test.cmi test/ari_regress_test.cmj test/arith_lexer.cmi test/arith_lexer.cmj test/arith_parser.cmi test/arith_parser.cmj test/arith_syntax.cmi test/arith_syntax.cmj test/arity.cmi test/arity.cmj test/arity_deopt.cmi test/arity_deopt.cmj test/arity_infer.cmi test/arity_infer.cmj test/array_data_util.cmi test/array_data_util.cmj test/array_safe_get.cmi test/array_safe_get.cmj test/array_subtle_test.cmi test/array_subtle_test.cmj test/array_test.cmi test/array_test.cmj test/ast_abstract_test.cmi test/ast_abstract_test.cmj test/ast_js_mapper_poly_test.cmi test/ast_js_mapper_poly_test.cmj test/ast_js_mapper_test.cmi test/ast_js_mapper_test.cmj test/ast_mapper_defensive_test.cmi test/ast_mapper_defensive_test.cmj test/ast_mapper_unused_warning_test.cmi test/ast_mapper_unused_warning_test.cmj test/async_await.cmi test/async_await.cmj test/async_ideas.cmi test/async_ideas.cmj test/async_inline.cmi test/async_inline.cmj test/attr_test.cmi test/attr_test.cmj test/b.cmi test/b.cmj test/bal_set_mini.cmi test/bal_set_mini.cmj test/bang_primitive.cmi test/bang_primitive.cmj test/basic_module_test.cmi test/basic_module_test.cmj test/bb.cmi test/bb.cmj test/bdd.cmi test/bdd.cmj test/belt_internal_test.cmi test/belt_internal_test.cmj test/belt_result_alias_test.cmi test/belt_result_alias_test.cmj test/bench.cmi test/bench.cmj test/big_enum.cmi test/big_enum.cmj test/big_polyvar_test.cmi test/big_polyvar_test.cmj test/block_alias_test.cmi test/block_alias_test.cmj test/boolean_test.cmi test/boolean_test.cmj test/bs_MapInt_test.cmi test/bs_MapInt_test.cmj test/bs_abstract_test.cmi test/bs_abstract_test.cmj test/bs_array_test.cmi test/bs_array_test.cmj test/bs_auto_uncurry.cmi test/bs_auto_uncurry.cmj test/bs_auto_uncurry_test.cmi test/bs_auto_uncurry_test.cmj test/bs_float_test.cmi test/bs_float_test.cmj test/bs_hashmap_test.cmi test/bs_hashmap_test.cmj test/bs_hashset_int_test.cmi test/bs_hashset_int_test.cmj test/bs_hashtbl_string_test.cmi test/bs_hashtbl_string_test.cmj test/bs_ignore_effect.cmi test/bs_ignore_effect.cmj test/bs_ignore_test.cmi test/bs_ignore_test.cmj test/bs_int_test.cmi test/bs_int_test.cmj test/bs_list_test.cmi test/bs_list_test.cmj test/bs_map_set_dict_test.cmi test/bs_map_set_dict_test.cmj test/bs_map_test.cmi test/bs_map_test.cmj test/bs_min_max_test.cmi test/bs_min_max_test.cmj test/bs_mutable_set_test.cmi test/bs_mutable_set_test.cmj test/bs_node_string_buffer_test.cmi test/bs_node_string_buffer_test.cmj test/bs_poly_map_test.cmi test/bs_poly_map_test.cmj test/bs_poly_mutable_map_test.cmi test/bs_poly_mutable_map_test.cmj test/bs_poly_mutable_set_test.cmi test/bs_poly_mutable_set_test.cmj test/bs_poly_set_test.cmi test/bs_poly_set_test.cmj test/bs_qualified.cmi test/bs_qualified.cmj test/bs_queue_test.cmi test/bs_queue_test.cmj test/bs_rbset_int_bench.cmi test/bs_rbset_int_bench.cmj test/bs_rest_test.cmi test/bs_rest_test.cmj test/bs_set_bench.cmi test/bs_set_bench.cmj test/bs_set_int_test.cmi test/bs_set_int_test.cmj test/bs_sort_test.cmi test/bs_sort_test.cmj test/bs_splice_partial.cmi test/bs_splice_partial.cmj test/bs_stack_test.cmi test/bs_stack_test.cmj test/bs_string_test.cmi test/bs_string_test.cmj test/bs_unwrap_test.cmi test/bs_unwrap_test.cmj test/buffer_test.cmi test/buffer_test.cmj test/bytes_split_gpr_743_test.cmi test/bytes_split_gpr_743_test.cmj test/caml_compare_test.cmi test/caml_compare_test.cmj test/caml_format_test.cmi test/caml_format_test.cmj test/caml_sys_poly_fill_test.cmi test/caml_sys_poly_fill_test.cmj test/chain_code_test.cmi test/chain_code_test.cmj test/chn_test.cmi test/chn_test.cmj test/class_type_ffi_test.cmi test/class_type_ffi_test.cmj test/coercion_module_alias_test.cmi test/coercion_module_alias_test.cmj test/compare_test.cmi test/compare_test.cmj test/complete_parmatch_test.cmi test/complete_parmatch_test.cmj test/complex_if_test.cmi test/complex_if_test.cmj test/complex_test.cmi test/complex_test.cmj test/complex_while_loop.cmi test/complex_while_loop.cmj test/condition_compilation_test.cmi test/condition_compilation_test.cmj test/config1_test.cmi test/config1_test.cmj test/console_log_test.cmi test/console_log_test.cmj test/const_block_test.cmi test/const_block_test.cmj test/const_defs.cmi test/const_defs.cmj test/const_defs_test.cmi test/const_defs_test.cmj test/const_test.cmi test/const_test.cmj test/cont_int_fold_test.cmi test/cont_int_fold_test.cmj test/cps_test.cmi test/cps_test.cmj test/cross_module_inline_test.cmi test/cross_module_inline_test.cmj test/custom_error_test.cmi test/custom_error_test.cmj test/debug_keep_test.cmi test/debug_keep_test.cmj test/debug_mode_value.cmi test/debug_mode_value.cmj test/debug_tmp.cmi test/debug_tmp.cmj test/debugger_test.cmi test/debugger_test.cmj test/default_export_test.cmi test/default_export_test.cmj test/defunctor_make_test.cmi test/defunctor_make_test.cmj test/demo_int_map.cmi test/demo_int_map.cmj test/demo_page.cmi test/demo_page.cmj test/demo_pipe.cmi test/demo_pipe.cmj test/derive_dyntype.cmi test/derive_dyntype.cmj test/derive_projector_test.cmi test/derive_projector_test.cmj test/derive_type_test.cmi test/derive_type_test.cmj test/digest_test.cmi test/digest_test.cmj test/directives.cmi test/directives.cmj test/div_by_zero_test.cmi test/div_by_zero_test.cmj test/dollar_escape_test.cmi test/dollar_escape_test.cmj test/earger_curry_test.cmi test/earger_curry_test.cmj test/effect.cmi test/effect.cmj test/epsilon_test.cmi test/epsilon_test.cmj test/equal_box_test.cmi test/equal_box_test.cmj test/equal_exception_test.cmi test/equal_exception_test.cmj test/equal_test.cmi test/equal_test.cmj test/es6_export.cmi test/es6_export.cmj test/es6_import.cmi test/es6_import.cmj test/es6_module_test.cmi test/es6_module_test.cmj test/escape_esmodule.cmi test/escape_esmodule.cmj test/esmodule_ref.cmi test/esmodule_ref.cmj test/event_ffi.cmi test/event_ffi.cmj test/exception_alias.cmi test/exception_alias.cmj test/exception_def.cmi test/exception_def.cmj test/exception_raise_test.cmi test/exception_raise_test.cmj test/exception_rebind_test.cmi test/exception_rebind_test.cmj test/exception_rebound_err_test.cmi test/exception_rebound_err_test.cmj test/exception_value_test.cmi test/exception_value_test.cmj test/exn_error_pattern.cmi test/exn_error_pattern.cmj test/exponentiation_precedence_test.cmi test/exponentiation_precedence_test.cmj test/export_keyword.cmi test/export_keyword.cmj test/ext_array_test.cmi test/ext_array_test.cmj test/ext_bytes_test.cmi test/ext_bytes_test.cmj test/ext_filename_test.cmi test/ext_filename_test.cmj test/ext_list_test.cmi test/ext_list_test.cmj test/ext_pervasives_test.cmi test/ext_pervasives_test.cmj test/ext_string_test.cmi test/ext_string_test.cmj test/ext_sys_test.cmi test/ext_sys_test.cmj test/extensible_variant_test.cmi test/extensible_variant_test.cmj test/external_polyfill_test.cmi test/external_polyfill_test.cmj test/external_ppx.cmi test/external_ppx.cmj test/external_ppx2.cmi test/external_ppx2.cmj test/fail_comp.cmi test/fail_comp.cmj test/ffi_arity_test.cmi test/ffi_arity_test.cmj test/ffi_array_test.cmi test/ffi_array_test.cmj test/ffi_js_test.cmi test/ffi_js_test.cmj test/ffi_splice_test.cmi test/ffi_splice_test.cmj test/ffi_test.cmi test/ffi_test.cmj test/fib.cmi test/fib.cmj test/flattern_order_test.cmi test/flattern_order_test.cmj test/flexible_array_test.cmi test/flexible_array_test.cmj test/float_array.cmi test/float_array.cmj test/float_of_bits_test.cmi test/float_of_bits_test.cmj test/float_record.cmi test/float_record.cmj test/float_test.cmi test/float_test.cmj test/floatarray_test.cmi test/floatarray_test.cmj test/flow_parser_reg_test.cmi test/flow_parser_reg_test.cmj test/for_loop_test.cmi test/for_loop_test.cmj test/for_side_effect_test.cmi test/for_side_effect_test.cmj test/format_regression.cmi test/format_regression.cmj test/format_test.cmi test/format_test.cmj test/fs_test.cmi test/fs_test.cmj test/fun_pattern_match.cmi test/fun_pattern_match.cmj test/functor_app_test.cmi test/functor_app_test.cmj test/functor_def.cmi test/functor_def.cmj test/functor_ffi.cmi test/functor_ffi.cmj test/functor_inst.cmi test/functor_inst.cmj test/functors.cmi test/functors.cmj test/gbk.cmi test/gbk.cmj test/genlex_test.cmi test/genlex_test.cmj test/gentTypeReTest.cmi test/gentTypeReTest.cmj test/global_exception_regression_test.cmi test/global_exception_regression_test.cmj test/global_mangles.cmi test/global_mangles.cmj test/global_module_alias_test.cmi test/global_module_alias_test.cmj test/google_closure_test.cmi test/google_closure_test.cmj test/gpr496_test.cmi test/gpr496_test.cmj test/gpr_1072.cmi test/gpr_1072.cmj test/gpr_1072_reg.cmi test/gpr_1072_reg.cmj test/gpr_1150.cmi test/gpr_1150.cmj test/gpr_1154_test.cmi test/gpr_1154_test.cmj test/gpr_1170.cmi test/gpr_1170.cmj test/gpr_1240_missing_unbox.cmi test/gpr_1240_missing_unbox.cmj test/gpr_1245_test.cmi test/gpr_1245_test.cmj test/gpr_1268.cmi test/gpr_1268.cmj test/gpr_1409_test.cmi test/gpr_1409_test.cmj test/gpr_1423_app_test.cmi test/gpr_1423_app_test.cmj test/gpr_1423_nav.cmi test/gpr_1423_nav.cmj test/gpr_1438.cmi test/gpr_1438.cmj test/gpr_1481.cmi test/gpr_1481.cmj test/gpr_1484.cmi test/gpr_1484.cmj test/gpr_1503_test.cmi test/gpr_1503_test.cmj test/gpr_1539_test.cmi test/gpr_1539_test.cmj test/gpr_1658_test.cmi test/gpr_1658_test.cmj test/gpr_1667_test.cmi test/gpr_1667_test.cmj test/gpr_1692_test.cmi test/gpr_1692_test.cmj test/gpr_1698_test.cmi test/gpr_1698_test.cmj test/gpr_1701_test.cmi test/gpr_1701_test.cmj test/gpr_1716_test.cmi test/gpr_1716_test.cmj test/gpr_1717_test.cmi test/gpr_1717_test.cmj test/gpr_1728_test.cmi test/gpr_1728_test.cmj test/gpr_1749_test.cmi test/gpr_1749_test.cmj test/gpr_1759_test.cmi test/gpr_1759_test.cmj test/gpr_1760_test.cmi test/gpr_1760_test.cmj test/gpr_1762_test.cmi test/gpr_1762_test.cmj test/gpr_1817_test.cmi test/gpr_1817_test.cmj test/gpr_1822_test.cmi test/gpr_1822_test.cmj test/gpr_1891_test.cmi test/gpr_1891_test.cmj test/gpr_1943_test.cmi test/gpr_1943_test.cmj test/gpr_1946_test.cmi test/gpr_1946_test.cmj test/gpr_2316_test.cmi test/gpr_2316_test.cmj test/gpr_2352_test.cmi test/gpr_2352_test.cmj test/gpr_2413_test.cmi test/gpr_2413_test.cmj test/gpr_2474.cmi test/gpr_2474.cmj test/gpr_2487.cmi test/gpr_2487.cmj test/gpr_2503_test.cmi test/gpr_2503_test.cmj test/gpr_2608_test.cmi test/gpr_2608_test.cmj test/gpr_2614_test.cmi test/gpr_2614_test.cmj test/gpr_2633_test.cmi test/gpr_2633_test.cmj test/gpr_2642_test.cmi test/gpr_2642_test.cmj test/gpr_2652_test.cmi test/gpr_2652_test.cmj test/gpr_2682_test.cmi test/gpr_2682_test.cmj test/gpr_2700_test.cmi test/gpr_2700_test.cmj test/gpr_2731_test.cmi test/gpr_2731_test.cmj test/gpr_2789_test.cmi test/gpr_2789_test.cmj test/gpr_2931_test.cmi test/gpr_2931_test.cmj test/gpr_3142_test.cmi test/gpr_3142_test.cmj test/gpr_3154_test.cmi test/gpr_3154_test.cmj test/gpr_3209_test.cmi test/gpr_3209_test.cmj test/gpr_3492_test.cmi test/gpr_3492_test.cmj test/gpr_3519_jsx_test.cmi test/gpr_3519_jsx_test.cmj test/gpr_3519_test.cmi test/gpr_3519_test.cmj test/gpr_3536_test.cmi test/gpr_3536_test.cmj test/gpr_3546_test.cmi test/gpr_3546_test.cmj test/gpr_3548_test.cmi test/gpr_3548_test.cmj test/gpr_3549_test.cmi test/gpr_3549_test.cmj test/gpr_3566_drive_test.cmi test/gpr_3566_drive_test.cmj test/gpr_3566_test.cmi test/gpr_3566_test.cmj test/gpr_3595_test.cmi test/gpr_3595_test.cmj test/gpr_3609_test.cmi test/gpr_3609_test.cmj test/gpr_3697_test.cmi test/gpr_3697_test.cmj test/gpr_373_test.cmi test/gpr_373_test.cmj test/gpr_3770_test.cmi test/gpr_3770_test.cmj test/gpr_3852_alias.cmi test/gpr_3852_alias.cmj test/gpr_3852_alias_reify.cmi test/gpr_3852_alias_reify.cmj test/gpr_3852_effect.cmi test/gpr_3852_effect.cmj test/gpr_3865.cmi test/gpr_3865.cmj test/gpr_3865_bar.cmi test/gpr_3865_bar.cmj test/gpr_3865_foo.cmi test/gpr_3865_foo.cmj test/gpr_3875_test.cmi test/gpr_3875_test.cmj test/gpr_3877_test.cmi test/gpr_3877_test.cmj test/gpr_3895_test.cmi test/gpr_3895_test.cmj test/gpr_3897_test.cmi test/gpr_3897_test.cmj test/gpr_3931_test.cmi test/gpr_3931_test.cmj test/gpr_3980_test.cmi test/gpr_3980_test.cmj test/gpr_4025_test.cmi test/gpr_4025_test.cmj test/gpr_405_test.cmi test/gpr_405_test.cmj test/gpr_4069_test.cmi test/gpr_4069_test.cmj test/gpr_4265_test.cmi test/gpr_4265_test.cmj test/gpr_4274_test.cmi test/gpr_4274_test.cmj test/gpr_4280_test.cmi test/gpr_4280_test.cmj test/gpr_4407_test.cmi test/gpr_4407_test.cmj test/gpr_441.cmi test/gpr_441.cmj test/gpr_4442_test.cmi test/gpr_4442_test.cmj test/gpr_4491_test.cmi test/gpr_4491_test.cmj test/gpr_4494_test.cmi test/gpr_4494_test.cmj test/gpr_4519_test.cmi test/gpr_4519_test.cmj test/gpr_459_test.cmi test/gpr_459_test.cmj test/gpr_4632.cmi test/gpr_4632.cmj test/gpr_4639_test.cmi test/gpr_4639_test.cmj test/gpr_4900_test.cmi test/gpr_4900_test.cmj test/gpr_4924_test.cmi test/gpr_4924_test.cmj test/gpr_4931.cmi test/gpr_4931.cmj test/gpr_4931_allow.cmi test/gpr_4931_allow.cmj test/gpr_5071_test.cmi test/gpr_5071_test.cmj test/gpr_5169_test.cmi test/gpr_5169_test.cmj test/gpr_5218_test.cmi test/gpr_5218_test.cmj test/gpr_5280_optimize_test.cmi test/gpr_5280_optimize_test.cmj test/gpr_5312.cmi test/gpr_5312.cmj test/gpr_5557.cmi test/gpr_5557.cmj test/gpr_5753.cmi test/gpr_5753.cmj test/gpr_658.cmi test/gpr_658.cmj test/gpr_858_test.cmi test/gpr_858_test.cmj test/gpr_858_unit2_test.cmi test/gpr_858_unit2_test.cmj test/gpr_904_test.cmi test/gpr_904_test.cmj test/gpr_974_test.cmi test/gpr_974_test.cmj test/gpr_977_test.cmi test/gpr_977_test.cmj test/gpr_return_type_unused_attribute.cmi test/gpr_return_type_unused_attribute.cmj test/gray_code_test.cmi test/gray_code_test.cmj test/guide_for_ext.cmi test/guide_for_ext.cmj test/hamming_test.cmi test/hamming_test.cmj test/hash_collision_test.cmi test/hash_collision_test.cmj test/hash_sugar_desugar.cmi test/hash_sugar_desugar.cmj test/hash_test.cmi test/hash_test.cmj test/hashtbl_test.cmi test/hashtbl_test.cmj test/hello.foo.cmi test/hello.foo.cmj test/hello_res.cmi test/hello_res.cmj test/ignore_test.cmi test/ignore_test.cmj test/imm_map_bench.cmi test/imm_map_bench.cmj test/include_side_effect.cmi test/include_side_effect.cmj test/include_side_effect_free.cmi test/include_side_effect_free.cmj test/incomplete_toplevel_test.cmi test/incomplete_toplevel_test.cmj test/infer_type_test.cmi test/infer_type_test.cmj test/inline_const.cmi test/inline_const.cmj test/inline_const_test.cmi test/inline_const_test.cmj test/inline_edge_cases.cmi test/inline_edge_cases.cmj test/inline_map2_test.cmi test/inline_map2_test.cmj test/inline_map_demo.cmi test/inline_map_demo.cmj test/inline_map_test.cmi test/inline_map_test.cmj test/inline_record_test.cmi test/inline_record_test.cmj test/inline_regression_test.cmi test/inline_regression_test.cmj test/inline_string_test.cmi test/inline_string_test.cmj test/inner_call.cmi test/inner_call.cmj test/inner_define.cmi test/inner_define.cmj test/inner_unused.cmi test/inner_unused.cmj test/installation_test.cmi test/installation_test.cmj test/int32_test.cmi test/int32_test.cmj test/int64_mul_div_test.cmi test/int64_mul_div_test.cmj test/int64_string_bench.cmi test/int64_string_bench.cmj test/int64_string_test.cmi test/int64_string_test.cmj test/int64_test.cmi test/int64_test.cmj test/int_hashtbl_test.cmi test/int_hashtbl_test.cmj test/int_map.cmi test/int_map.cmj test/int_overflow_test.cmi test/int_overflow_test.cmj test/int_poly_var.cmi test/int_poly_var.cmj test/int_switch_test.cmi test/int_switch_test.cmj test/internal_unused_test.cmi test/internal_unused_test.cmj test/io_test.cmi test/io_test.cmj test/js_array_test.cmi test/js_array_test.cmj test/js_bool_test.cmi test/js_bool_test.cmj test/js_cast_test.cmi test/js_cast_test.cmj test/js_date_test.cmi test/js_date_test.cmj test/js_dict_test.cmi test/js_dict_test.cmj test/js_exception_catch_test.cmi test/js_exception_catch_test.cmj test/js_float_test.cmi test/js_float_test.cmj test/js_global_test.cmi test/js_global_test.cmj test/js_int_test.cmi test/js_int_test.cmj test/js_json_test.cmi test/js_json_test.cmj test/js_list_test.cmi test/js_list_test.cmj test/js_math_test.cmi test/js_math_test.cmj test/js_null_test.cmi test/js_null_test.cmj test/js_null_undefined_test.cmi test/js_null_undefined_test.cmj test/js_nullable_test.cmi test/js_nullable_test.cmj test/js_obj_test.cmi test/js_obj_test.cmj test/js_option_test.cmi test/js_option_test.cmj test/js_promise_basic_test.cmi test/js_promise_basic_test.cmj test/js_re_test.cmi test/js_re_test.cmj test/js_string_test.cmi test/js_string_test.cmj test/js_typed_array_test.cmi test/js_typed_array_test.cmj test/js_undefined_test.cmi test/js_undefined_test.cmj test/js_val.cmi test/js_val.cmj test/jsoo_400_test.cmi test/jsoo_400_test.cmj test/jsoo_485_test.cmi test/jsoo_485_test.cmj test/jsxv4_newtype.cmi test/jsxv4_newtype.cmj test/key_word_property.cmi test/key_word_property.cmj test/key_word_property2.cmi test/key_word_property2.cmj test/key_word_property_plus_test.cmi test/key_word_property_plus_test.cmj test/label_uncurry.cmi test/label_uncurry.cmj test/large_integer_pat.cmi test/large_integer_pat.cmj test/large_record_duplication_test.cmi test/large_record_duplication_test.cmj test/largest_int_flow.cmi test/largest_int_flow.cmj test/lazy_demo.cmi test/lazy_demo.cmj test/lazy_test.cmi test/lazy_test.cmj test/lexer_test.cmi test/lexer_test.cmj test/lib_js_test.cmi test/lib_js_test.cmj test/libarg_test.cmi test/libarg_test.cmj test/libqueue_test.cmi test/libqueue_test.cmj test/limits_test.cmi test/limits_test.cmj test/list_stack.cmi test/list_stack.cmj test/list_test.cmi test/list_test.cmj test/local_exception_test.cmi test/local_exception_test.cmj test/loop_regression_test.cmi test/loop_regression_test.cmj test/loop_suites_test.cmi test/loop_suites_test.cmj test/map_find_test.cmi test/map_find_test.cmj test/map_test.cmi test/map_test.cmj test/mario_game.cmi test/mario_game.cmj test/marshal.cmi test/marshal.cmj test/meth_annotation.cmi test/meth_annotation.cmj test/method_name_test.cmi test/method_name_test.cmj test/method_string_name.cmi test/method_string_name.cmj test/minimal_test.cmi test/minimal_test.cmj test/miss_colon_test.cmi test/miss_colon_test.cmj test/mock_mt.cmi test/mock_mt.cmj test/module_alias_test.cmi test/module_alias_test.cmj test/module_as_class_ffi.cmi test/module_as_class_ffi.cmj test/module_as_function.cmi test/module_as_function.cmj test/module_missing_conversion.cmi test/module_missing_conversion.cmj test/module_parameter_test.cmi test/module_parameter_test.cmj test/module_splice_test.cmi test/module_splice_test.cmj test/more_poly_variant_test.cmi test/more_poly_variant_test.cmj test/more_uncurry.cmi test/more_uncurry.cmj test/mpr_6033_test.cmi test/mpr_6033_test.cmj test/mt.cmi test/mt.cmj test/mt_global.cmi test/mt_global.cmj test/mutable_obj_test.cmi test/mutable_obj_test.cmj test/mutable_uncurry_test.cmi test/mutable_uncurry_test.cmj test/mutual_non_recursive_type.cmi test/mutual_non_recursive_type.cmj test/name_mangle_test.cmi test/name_mangle_test.cmj test/nested_include.cmi test/nested_include.cmj test/nested_module_alias.cmi test/nested_module_alias.cmj test/nested_obj_literal.cmi test/nested_obj_literal.cmj test/nested_obj_test.cmi test/nested_obj_test.cmj test/nested_pattern_match_test.cmi test/nested_pattern_match_test.cmj test/noassert.cmi test/noassert.cmj test/node_fs_test.cmi test/node_fs_test.cmj test/node_path_test.cmi test/node_path_test.cmj test/null_list_test.cmi test/null_list_test.cmj test/number_lexer.cmi test/number_lexer.cmj test/obj_literal_ppx.cmi test/obj_literal_ppx.cmj test/obj_literal_ppx_test.cmi test/obj_literal_ppx_test.cmj test/obj_magic_test.cmi test/obj_magic_test.cmj test/obj_type_test.cmi test/obj_type_test.cmj test/ocaml_re_test.cmi test/ocaml_re_test.cmj test/of_string_test.cmi test/of_string_test.cmj test/offset.cmi test/offset.cmj test/option_encoding_test.cmi test/option_encoding_test.cmj test/option_record_none_test.cmi test/option_record_none_test.cmj test/option_repr_test.cmi test/option_repr_test.cmj test/optional_ffi_test.cmi test/optional_ffi_test.cmj test/optional_regression_test.cmi test/optional_regression_test.cmj test/pipe_send_readline.cmi test/pipe_send_readline.cmj test/pipe_syntax.cmi test/pipe_syntax.cmj test/poly_empty_array.cmi test/poly_empty_array.cmj test/poly_variant_test.cmi test/poly_variant_test.cmj test/polymorphic_raw_test.cmi test/polymorphic_raw_test.cmj test/polymorphism_test.cmi test/polymorphism_test.cmj test/polyvar_convert.cmi test/polyvar_convert.cmj test/polyvar_test.cmi test/polyvar_test.cmj test/ppx_apply_test.cmi test/ppx_apply_test.cmj test/pq_test.cmi test/pq_test.cmj test/pr6726.cmi test/pr6726.cmj test/pr_regression_test.cmi test/pr_regression_test.cmj test/prepend_data_ffi.cmi test/prepend_data_ffi.cmj test/primitive_reg_test.cmi test/primitive_reg_test.cmj test/print_alpha_test.cmi test/print_alpha_test.cmj test/promise_catch_test.cmi test/promise_catch_test.cmj test/queue_402.cmi test/queue_402.cmj test/queue_test.cmi test/queue_test.cmj test/random_test.cmi test/random_test.cmj test/raw_hash_tbl_bench.cmi test/raw_hash_tbl_bench.cmj test/raw_output_test.cmi test/raw_output_test.cmj test/raw_pure_test.cmi test/raw_pure_test.cmj test/rbset.cmi test/rbset.cmj test/react.cmi test/react.cmj test/reactDOMRe.cmi test/reactDOMRe.cmj test/reactDOMServerRe.cmi test/reactDOMServerRe.cmj test/reactEvent.cmi test/reactEvent.cmj test/reactTestUtils.cmi test/reactTestUtils.cmj test/reasonReact.cmi test/reasonReact.cmj test/reasonReactCompat.cmi test/reasonReactCompat.cmj test/reasonReactOptimizedCreateClass.cmi test/reasonReactOptimizedCreateClass.cmj test/reasonReactRouter.cmi test/reasonReactRouter.cmj test/rebind_module.cmi test/rebind_module.cmj test/rebind_module_test.cmi test/rebind_module_test.cmj test/rec_array_test.cmi test/rec_array_test.cmj test/rec_fun_test.cmi test/rec_fun_test.cmj test/rec_module_opt.cmi test/rec_module_opt.cmj test/rec_module_test.cmi test/rec_module_test.cmj test/rec_value_test.cmi test/rec_value_test.cmj test/record_debug_test.cmi test/record_debug_test.cmj test/record_extension_test.cmi test/record_extension_test.cmj test/record_name_test.cmi test/record_name_test.cmj test/record_regression.cmi test/record_regression.cmj test/record_with_test.cmi test/record_with_test.cmj test/recursive_module.cmi test/recursive_module.cmj test/recursive_module_test.cmi test/recursive_module_test.cmj test/recursive_react_component.cmi test/recursive_react_component.cmj test/recursive_records_test.cmi test/recursive_records_test.cmj test/recursive_unbound_module_test.cmi test/recursive_unbound_module_test.cmj test/regression_print.cmi test/regression_print.cmj test/relative_path.cmi test/relative_path.cmj test/res_debug.cmi test/res_debug.cmj test/return_check.cmi test/return_check.cmj test/runtime_encoding_test.cmi test/runtime_encoding_test.cmj test/set_annotation.cmi test/set_annotation.cmj test/set_gen.cmi test/set_gen.cmj test/sexp.cmi test/sexp.cmj test/sexpm.cmi test/sexpm.cmj test/sexpm_test.cmi test/sexpm_test.cmj test/side_effect.cmi test/side_effect.cmj test/side_effect_free.cmi test/side_effect_free.cmj test/simple_derive_test.cmi test/simple_derive_test.cmj test/simple_derive_use.cmi test/simple_derive_use.cmj test/simple_lexer_test.cmi test/simple_lexer_test.cmj test/simplify_lambda_632o.cmi test/simplify_lambda_632o.cmj test/single_module_alias.cmi test/single_module_alias.cmj test/singular_unit_test.cmi test/singular_unit_test.cmj test/small_inline_test.cmi test/small_inline_test.cmj test/splice_test.cmi test/splice_test.cmj test/stack_comp_test.cmi test/stack_comp_test.cmj test/stack_test.cmi test/stack_test.cmj test/stream_parser_test.cmi test/stream_parser_test.cmj test/string_bound_get_test.cmi test/string_bound_get_test.cmj test/string_constant_compare.cmi test/string_constant_compare.cmj test/string_get_set_test.cmi test/string_get_set_test.cmj test/string_literal_print_test.cmi test/string_literal_print_test.cmj test/string_runtime_test.cmi test/string_runtime_test.cmj test/string_set.cmi test/string_set.cmj test/string_set_test.cmi test/string_set_test.cmj test/string_test.cmi test/string_test.cmj test/string_unicode_test.cmi test/string_unicode_test.cmj test/stringmatch_test.cmi test/stringmatch_test.cmj test/submodule.cmi test/submodule.cmj test/submodule_call.cmi test/submodule_call.cmj test/switch_case_test.cmi test/switch_case_test.cmj test/switch_string.cmi test/switch_string.cmj test/tailcall_inline_test.cmi test/tailcall_inline_test.cmj test/template.cmi test/template.cmj test/test.cmi test/test.cmj test/test2.cmi test/test2.cmj test/test_alias.cmi test/test_alias.cmj test/test_ari.cmi test/test_ari.cmj test/test_array.cmi test/test_array.cmj test/test_array_append.cmi test/test_array_append.cmj test/test_array_primitive.cmi test/test_array_primitive.cmj test/test_bool_equal.cmi test/test_bool_equal.cmj test/test_bs_this.cmi test/test_bs_this.cmj test/test_bug.cmi test/test_bug.cmj test/test_bytes.cmi test/test_bytes.cmj test/test_case_opt_collision.cmi test/test_case_opt_collision.cmj test/test_case_set.cmi test/test_case_set.cmj test/test_char.cmi test/test_char.cmj test/test_closure.cmi test/test_closure.cmj test/test_common.cmi test/test_common.cmj test/test_const_elim.cmi test/test_const_elim.cmj test/test_const_propogate.cmi test/test_const_propogate.cmj test/test_cpp.cmi test/test_cpp.cmj test/test_cps.cmi test/test_cps.cmj test/test_demo.cmi test/test_demo.cmj test/test_dup_param.cmi test/test_dup_param.cmj test/test_eq.cmi test/test_eq.cmj test/test_exception.cmi test/test_exception.cmj test/test_exception_escape.cmi test/test_exception_escape.cmj test/test_export2.cmi test/test_export2.cmj test/test_external.cmi test/test_external.cmj test/test_external_unit.cmi test/test_external_unit.cmj test/test_ffi.cmi test/test_ffi.cmj test/test_fib.cmi test/test_fib.cmj test/test_filename.cmi test/test_filename.cmj test/test_for_loop.cmi test/test_for_loop.cmj test/test_for_map.cmi test/test_for_map.cmj test/test_for_map2.cmi test/test_for_map2.cmj test/test_format.cmi test/test_format.cmj test/test_formatter.cmi test/test_formatter.cmj test/test_functor_dead_code.cmi test/test_functor_dead_code.cmj test/test_generative_module.cmi test/test_generative_module.cmj test/test_global_print.cmi test/test_global_print.cmj test/test_google_closure.cmi test/test_google_closure.cmj test/test_include.cmi test/test_include.cmj test/test_incomplete.cmi test/test_incomplete.cmj test/test_incr_ref.cmi test/test_incr_ref.cmj test/test_int_map_find.cmi test/test_int_map_find.cmj test/test_internalOO.cmi test/test_internalOO.cmj test/test_is_js.cmi test/test_is_js.cmj test/test_js_ffi.cmi test/test_js_ffi.cmj test/test_let.cmi test/test_let.cmj test/test_list.cmi test/test_list.cmj test/test_literal.cmi test/test_literal.cmj test/test_literals.cmi test/test_literals.cmj test/test_match_exception.cmi test/test_match_exception.cmj test/test_mutliple.cmi test/test_mutliple.cmj test/test_nat64.cmi test/test_nat64.cmj test/test_nested_let.cmi test/test_nested_let.cmj test/test_nested_print.cmi test/test_nested_print.cmj test/test_non_export.cmi test/test_non_export.cmj test/test_nullary.cmi test/test_nullary.cmj test/test_obj.cmi test/test_obj.cmj test/test_obj_simple_ffi.cmi test/test_obj_simple_ffi.cmj test/test_order.cmi test/test_order.cmj test/test_order_tailcall.cmi test/test_order_tailcall.cmj test/test_other_exn.cmi test/test_other_exn.cmj test/test_pack.cmi test/test_pack.cmj test/test_per.cmi test/test_per.cmj test/test_pervasive.cmi test/test_pervasive.cmj test/test_pervasives2.cmi test/test_pervasives2.cmj test/test_pervasives3.cmi test/test_pervasives3.cmj test/test_primitive.cmi test/test_primitive.cmj test/test_ramification.cmi test/test_ramification.cmj test/test_react.cmi test/test_react.cmj test/test_react_case.cmi test/test_react_case.cmj test/test_regex.cmi test/test_regex.cmj test/test_require.cmi test/test_require.cmj test/test_runtime_encoding.cmi test/test_runtime_encoding.cmj test/test_scope.cmi test/test_scope.cmj test/test_seq.cmi test/test_seq.cmj test/test_set.cmi test/test_set.cmj test/test_side_effect_functor.cmi test/test_side_effect_functor.cmj test/test_simple_include.cmi test/test_simple_include.cmj test/test_simple_pattern_match.cmi test/test_simple_pattern_match.cmj test/test_simple_ref.cmi test/test_simple_ref.cmj test/test_simple_tailcall.cmi test/test_simple_tailcall.cmj test/test_small.cmi test/test_small.cmj test/test_sprintf.cmi test/test_sprintf.cmj test/test_stack.cmi test/test_stack.cmj test/test_static_catch_ident.cmi test/test_static_catch_ident.cmj test/test_string.cmi test/test_string.cmj test/test_string_case.cmi test/test_string_case.cmj test/test_string_const.cmi test/test_string_const.cmj test/test_string_map.cmi test/test_string_map.cmj test/test_string_switch.cmi test/test_string_switch.cmj test/test_switch.cmi test/test_switch.cmj test/test_trywith.cmi test/test_trywith.cmj test/test_tuple.cmi test/test_tuple.cmj test/test_tuple_destructring.cmi test/test_tuple_destructring.cmj test/test_type_based_arity.cmi test/test_type_based_arity.cmj test/test_u.cmi test/test_u.cmj test/test_unknown.cmi test/test_unknown.cmj test/test_unsafe_cmp.cmi test/test_unsafe_cmp.cmj test/test_unsafe_obj_ffi.cmi test/test_unsafe_obj_ffi.cmj test/test_unsafe_obj_ffi_ppx.cmi test/test_unsafe_obj_ffi_ppx.cmj test/test_unsupported_primitive.cmi test/test_unsupported_primitive.cmj test/test_while_closure.cmi test/test_while_closure.cmj test/test_while_side_effect.cmi test/test_while_side_effect.cmj test/test_zero_nullable.cmi test/test_zero_nullable.cmj test/then_mangle_test.cmi test/then_mangle_test.cmj test/ticker.cmi test/ticker.cmj test/to_string_test.cmi test/to_string_test.cmj test/topsort_test.cmi test/topsort_test.cmj test/tramp_fib.cmi test/tramp_fib.cmj test/tuple_alloc.cmi test/tuple_alloc.cmj test/type_disambiguate.cmi test/type_disambiguate.cmj test/typeof_test.cmi test/typeof_test.cmj test/ui_defs.cmi test/unboxed_attribute.cmi test/unboxed_attribute.cmj test/unboxed_attribute_test.cmi test/unboxed_attribute_test.cmj test/unboxed_crash.cmi test/unboxed_crash.cmj test/unboxed_use_case.cmi test/unboxed_use_case.cmj test/uncurried_cast.cmi test/uncurried_cast.cmj test/uncurried_default.args.cmi test/uncurried_default.args.cmj test/uncurried_pipe.cmi test/uncurried_pipe.cmj test/uncurry_external_test.cmi test/uncurry_external_test.cmj test/uncurry_glob_test.cmi test/uncurry_glob_test.cmj test/uncurry_test.cmi test/uncurry_test.cmj test/undef_regression2_test.cmi test/undef_regression2_test.cmj test/undef_regression_test.cmi test/undef_regression_test.cmj test/undefine_conditional.cmi test/undefine_conditional.cmj test/unicode_type_error.cmi test/unicode_type_error.cmj test/unit_undefined_test.cmi test/unit_undefined_test.cmj test/unitest_string.cmi test/unitest_string.cmj test/unsafe_full_apply_primitive.cmi test/unsafe_full_apply_primitive.cmj test/unsafe_ppx_test.cmi test/unsafe_ppx_test.cmj test/unsafe_this.cmi test/unsafe_this.cmj test/update_record_test.cmi test/update_record_test.cmj test/utf8_decode_test.cmi test/utf8_decode_test.cmj test/variant.cmi test/variant.cmj test/variantsMatching.cmi test/variantsMatching.cmj test/watch_test.cmi test/watch_test.cmj test/webpack_config.cmi test/webpack_config.cmj diff --git a/jscomp/test/compare_test.js b/jscomp/test/compare_test.js index b9cd0a9446..d6168a7567 100644 --- a/jscomp/test/compare_test.js +++ b/jscomp/test/compare_test.js @@ -16,11 +16,32 @@ function compare(x, y) { function compare2(x, y) { switch (x) { case /* A */0 : - return y === 0; + switch (y) { + case /* A */0 : + return true; + case /* B */1 : + case /* C */2 : + return false; + + } case /* B */1 : - return y === 1; + switch (y) { + case /* B */1 : + return true; + case /* A */0 : + case /* C */2 : + return false; + + } case /* C */2 : - return y >= 2; + switch (y) { + case /* A */0 : + case /* B */1 : + return false; + case /* C */2 : + return true; + + } } } diff --git a/jscomp/test/defunctor_make_test.js b/jscomp/test/defunctor_make_test.js index ca8e69d1fc..59df578281 100644 --- a/jscomp/test/defunctor_make_test.js +++ b/jscomp/test/defunctor_make_test.js @@ -16,10 +16,10 @@ var Comparable = { }; function height(param) { - if (param) { - return param._4; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return param._4; } } @@ -36,26 +36,28 @@ function create(l, x, d, r) { } function bal(l, x, d, r) { - var hl = l ? l._4 : 0; - var hr = r ? r._4 : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l._4; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r._4; if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l._3; - var ld = l._2; - var lv = l._1; - var ll = l._0; - if (height(ll) >= height(lr)) { - return create(ll, lv, ld, create(lr, x, d, r)); - } - if (lr) { - return create(create(ll, lv, ld, lr._0), lr._1, lr._2, create(lr._3, x, d, r)); - } + if (/* tag */typeof l === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var lr = l._3; + var ld = l._2; + var lv = l._1; + var ll = l._0; + if (height(ll) >= height(lr)) { + return create(ll, lv, ld, create(lr, x, d, r)); + } + if (/* tag */typeof lr !== "number") { + return create(create(ll, lv, ld, lr._0), lr._1, lr._2, create(lr._3, x, d, r)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -71,23 +73,23 @@ function bal(l, x, d, r) { _4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0 }; } - if (r) { - var rr = r._3; - var rd = r._2; - var rv = r._1; - var rl = r._0; - if (height(rr) >= height(rl)) { - return create(create(l, x, d, rl), rv, rd, rr); - } - if (rl) { - return create(create(l, x, d, rl._0), rl._1, rl._2, create(rl._3, rv, rd, rr)); - } + if (/* tag */typeof r === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var rr = r._3; + var rd = r._2; + var rv = r._1; + var rl = r._0; + if (height(rr) >= height(rl)) { + return create(create(l, x, d, rl), rv, rd, rr); + } + if (/* tag */typeof rl !== "number") { + return create(create(l, x, d, rl._0), rl._1, rl._2, create(rl._3, rv, rd, rr)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -96,7 +98,7 @@ function bal(l, x, d, r) { } function add(x, data, compare, param) { - if (!param) { + if (/* tag */typeof param === "number") { return /* Node */{ _0: /* Empty */0, _1: x, diff --git a/jscomp/test/demo_int_map.js b/jscomp/test/demo_int_map.js index b06d603d6a..5be0b06730 100644 --- a/jscomp/test/demo_int_map.js +++ b/jscomp/test/demo_int_map.js @@ -2,10 +2,10 @@ function height(param) { - if (param) { - return param.h; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return param.h; } } @@ -22,26 +22,28 @@ function create(l, x, d, r) { } function bal(l, x, d, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l.r; - var ld = l.d; - var lv = l.v; - var ll = l.l; - if (height(ll) >= height(lr)) { - return create(ll, lv, ld, create(lr, x, d, r)); - } - if (lr) { - return create(create(ll, lv, ld, lr.l), lr.v, lr.d, create(lr.r, x, d, r)); - } + if (/* tag */typeof l === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var lr = l.r; + var ld = l.d; + var lv = l.v; + var ll = l.l; + if (height(ll) >= height(lr)) { + return create(ll, lv, ld, create(lr, x, d, r)); + } + if (/* tag */typeof lr !== "number") { + return create(create(ll, lv, ld, lr.l), lr.v, lr.d, create(lr.r, x, d, r)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -57,23 +59,23 @@ function bal(l, x, d, r) { h: hl >= hr ? hl + 1 | 0 : hr + 1 | 0 }; } - if (r) { - var rr = r.r; - var rd = r.d; - var rv = r.v; - var rl = r.l; - if (height(rr) >= height(rl)) { - return create(create(l, x, d, rl), rv, rd, rr); - } - if (rl) { - return create(create(l, x, d, rl.l), rl.v, rl.d, create(rl.r, rv, rd, rr)); - } + if (/* tag */typeof r === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var rr = r.r; + var rd = r.d; + var rv = r.v; + var rl = r.l; + if (height(rr) >= height(rl)) { + return create(create(l, x, d, rl), rv, rd, rr); + } + if (/* tag */typeof rl !== "number") { + return create(create(l, x, d, rl.l), rl.v, rl.d, create(rl.r, rv, rd, rr)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -82,7 +84,7 @@ function bal(l, x, d, r) { } function add(x, data, m) { - if (!m) { + if (/* tag */typeof m === "number") { return /* Node */{ l: /* Empty */0, v: x, @@ -128,18 +130,18 @@ function add(x, data, m) { function find(x, _param) { while(true) { var param = _param; - if (param) { - var c = x - param.v | 0; - if (c === 0) { - return param.d; - } - _param = c < 0 ? param.l : param.r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var c = x - param.v | 0; + if (c === 0) { + return param.d; + } + _param = c < 0 ? param.l : param.r; + continue ; }; } diff --git a/jscomp/test/demo_page.js b/jscomp/test/demo_page.js index c111ebd498..6cce5b607e 100644 --- a/jscomp/test/demo_page.js +++ b/jscomp/test/demo_page.js @@ -21,13 +21,13 @@ function sum(n) { } function map(f, param) { - if (param) { + if (/* tag */typeof param === "number") { + return /* Nil */0; + } else { return /* Cons */{ _0: Curry._1(f, param._0), _1: map(f, param._1) }; - } else { - return /* Nil */0; } } diff --git a/jscomp/test/flexible_array_test.js b/jscomp/test/flexible_array_test.js index 06160e3c4f..fcee2d0ab1 100644 --- a/jscomp/test/flexible_array_test.js +++ b/jscomp/test/flexible_array_test.js @@ -9,134 +9,135 @@ function sub(_tr, _k) { while(true) { var k = _k; var tr = _tr; - if (tr) { - if (k === 1) { - return tr._0; - } - if (k % 2 === 0) { - _k = k / 2 | 0; - _tr = tr._1; - continue ; - } + if (/* tag */typeof tr === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + if (k === 1) { + return tr._0; + } + if (k % 2 === 0) { _k = k / 2 | 0; - _tr = tr._2; + _tr = tr._1; continue ; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + _k = k / 2 | 0; + _tr = tr._2; + continue ; }; } function update(tr, k, w) { - if (tr) { - var r = tr._2; - var l = tr._1; + if (/* tag */typeof tr === "number") { if (k === 1) { return /* Br */{ _0: w, - _1: l, - _2: r - }; - } - var v = tr._0; - if (k % 2 === 0) { - return /* Br */{ - _0: v, - _1: update(l, k / 2 | 0, w), - _2: r - }; - } else { - return /* Br */{ - _0: v, - _1: l, - _2: update(r, k / 2 | 0, w) + _1: /* Lf */0, + _2: /* Lf */0 }; } + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } + var r = tr._2; + var l = tr._1; if (k === 1) { return /* Br */{ _0: w, - _1: /* Lf */0, - _2: /* Lf */0 + _1: l, + _2: r + }; + } + var v = tr._0; + if (k % 2 === 0) { + return /* Br */{ + _0: v, + _1: update(l, k / 2 | 0, w), + _2: r + }; + } else { + return /* Br */{ + _0: v, + _1: l, + _2: update(r, k / 2 | 0, w) }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; } function $$delete(tr, n) { - if (tr) { - if (n === 1) { - return /* Lf */0; - } - var r = tr._2; - var l = tr._1; - var v = tr._0; - if (n % 2 === 0) { - return /* Br */{ - _0: v, - _1: $$delete(l, n / 2 | 0), - _2: r - }; - } else { - return /* Br */{ - _0: v, - _1: l, - _2: $$delete(r, n / 2 | 0) - }; - } + if (/* tag */typeof tr === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + if (n === 1) { + return /* Lf */0; + } + var r = tr._2; + var l = tr._1; + var v = tr._0; + if (n % 2 === 0) { + return /* Br */{ + _0: v, + _1: $$delete(l, n / 2 | 0), + _2: r + }; + } else { + return /* Br */{ + _0: v, + _1: l, + _2: $$delete(r, n / 2 | 0) + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; } function loext(tr, w) { - if (tr) { + if (/* tag */typeof tr === "number") { return /* Br */{ _0: w, - _1: loext(tr._2, tr._0), - _2: tr._1 + _1: /* Lf */0, + _2: /* Lf */0 }; } else { return /* Br */{ _0: w, - _1: /* Lf */0, - _2: /* Lf */0 + _1: loext(tr._2, tr._0), + _2: tr._1 }; } } function lorem(tr) { - if (tr) { - var l = tr._1; - if (l) { - return /* Br */{ - _0: l._0, - _1: tr._2, - _2: lorem(l) - }; - } - if (!tr._2) { - return /* Lf */0; - } + if (/* tag */typeof tr === "number") { throw { - RE_EXN_ID: "Assert_failure", - _1: [ - "flexible_array_test.ml", - 66, - 9 - ], + RE_EXN_ID: "Not_found", Error: new Error() }; } + var l = tr._1; + if (/* tag */typeof l !== "number") { + return /* Br */{ + _0: l._0, + _1: tr._2, + _2: lorem(l) + }; + } + var tmp = tr._2; + if (/* tag */typeof tmp === "number") { + return /* Lf */0; + } throw { - RE_EXN_ID: "Not_found", + RE_EXN_ID: "Assert_failure", + _1: [ + "flexible_array_test.ml", + 66, + 9 + ], Error: new Error() }; } diff --git a/jscomp/test/flow_parser_reg_test.js b/jscomp/test/flow_parser_reg_test.js index 69602d9c49..2f240c5f70 100644 --- a/jscomp/test/flow_parser_reg_test.js +++ b/jscomp/test/flow_parser_reg_test.js @@ -84,7 +84,7 @@ function btwn_exclusive(loc1, loc2) { } function string_of_filename(param) { - if (typeof param === "number") { + if (/* tag */typeof param === "number") { return "(global)"; } else { return param._0; @@ -92,7 +92,7 @@ function string_of_filename(param) { } function order_of_filename(param) { - if (typeof param === "number") { + if (/* tag */typeof param === "number") { return 1; } switch (param.TAG | 0) { @@ -1500,7 +1500,7 @@ Caml_module.update_mod({ }, Class, Class); function token_to_string(param) { - if (typeof param === "number") { + if (/* tag */typeof param === "number") { switch (param) { case /* T_IDENTIFIER */0 : return "T_IDENTIFIER"; @@ -1824,7 +1824,7 @@ function get_result_and_clear_state(param) { var env = match[0]; var match$1; var exit = 0; - if (typeof lex_token === "number") { + if (/* tag */typeof lex_token === "number") { exit = 2; } else { switch (lex_token.TAG | 0) { @@ -2304,21 +2304,18 @@ function utf16to8(code) { function mk_num_singleton(number_type, num, neg) { var value; - if (number_type !== 0) { - switch (number_type) { - case /* LEGACY_OCTAL */1 : - value = Caml_format.int_of_string("0o" + num); - break; - case /* OCTAL */2 : - value = Caml_format.int_of_string(num); - break; - case /* NORMAL */3 : - value = float_of_string(num); - break; - - } - } else { - value = Caml_format.int_of_string(num); + switch (number_type) { + case /* LEGACY_OCTAL */1 : + value = Caml_format.int_of_string("0o" + num); + break; + case /* BINARY */0 : + case /* OCTAL */2 : + value = Caml_format.int_of_string(num); + break; + case /* NORMAL */3 : + value = float_of_string(num); + break; + } var value$1 = neg === "" ? value : - value; return { @@ -5274,16 +5271,18 @@ function token$1(env) { } function height(param) { - if (param) { - return param.h; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return param.h; } } function create(l, v, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; return /* Node */{ l: l, v: v, @@ -5293,25 +5292,27 @@ function create(l, v, r) { } function bal(l, v, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l.r; - var lv = l.v; - var ll = l.l; - if (height(ll) >= height(lr)) { - return create(ll, lv, create(lr, v, r)); - } - if (lr) { - return create(create(ll, lv, lr.l), lr.v, create(lr.r, v, r)); - } + if (/* tag */typeof l === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", Error: new Error() }; } + var lr = l.r; + var lv = l.v; + var ll = l.l; + if (height(ll) >= height(lr)) { + return create(ll, lv, create(lr, v, r)); + } + if (/* tag */typeof lr !== "number") { + return create(create(ll, lv, lr.l), lr.v, create(lr.r, v, r)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", @@ -5326,22 +5327,22 @@ function bal(l, v, r) { h: hl >= hr ? hl + 1 | 0 : hr + 1 | 0 }; } - if (r) { - var rr = r.r; - var rv = r.v; - var rl = r.l; - if (height(rr) >= height(rl)) { - return create(create(l, v, rl), rv, rr); - } - if (rl) { - return create(create(l, v, rl.l), rl.v, create(rl.r, rv, rr)); - } + if (/* tag */typeof r === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", Error: new Error() }; } + var rr = r.r; + var rv = r.v; + var rl = r.l; + if (height(rr) >= height(rl)) { + return create(create(l, v, rl), rv, rr); + } + if (/* tag */typeof rl !== "number") { + return create(create(l, v, rl.l), rl.v, create(rl.r, rv, rr)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", @@ -5350,7 +5351,7 @@ function bal(l, v, r) { } function add(x, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Node */{ l: /* Empty */0, v: x, @@ -5384,7 +5385,7 @@ function add(x, t) { function mem(x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } var c = Caml.string_compare(x, param.v); @@ -5519,7 +5520,7 @@ function init_env(token_sinkOpt, parse_optionsOpt, source, content) { var token_sink = token_sinkOpt !== undefined ? Caml_option.valFromOption(token_sinkOpt) : undefined; var parse_options = parse_optionsOpt !== undefined ? Caml_option.valFromOption(parse_optionsOpt) : undefined; var lb = Lexing.from_string(content); - if (source !== undefined && typeof source !== "number") { + if (source !== undefined && /* tag */typeof source !== "number") { var init = lb.lex_curr_p; lb.lex_curr_p = { pos_fname: source._0, @@ -5822,20 +5823,17 @@ function is_line_terminator(env) { function is_implicit_semicolon(env) { var match = token$2(undefined, env); - if (typeof match === "number") { - if (match > 104 || match < 3) { - if (match > 105 || match < 2) { - return is_line_terminator(env); - } else { + if (/* tag */typeof match !== "number") { + return is_line_terminator(env); + } + switch (match) { + case /* T_SEMICOLON */7 : + return false; + case /* T_RCURLY */2 : + case /* T_EOF */105 : return true; - } - } else if (match !== 7) { + default: return is_line_terminator(env); - } else { - return false; - } - } else { - return is_line_terminator(env); } } @@ -5853,15 +5851,22 @@ function is_identifier(iOpt, env) { var match = token$2(i, env); if (is_strict_reserved(name) || is_restricted(name) || is_future_reserved(name)) { return true; - } else if (typeof match === "number") { - if (match > 57 || match < 1) { - return match < 63; - } else { - return match === 26; - } - } else { + } + if (/* tag */typeof match !== "number") { return false; } + switch (match) { + case /* T_IDENTIFIER */0 : + case /* T_LET */26 : + case /* T_DECLARE */58 : + case /* T_TYPE */59 : + case /* T_OF */60 : + case /* T_ASYNC */61 : + case /* T_AWAIT */62 : + return true; + default: + return false; + } } function is_function(iOpt, env) { @@ -5878,15 +5883,16 @@ function is_function(iOpt, env) { function is_class(iOpt, env) { var i = iOpt !== undefined ? iOpt : 0; var match = token$2(i, env); - if (typeof match === "number") { - if (match !== 12) { - return match === 38; - } else { - return true; - } - } else { + if (/* tag */typeof match !== "number") { return false; } + switch (match) { + case /* T_AT */12 : + case /* T_CLASS */38 : + return true; + default: + return false; + } } function error(env, e) { @@ -5899,7 +5905,7 @@ function error(env, e) { function get_unexpected_error(param) { var tmp = param[0]; - if (typeof tmp === "number") { + if (/* tag */typeof tmp === "number") { switch (tmp) { case /* T_IDENTIFIER */0 : return /* UnexpectedIdentifier */2; @@ -6165,16 +6171,18 @@ var Parser_env_Try = { }; function height$1(param) { - if (param) { - return param.h; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return param.h; } } function create$2(l, v, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; return /* Node */{ l: l, v: v, @@ -6184,25 +6192,27 @@ function create$2(l, v, r) { } function bal$1(l, v, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l.r; - var lv = l.v; - var ll = l.l; - if (height$1(ll) >= height$1(lr)) { - return create$2(ll, lv, create$2(lr, v, r)); - } - if (lr) { - return create$2(create$2(ll, lv, lr.l), lr.v, create$2(lr.r, v, r)); - } + if (/* tag */typeof l === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", Error: new Error() }; } + var lr = l.r; + var lv = l.v; + var ll = l.l; + if (height$1(ll) >= height$1(lr)) { + return create$2(ll, lv, create$2(lr, v, r)); + } + if (/* tag */typeof lr !== "number") { + return create$2(create$2(ll, lv, lr.l), lr.v, create$2(lr.r, v, r)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", @@ -6217,22 +6227,22 @@ function bal$1(l, v, r) { h: hl >= hr ? hl + 1 | 0 : hr + 1 | 0 }; } - if (r) { - var rr = r.r; - var rv = r.v; - var rl = r.l; - if (height$1(rr) >= height$1(rl)) { - return create$2(create$2(l, v, rl), rv, rr); - } - if (rl) { - return create$2(create$2(l, v, rl.l), rl.v, create$2(rl.r, rv, rr)); - } + if (/* tag */typeof r === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", Error: new Error() }; } + var rr = r.r; + var rv = r.v; + var rl = r.l; + if (height$1(rr) >= height$1(rl)) { + return create$2(create$2(l, v, rl), rv, rr); + } + if (/* tag */typeof rl !== "number") { + return create$2(create$2(l, v, rl.l), rl.v, create$2(rl.r, rv, rr)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", @@ -6241,7 +6251,7 @@ function bal$1(l, v, r) { } function add$1(x, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Node */{ l: /* Empty */0, v: x, @@ -6275,7 +6285,7 @@ function add$1(x, t) { function mem$1(x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } var c = Caml.string_compare(x, param.v); @@ -6288,10 +6298,10 @@ function mem$1(x, _param) { } function height$2(param) { - if (param) { - return param.h; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return param.h; } } @@ -6308,26 +6318,28 @@ function create$3(l, x, d, r) { } function bal$2(l, x, d, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l.r; - var ld = l.d; - var lv = l.v; - var ll = l.l; - if (height$2(ll) >= height$2(lr)) { - return create$3(ll, lv, ld, create$3(lr, x, d, r)); - } - if (lr) { - return create$3(create$3(ll, lv, ld, lr.l), lr.v, lr.d, create$3(lr.r, x, d, r)); - } + if (/* tag */typeof l === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var lr = l.r; + var ld = l.d; + var lv = l.v; + var ll = l.l; + if (height$2(ll) >= height$2(lr)) { + return create$3(ll, lv, ld, create$3(lr, x, d, r)); + } + if (/* tag */typeof lr !== "number") { + return create$3(create$3(ll, lv, ld, lr.l), lr.v, lr.d, create$3(lr.r, x, d, r)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -6343,23 +6355,23 @@ function bal$2(l, x, d, r) { h: hl >= hr ? hl + 1 | 0 : hr + 1 | 0 }; } - if (r) { - var rr = r.r; - var rd = r.d; - var rv = r.v; - var rl = r.l; - if (height$2(rr) >= height$2(rl)) { - return create$3(create$3(l, x, d, rl), rv, rd, rr); - } - if (rl) { - return create$3(create$3(l, x, d, rl.l), rl.v, rl.d, create$3(rl.r, rv, rd, rr)); - } + if (/* tag */typeof r === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var rr = r.r; + var rd = r.d; + var rv = r.v; + var rl = r.l; + if (height$2(rr) >= height$2(rl)) { + return create$3(create$3(l, x, d, rl), rv, rd, rr); + } + if (/* tag */typeof rl !== "number") { + return create$3(create$3(l, x, d, rl.l), rl.v, rl.d, create$3(rl.r, rv, rd, rr)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -6368,7 +6380,7 @@ function bal$2(l, x, d, r) { } function add$2(x, data, m) { - if (!m) { + if (/* tag */typeof m === "number") { return /* Node */{ l: /* Empty */0, v: x, @@ -6414,18 +6426,18 @@ function add$2(x, data, m) { function find(x, _param) { while(true) { var param = _param; - if (param) { - var c = Caml.string_compare(x, param.v); - if (c === 0) { - return param.d; - } - _param = c < 0 ? param.l : param.r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var c = Caml.string_compare(x, param.v); + if (c === 0) { + return param.d; + } + _param = c < 0 ? param.l : param.r; + continue ; }; } @@ -6439,16 +6451,18 @@ function compare$1(param, param$1) { } function height$3(param) { - if (param) { - return param.h; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return param.h; } } function create$4(l, v, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; return /* Node */{ l: l, v: v, @@ -6458,25 +6472,27 @@ function create$4(l, v, r) { } function bal$3(l, v, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l.r; - var lv = l.v; - var ll = l.l; - if (height$3(ll) >= height$3(lr)) { - return create$4(ll, lv, create$4(lr, v, r)); - } - if (lr) { - return create$4(create$4(ll, lv, lr.l), lr.v, create$4(lr.r, v, r)); - } + if (/* tag */typeof l === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", Error: new Error() }; } + var lr = l.r; + var lv = l.v; + var ll = l.l; + if (height$3(ll) >= height$3(lr)) { + return create$4(ll, lv, create$4(lr, v, r)); + } + if (/* tag */typeof lr !== "number") { + return create$4(create$4(ll, lv, lr.l), lr.v, create$4(lr.r, v, r)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", @@ -6491,22 +6507,22 @@ function bal$3(l, v, r) { h: hl >= hr ? hl + 1 | 0 : hr + 1 | 0 }; } - if (r) { - var rr = r.r; - var rv = r.v; - var rl = r.l; - if (height$3(rr) >= height$3(rl)) { - return create$4(create$4(l, v, rl), rv, rr); - } - if (rl) { - return create$4(create$4(l, v, rl.l), rl.v, create$4(rl.r, rv, rr)); - } + if (/* tag */typeof r === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", Error: new Error() }; } + var rr = r.r; + var rv = r.v; + var rl = r.l; + if (height$3(rr) >= height$3(rl)) { + return create$4(create$4(l, v, rl), rv, rr); + } + if (/* tag */typeof rl !== "number") { + return create$4(create$4(l, v, rl.l), rl.v, create$4(rl.r, rv, rr)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", @@ -6515,7 +6531,7 @@ function bal$3(l, v, r) { } function add$3(x, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Node */{ l: /* Empty */0, v: x, @@ -6549,7 +6565,7 @@ function add$3(x, t) { function mem$2(x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } var c = compare$1(x, param.v); @@ -6714,49 +6730,29 @@ function param_list_or_type(env) { var token$5 = Curry._2(Parser_env_Peek.token, undefined, env); var ret; var exit = 0; - if (typeof token$5 === "number") { - if (token$5 !== 105) { - if (token$5 >= 12) { + if (/* tag */typeof token$5 === "number") { + switch (token$5) { + case /* T_IDENTIFIER */0 : + ret = function_param_or_generic_type(env); + break; + case /* T_RPAREN */4 : + ret = { + TAG: /* ParamList */0, + _0: [ + undefined, + /* [] */0 + ] + }; + break; + case /* T_ELLIPSIS */11 : + case /* T_EOF */105 : + ret = { + TAG: /* ParamList */0, + _0: Curry._2(function_param_list_without_parens, env, /* [] */0) + }; + break; + default: exit = 1; - } else { - switch (token$5) { - case /* T_IDENTIFIER */0 : - ret = function_param_or_generic_type(env); - break; - case /* T_RPAREN */4 : - ret = { - TAG: /* ParamList */0, - _0: [ - undefined, - /* [] */0 - ] - }; - break; - case /* T_LCURLY */1 : - case /* T_RCURLY */2 : - case /* T_LPAREN */3 : - case /* T_LBRACKET */5 : - case /* T_RBRACKET */6 : - case /* T_SEMICOLON */7 : - case /* T_COMMA */8 : - case /* T_PERIOD */9 : - case /* T_ARROW */10 : - exit = 1; - break; - case /* T_ELLIPSIS */11 : - ret = { - TAG: /* ParamList */0, - _0: Curry._2(function_param_list_without_parens, env, /* [] */0) - }; - break; - - } - } - } else { - ret = { - TAG: /* ParamList */0, - _0: Curry._2(function_param_list_without_parens, env, /* [] */0) - }; } } else { exit = 1; @@ -6765,7 +6761,26 @@ function param_list_or_type(env) { var match = primitive(token$5); if (match !== undefined) { var match$1 = Curry._2(Parser_env_Peek.token, 1, env); - if (typeof match$1 === "number" && (match$1 === 77 || match$1 === 76)) { + var exit$1 = 0; + if (/* tag */typeof match$1 === "number") { + switch (match$1) { + case /* T_PLING */76 : + case /* T_COLON */77 : + exit$1 = 2; + break; + default: + ret = { + TAG: /* Type */1, + _0: union(env) + }; + } + } else { + ret = { + TAG: /* Type */1, + _0: union(env) + }; + } + if (exit$1 === 2) { var match$2 = Curry._1(Parse.identifier_or_reserved_keyword, env); var name = match$2[0]; if (!env.parse_options.types) { @@ -6794,12 +6809,8 @@ function param_list_or_type(env) { tl: /* [] */0 }) }; - } else { - ret = { - TAG: /* Type */1, - _0: union(env) - }; } + } else { ret = { TAG: /* Type */1, @@ -6820,22 +6831,29 @@ function function_param_list(env) { function prefix(env) { var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (match !== 76) { - var t = primary(env); - return postfix_with(env, t); + if (/* tag */typeof match !== "number") { + return postfix(env); + } + if (match !== /* T_PLING */76) { + return postfix(env); } var loc = Curry._2(Parser_env_Peek.loc, undefined, env); token$4(env, /* T_PLING */76); - var t$1 = prefix(env); + var t = prefix(env); return [ - btwn(loc, t$1[0]), + btwn(loc, t[0]), { TAG: /* Nullable */0, - _0: t$1 + _0: t } ]; } +function postfix(env) { + var t = primary(env); + return postfix_with(env, t); +} + function intersection(env) { maybe(env, /* T_BIT_AND */82); var left = prefix(env); @@ -6929,16 +6947,12 @@ function postfix_with(env, _t) { } function primitive(param) { - if (typeof param !== "number") { - return ; - } - if (param === 27) { - return /* Null */2; - } - if (param < 107) { + if (/* tag */typeof param !== "number") { return ; } switch (param) { + case /* T_NULL */27 : + return /* Null */2; case /* T_ANY_TYPE */107 : return /* Any */0; case /* T_BOOLEAN_TYPE */108 : @@ -6949,35 +6963,52 @@ function primitive(param) { return /* String */4; case /* T_VOID_TYPE */111 : return /* Void */1; - + default: + return ; } } function function_param_or_generic_type(env) { var id = Curry._2(Parse.identifier, undefined, env); var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (typeof match === "number" && (match === 77 || match === 76)) { - var param = function_param_with_id(env, id); - maybe(env, /* T_COMMA */8); - return { - TAG: /* ParamList */0, - _0: Curry._2(function_param_list_without_parens, env, { - hd: param, - tl: /* [] */0 - }) - }; + var exit = 0; + if (/* tag */typeof match === "number") { + switch (match) { + case /* T_PLING */76 : + case /* T_COLON */77 : + exit = 2; + break; + default: + exit = 1; + } + } else { + exit = 1; + } + switch (exit) { + case 1 : + return { + TAG: /* Type */1, + _0: Curry._2(union_with, env, Curry._2(intersection_with, env, postfix_with(env, generic_type_with_identifier(env, id)))) + }; + case 2 : + var param = function_param_with_id(env, id); + maybe(env, /* T_COMMA */8); + return { + TAG: /* ParamList */0, + _0: Curry._2(function_param_list_without_parens, env, { + hd: param, + tl: /* [] */0 + }) + }; + } - return { - TAG: /* Type */1, - _0: Curry._2(union_with, env, Curry._2(intersection_with, env, postfix_with(env, generic_type_with_identifier(env, id)))) - }; } function primary(env) { var loc = Curry._2(Parser_env_Peek.loc, undefined, env); var token$5 = Curry._2(Parser_env_Peek.token, undefined, env); var exit = 0; - if (typeof token$5 === "number") { + if (/* tag */typeof token$5 === "number") { switch (token$5) { case /* T_IDENTIFIER */0 : var match = generic(env); @@ -7229,30 +7260,58 @@ function params(env, allow_default, _require_default, _acc) { var acc = _acc; var require_default = _require_default; var match = Curry._2(Parser_env_Peek.token, undefined, env); - var variance = typeof match === "number" ? ( - match !== 94 ? ( - match !== 95 ? undefined : (token$3(env), /* Minus */1) - ) : (token$3(env), /* Plus */0) - ) : undefined; + var variance; + if (/* tag */typeof match === "number") { + switch (match) { + case /* T_PLUS */94 : + token$3(env); + variance = /* Plus */0; + break; + case /* T_MINUS */95 : + token$3(env); + variance = /* Minus */1; + break; + default: + variance = undefined; + } + } else { + variance = undefined; + } var match$1 = Curry._2(Parse.identifier_with_type, env, /* StrictParamName */28); var id = match$1[1]; var loc = match$1[0]; var match$2 = Curry._2(Parser_env_Peek.token, undefined, env); - var match$3 = allow_default ? ( - match$2 === 75 ? (token$3(env), [ - union(env), - true - ]) : (require_default ? error_at(env, [ - loc, - /* MissingTypeParamDefault */58 - ]) : undefined, [ - undefined, - require_default - ]) - ) : [ + var match$3; + if (allow_default) { + var exit = 0; + if (/* tag */typeof match$2 === "number" && match$2 === /* T_ASSIGN */75) { + token$3(env); + match$3 = [ + union(env), + true + ]; + } else { + exit = 1; + } + if (exit === 1) { + if (require_default) { + error_at(env, [ + loc, + /* MissingTypeParamDefault */58 + ]); + } + match$3 = [ + undefined, + require_default + ]; + } + + } else { + match$3 = [ undefined, false ]; + } var param_1 = { name: id.name, bound: id.typeAnnotation, @@ -7268,14 +7327,14 @@ function params(env, allow_default, _require_default, _acc) { tl: acc }; var match$4 = Curry._2(Parser_env_Peek.token, undefined, env); - if (typeof match$4 === "number") { - if (match$4 === 90) { - return List.rev(acc$1); - } - if (match$4 === 105) { - return List.rev(acc$1); + if (/* tag */typeof match$4 === "number") { + switch (match$4) { + case /* T_GREATER_THAN */90 : + case /* T_EOF */105 : + return List.rev(acc$1); + default: + } - } token$4(env, /* T_COMMA */8); if (Curry._2(Parser_env_Peek.token, undefined, env) === /* T_GREATER_THAN */90) { @@ -7316,7 +7375,7 @@ function union_with(env, left) { while(true) { var acc = _acc; var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (match === 80) { + if (/* tag */typeof match === "number" && match === /* T_BIT_OR */80) { token$4(env, /* T_BIT_OR */80); _acc = { hd: intersection(env), @@ -7350,13 +7409,19 @@ function function_param_list_without_parens(env) { var acc = _acc; var t = Curry._2(Parser_env_Peek.token, undefined, env); var exit = 0; - exit = typeof t === "number" ? ( - t > 11 || t < 4 ? ( - t !== 105 ? 1 : 2 - ) : ( - t > 10 || t < 5 ? 2 : 1 - ) - ) : 1; + if (/* tag */typeof t === "number") { + switch (t) { + case /* T_RPAREN */4 : + case /* T_ELLIPSIS */11 : + case /* T_EOF */105 : + exit = 2; + break; + default: + exit = 1; + } + } else { + exit = 1; + } switch (exit) { case 1 : var acc_0 = param(env); @@ -7390,7 +7455,7 @@ function intersection_with(env, left) { while(true) { var acc = _acc; var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (match === 82) { + if (/* tag */typeof match === "number" && match === /* T_BIT_AND */82) { token$4(env, /* T_BIT_AND */82); _acc = { hd: prefix(env), @@ -7416,14 +7481,14 @@ function types(env, _acc) { while(true) { var acc = _acc; var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (typeof match === "number") { - if (match === 6) { - return List.rev(acc); - } - if (match === 105) { - return List.rev(acc); + if (/* tag */typeof match === "number") { + switch (match) { + case /* T_RBRACKET */6 : + case /* T_EOF */105 : + return List.rev(acc); + default: + } - } var acc_0 = union(env); var acc$1 = { @@ -7529,20 +7594,17 @@ function indexer_property(env, start_loc, $$static) { function semicolon$1(env) { var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (typeof match === "number") { - if (match >= 7) { - if (match >= 9) { - return error_unexpected(env); - } else { + if (/* tag */typeof match !== "number") { + return error_unexpected(env); + } + switch (match) { + case /* T_RCURLY */2 : + return ; + case /* T_SEMICOLON */7 : + case /* T_COMMA */8 : return token$3(env); - } - } else if (match !== 2) { + default: return error_unexpected(env); - } else { - return ; - } - } else { - return error_unexpected(env); } } @@ -7556,44 +7618,30 @@ function properties(allow_static, env, _param) { var $$static = allow_static && maybe(env, /* T_STATIC */40); var match = Curry._2(Parser_env_Peek.token, undefined, env); var exit = 0; - if (typeof match === "number") { - if (match !== 89) { - if (match !== 105) { - if (match >= 6) { - exit = 1; - } else { - switch (match) { - case /* T_RCURLY */2 : - exit = 2; - break; - case /* T_LPAREN */3 : - exit = 3; - break; - case /* T_IDENTIFIER */0 : - case /* T_LCURLY */1 : - case /* T_RPAREN */4 : - exit = 1; - break; - case /* T_LBRACKET */5 : - var indexer = indexer_property(env, start_loc, $$static); - semicolon$1(env); - _param = [ - acc, - { - hd: indexer, - tl: indexers - }, - callProperties - ]; - continue ; - - } - } - } else { - exit = 2; - } - } else { - exit = 3; + if (/* tag */typeof match === "number") { + switch (match) { + case /* T_LBRACKET */5 : + var indexer = indexer_property(env, start_loc, $$static); + semicolon$1(env); + _param = [ + acc, + { + hd: indexer, + tl: indexers + }, + callProperties + ]; + continue ; + case /* T_LPAREN */3 : + case /* T_LESS_THAN */89 : + exit = 3; + break; + case /* T_RCURLY */2 : + case /* T_EOF */105 : + exit = 2; + break; + default: + exit = 1; } } else { exit = 1; @@ -7603,7 +7651,7 @@ function properties(allow_static, env, _param) { var match$1 = Curry._2(Parser_env_Peek.token, undefined, env); var match$2; var exit$1 = 0; - if ($$static && match$1 === 77) { + if ($$static && /* tag */typeof match$1 === "number" && match$1 === /* T_COLON */77) { strict_error_at(env, [ start_loc, /* StrictReservedWord */39 @@ -7642,7 +7690,19 @@ function properties(allow_static, env, _param) { var key$1 = match$2[1][1]; var $$static$1 = match$2[0]; var match$3 = Curry._2(Parser_env_Peek.token, undefined, env); - var property$1 = typeof match$3 === "number" && !(match$3 !== 3 && match$3 !== 89) ? method_property(env, start_loc, $$static$1, key$1) : property(env, start_loc, $$static$1, key$1); + var property$1; + if (/* tag */typeof match$3 === "number") { + switch (match$3) { + case /* T_LPAREN */3 : + case /* T_LESS_THAN */89 : + property$1 = method_property(env, start_loc, $$static$1, key$1); + break; + default: + property$1 = property(env, start_loc, $$static$1, key$1); + } + } else { + property$1 = property(env, start_loc, $$static$1, key$1); + } semicolon$1(env); _param = [ { @@ -7701,14 +7761,14 @@ function params$1(env, _acc) { while(true) { var acc = _acc; var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (typeof match === "number") { - if (match === 90) { - return List.rev(acc); - } - if (match === 105) { - return List.rev(acc); + if (/* tag */typeof match === "number") { + switch (match) { + case /* T_GREATER_THAN */90 : + case /* T_EOF */105 : + return List.rev(acc); + default: + } - } var acc_0 = union(env); var acc$1 = { @@ -7772,7 +7832,7 @@ function annotation(env) { function annotation_opt(env) { var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (match === 77) { + if (/* tag */typeof match === "number" && match === /* T_COLON */77) { return annotation(env); } @@ -7953,13 +8013,19 @@ function param_list(env, _param) { var params = param$2[0]; var t = Curry._2(Parser_env_Peek.token, undefined, env); var exit = 0; - exit = typeof t === "number" ? ( - t > 11 || t < 4 ? ( - t !== 105 ? 1 : 2 - ) : ( - t > 10 || t < 5 ? 2 : 1 - ) - ) : 1; + if (/* tag */typeof t === "number") { + switch (t) { + case /* T_RPAREN */4 : + case /* T_ELLIPSIS */11 : + case /* T_EOF */105 : + exit = 2; + break; + default: + exit = 1; + } + } else { + exit = 1; + } switch (exit) { case 1 : var match = param$1(env); @@ -8062,23 +8128,24 @@ function _function(env) { var match$1 = Curry._2(Parser_env_Peek.token, undefined, env); var match$2; var exit = 0; - if (match && typeof match$1 === "number") { - if (match$1 !== 3) { - if (match$1 !== 89) { + if (match && /* tag */typeof match$1 === "number") { + switch (match$1) { + case /* T_LPAREN */3 : + match$2 = [ + undefined, + undefined + ]; + break; + case /* T_LESS_THAN */89 : + var typeParams = Curry._1(type_parameter_declaration$1, env); + var id = Curry._2(Parser_env_Peek.token, undefined, env) === /* T_LPAREN */3 ? undefined : Curry._2(Parse.identifier, /* StrictFunctionName */30, env); + match$2 = [ + typeParams, + id + ]; + break; + default: exit = 1; - } else { - var typeParams = Curry._1(type_parameter_declaration$1, env); - var id = Curry._2(Parser_env_Peek.token, undefined, env) === /* T_LPAREN */3 ? undefined : Curry._2(Parse.identifier, /* StrictFunctionName */30, env); - match$2 = [ - typeParams, - id - ]; - } - } else { - match$2 = [ - undefined, - undefined - ]; } } else { exit = 1; @@ -8248,16 +8315,11 @@ function variable(env) { var start_loc = Curry._2(Parser_env_Peek.loc, undefined, env); var match = Curry._2(Parser_env_Peek.token, undefined, env); var match$1; - if (typeof match === "number") { + if (/* tag */typeof match === "number") { switch (match) { case /* T_VAR */22 : match$1 = declarations(/* T_VAR */22, /* Var */0, env); break; - case /* T_WHILE */23 : - case /* T_WITH */24 : - error_unexpected(env); - match$1 = declarations(/* T_VAR */22, /* Var */0, env); - break; case /* T_CONST */25 : match$1 = $$const(env); break; @@ -8293,7 +8355,7 @@ function is_tighter(a, b) { function is_lhs(param) { var tmp = param[1]; - if (typeof tmp === "number") { + if (/* tag */typeof tmp === "number") { return false; } switch (tmp.TAG | 0) { @@ -8307,7 +8369,7 @@ function is_lhs(param) { function is_assignable_lhs(param) { var tmp = param[1]; - if (typeof tmp === "number") { + if (/* tag */typeof tmp === "number") { return false; } switch (tmp.TAG | 0) { @@ -8324,7 +8386,7 @@ function is_assignable_lhs(param) { function assignment_op(env) { var match = Curry._2(Parser_env_Peek.token, undefined, env); var op; - if (typeof match === "number") { + if (/* tag */typeof match === "number") { switch (match) { case /* T_RSHIFT3_ASSIGN */63 : op = /* RShift3Assign */9; @@ -8404,49 +8466,32 @@ function conditional(env) { function peek_unary_op(env) { var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (typeof match !== "number") { + if (/* tag */typeof match !== "number") { return ; } - if (match >= 46) { - if (match < 94) { - if (match !== 62 || !env.allow_await) { - return ; - } else { - return /* Await */7; - } - } - if (match >= 102) { - return ; - } - switch (match) { - case /* T_PLUS */94 : - return /* Plus */1; - case /* T_MINUS */95 : - return /* Minus */0; - case /* T_DIV */96 : - case /* T_MULT */97 : - case /* T_EXP */98 : - case /* T_MOD */99 : + switch (match) { + case /* T_DELETE */43 : + return /* Delete */6; + case /* T_TYPEOF */44 : + return /* Typeof */4; + case /* T_VOID */45 : + return /* Void */5; + case /* T_AWAIT */62 : + if (env.allow_await) { + return /* Await */7; + } else { return ; - case /* T_NOT */100 : - return /* Not */2; - case /* T_BIT_NOT */101 : - return /* BitNot */3; - - } - } else { - if (match < 43) { + } + case /* T_PLUS */94 : + return /* Plus */1; + case /* T_MINUS */95 : + return /* Minus */0; + case /* T_NOT */100 : + return /* Not */2; + case /* T_BIT_NOT */101 : + return /* BitNot */3; + default: return ; - } - switch (match) { - case /* T_DELETE */43 : - return /* Delete */6; - case /* T_TYPEOF */44 : - return /* Typeof */4; - case /* T_VOID */45 : - return /* Void */5; - - } } } @@ -8457,9 +8502,9 @@ function unary(env) { token$3(env); var argument = unary(env); var loc = btwn(begin_loc, argument[0]); - if (op === 6) { + if (op === /* Delete */6) { var tmp = argument[1]; - if (typeof tmp !== "number" && tmp.TAG === /* Identifier */18) { + if (/* tag */typeof tmp !== "number" && tmp.TAG === /* Identifier */18) { strict_error_at(env, [ loc, /* StrictDelete */32 @@ -8480,22 +8525,42 @@ function unary(env) { ]; } var match = Curry._2(Parser_env_Peek.token, undefined, env); - var op$1 = typeof match === "number" ? ( - match !== 102 ? ( - match !== 103 ? undefined : /* Decrement */1 - ) : /* Increment */0 - ) : undefined; + var op$1; + if (/* tag */typeof match === "number") { + switch (match) { + case /* T_INCR */102 : + op$1 = /* Increment */0; + break; + case /* T_DECR */103 : + op$1 = /* Decrement */1; + break; + default: + op$1 = undefined; + } + } else { + op$1 = undefined; + } if (op$1 === undefined) { var argument$1 = left_hand_side(env); if (Curry._1(Parser_env_Peek.is_line_terminator, env)) { return argument$1; } var match$1 = Curry._2(Parser_env_Peek.token, undefined, env); - var op$2 = typeof match$1 === "number" ? ( - match$1 !== 102 ? ( - match$1 !== 103 ? undefined : /* Decrement */1 - ) : /* Increment */0 - ) : undefined; + var op$2; + if (/* tag */typeof match$1 === "number") { + switch (match$1) { + case /* T_INCR */102 : + op$2 = /* Increment */0; + break; + case /* T_DECR */103 : + op$2 = /* Decrement */1; + break; + default: + op$2 = undefined; + } + } else { + op$2 = undefined; + } if (op$2 === undefined) { return argument$1; } @@ -8506,7 +8571,7 @@ function unary(env) { ]); } var match$2 = argument$1[1]; - if (typeof match$2 !== "number" && match$2.TAG === /* Identifier */18) { + if (/* tag */typeof match$2 !== "number" && match$2.TAG === /* Identifier */18) { if (is_restricted(match$2._0[1].name)) { strict_error(env, /* StrictLHSPostfix */37); } @@ -8535,7 +8600,7 @@ function unary(env) { ]); } var match$3 = argument$2[1]; - if (typeof match$3 !== "number" && match$3.TAG === /* Identifier */18) { + if (/* tag */typeof match$3 !== "number" && match$3.TAG === /* Identifier */18) { if (is_restricted(match$3._0[1].name)) { strict_error(env, /* StrictLHSPrefix */38); } @@ -8556,14 +8621,21 @@ function unary(env) { function left_hand_side(env) { var match = Curry._2(Parser_env_Peek.token, undefined, env); - var expr = match === 42 ? _new(env, (function (new_expr, _args) { + var expr; + var exit = 0; + if (/* tag */typeof match === "number" && match === /* T_NEW */42) { + expr = _new(env, (function (new_expr, _args) { return new_expr; - })) : ( - Curry._2(Parser_env_Peek.is_function, undefined, env) ? _function$1(env) : primary$1(env) - ); + })); + } else { + exit = 1; + } + if (exit === 1) { + expr = Curry._2(Parser_env_Peek.is_function, undefined, env) ? _function$1(env) : primary$1(env); + } var expr$1 = member(env, expr); var part = Curry._2(Parser_env_Peek.token, undefined, env); - if (typeof part === "number") { + if (/* tag */typeof part === "number") { if (part === /* T_LPAREN */3) { return call(env, expr$1); } else { @@ -8580,7 +8652,7 @@ function call(env, _left) { while(true) { var left = _left; var part = Curry._2(Parser_env_Peek.token, undefined, env); - if (typeof part !== "number") { + if (/* tag */typeof part !== "number") { if (part.TAG === /* T_TEMPLATE_PART */2) { return tagged_template(env, left, part._0); } else { @@ -8654,7 +8726,7 @@ function _new(env, _finish_fn) { while(true) { var finish_fn = _finish_fn; var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (match === 42) { + if (/* tag */typeof match === "number" && match === /* T_NEW */42) { var start_loc = Curry._2(Parser_env_Peek.loc, undefined, env); token$4(env, /* T_NEW */42); var finish_fn$p = (function(finish_fn,start_loc){ @@ -8689,58 +8761,60 @@ function _new(env, _finish_fn) { var callee = member(with_no_call(true, env), expr); var part = Curry._2(Parser_env_Peek.token, undefined, env); var callee$1; - callee$1 = typeof part === "number" || part.TAG !== /* T_TEMPLATE_PART */2 ? callee : tagged_template(env, callee, part._0); + callee$1 = /* tag */typeof part === "number" || part.TAG !== /* T_TEMPLATE_PART */2 ? callee : tagged_template(env, callee, part._0); var match$1 = Curry._2(Parser_env_Peek.token, undefined, env); - var args = match$1 === 3 ? Curry._1($$arguments, env) : undefined; + var args; + args = /* tag */typeof match$1 === "number" && match$1 === /* T_LPAREN */3 ? Curry._1($$arguments, env) : undefined; return Curry._2(finish_fn, callee$1, args); }; } function member(env, left) { var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (typeof match !== "number") { + if (/* tag */typeof match !== "number") { return left; } - if (match !== 5) { - if (match !== 9) { + switch (match) { + case /* T_LBRACKET */5 : + token$4(env, /* T_LBRACKET */5); + var expr = Curry._1(Parse.expression, with_no_call(false, env)); + var last_loc = Curry._2(Parser_env_Peek.loc, undefined, env); + token$4(env, /* T_RBRACKET */6); + return call(env, [ + btwn(left[0], last_loc), + { + TAG: /* Member */13, + _0: { + _object: left, + property: { + TAG: /* PropertyExpression */1, + _0: expr + }, + computed: true + } + } + ]); + case /* T_PERIOD */9 : + token$4(env, /* T_PERIOD */9); + var match$1 = identifier_or_reserved_keyword(env); + var id = match$1[0]; + return call(env, [ + btwn(left[0], id[0]), + { + TAG: /* Member */13, + _0: { + _object: left, + property: { + TAG: /* PropertyIdentifier */0, + _0: id + }, + computed: false + } + } + ]); + default: return left; - } - token$4(env, /* T_PERIOD */9); - var match$1 = identifier_or_reserved_keyword(env); - var id = match$1[0]; - return call(env, [ - btwn(left[0], id[0]), - { - TAG: /* Member */13, - _0: { - _object: left, - property: { - TAG: /* PropertyIdentifier */0, - _0: id - }, - computed: false - } - } - ]); } - token$4(env, /* T_LBRACKET */5); - var expr = Curry._1(Parse.expression, with_no_call(false, env)); - var last_loc = Curry._2(Parser_env_Peek.loc, undefined, env); - token$4(env, /* T_RBRACKET */6); - return call(env, [ - btwn(left[0], last_loc), - { - TAG: /* Member */13, - _0: { - _object: left, - property: { - TAG: /* PropertyExpression */1, - _0: expr - }, - computed: true - } - } - ]); } function _function$1(env) { @@ -8756,7 +8830,8 @@ function _function$1(env) { ]; } else { var match$1 = Curry._2(Parser_env_Peek.token, undefined, env); - var id = match$1 === 89 ? undefined : Curry._2(Parse.identifier, /* StrictFunctionName */30, env); + var id; + id = /* tag */typeof match$1 === "number" && match$1 === /* T_LESS_THAN */89 ? undefined : Curry._2(Parse.identifier, /* StrictFunctionName */30, env); match = [ id, Curry._1(type_parameter_declaration$1, env) @@ -8799,32 +8874,29 @@ function _function$1(env) { function number(env, number_type) { var value = Curry._2(Parser_env_Peek.value, undefined, env); var value$1; - if (number_type !== 0) { - switch (number_type) { - case /* LEGACY_OCTAL */1 : - strict_error(env, /* StrictOctalLiteral */31); - value$1 = Caml_format.int_of_string("0o" + value); - break; - case /* OCTAL */2 : - value$1 = Caml_format.int_of_string(value); - break; - case /* NORMAL */3 : - try { - value$1 = float_of_string(value); - } - catch (exn){ - if (Sys.win32) { - error(env, /* WindowsFloatOfString */59); - value$1 = 789.0; - } else { - throw exn; - } + switch (number_type) { + case /* LEGACY_OCTAL */1 : + strict_error(env, /* StrictOctalLiteral */31); + value$1 = Caml_format.int_of_string("0o" + value); + break; + case /* BINARY */0 : + case /* OCTAL */2 : + value$1 = Caml_format.int_of_string(value); + break; + case /* NORMAL */3 : + try { + value$1 = float_of_string(value); + } + catch (exn){ + if (Sys.win32) { + error(env, /* WindowsFloatOfString */59); + value$1 = 789.0; + } else { + throw exn; } - break; - - } - } else { - value$1 = Caml_format.int_of_string(value); + } + break; + } token$4(env, { TAG: /* T_NUMBER */0, @@ -8837,7 +8909,7 @@ function primary$1(env) { var loc = Curry._2(Parser_env_Peek.loc, undefined, env); var number_type = Curry._2(Parser_env_Peek.token, undefined, env); var exit = 0; - if (typeof number_type === "number") { + if (/* tag */typeof number_type === "number") { switch (number_type) { case /* T_LCURLY */1 : var match = Curry._1(Parse.object_initializer, env); @@ -8853,28 +8925,29 @@ function primary$1(env) { var expression = Curry._1(assignment, env); var match$1 = Curry._2(Parser_env_Peek.token, undefined, env); var ret; - if (typeof match$1 === "number") { - if (match$1 !== 8) { - if (match$1 !== 77) { - ret = expression; - } else { - var typeAnnotation = wrap(annotation, env); - ret = [ - btwn(expression[0], typeAnnotation[0]), - { - TAG: /* TypeCast */24, - _0: { - expression: expression, - typeAnnotation: typeAnnotation + if (/* tag */typeof match$1 === "number") { + switch (match$1) { + case /* T_COMMA */8 : + ret = sequence(env, { + hd: expression, + tl: /* [] */0 + }); + break; + case /* T_COLON */77 : + var typeAnnotation = wrap(annotation, env); + ret = [ + btwn(expression[0], typeAnnotation[0]), + { + TAG: /* TypeCast */24, + _0: { + expression: expression, + typeAnnotation: typeAnnotation + } } - } - ]; - } - } else { - ret = sequence(env, { - hd: expression, - tl: /* [] */0 - }); + ]; + break; + default: + ret = expression; } } else { ret = expression; @@ -8949,7 +9022,7 @@ function primary$1(env) { var loc$2 = Curry._2(Parser_env_Peek.loc, undefined, env); var match$4 = Curry._2(Parser_env_Peek.token, undefined, env); var match$5; - if (typeof match$4 === "number") { + if (/* tag */typeof match$4 === "number") { throw { RE_EXN_ID: "Assert_failure", _1: [ @@ -9162,7 +9235,7 @@ function sequence(env, _acc) { while(true) { var acc = _acc; var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (match === 8) { + if (/* tag */typeof match === "number" && match === /* T_COMMA */8) { token$4(env, /* T_COMMA */8); var expr = Curry._1(assignment, env); _acc = { @@ -9191,87 +9264,132 @@ function identifier_or_reserved_keyword(env) { var lex_value = Curry._2(Parser_env_Peek.value, undefined, env); var lex_loc = Curry._2(Parser_env_Peek.loc, undefined, env); var exit = 0; - if (typeof lex_token === "number") { - if (lex_token >= 58) { - if (lex_token < 62) { - return [ - Curry._2(Parse.identifier, undefined, env), - undefined - ]; - } - exit = 1; - } else { - if (lex_token === 0) { - return [ - Curry._2(Parse.identifier, undefined, env), - undefined - ]; - } - exit = 1; + if (/* tag */typeof lex_token === "number") { + switch (lex_token) { + case /* T_IDENTIFIER */0 : + case /* T_DECLARE */58 : + case /* T_TYPE */59 : + case /* T_OF */60 : + case /* T_ASYNC */61 : + exit = 2; + break; + default: + exit = 1; } } else { exit = 1; } - if (exit === 1) { - var err; - var exit$1 = 0; - if (typeof lex_token === "number") { - if (lex_token > 106 || lex_token < 58) { - if (lex_token >= 13) { - exit$1 = 2; - } else { - error_unexpected(env); - err = undefined; - } - } else if (lex_token !== 62) { - error_unexpected(env); - err = undefined; - } else { - exit$1 = 2; - } - } else { - error_unexpected(env); - err = undefined; - } - if (exit$1 === 2) { - err = [ - lex_loc, - get_unexpected_error([ - lex_token, - lex_value - ]) - ]; - } - token$3(env); - return [ - [ - lex_loc, - { - name: lex_value, - typeAnnotation: undefined, - optional: false - } - ], - err - ]; - } - -} - -function assignment_but_not_arrow_function(env) { - var expr = conditional(env); - var operator = assignment_op(env); - if (operator === undefined) { - return expr; - } - if (!is_assignable_lhs(expr)) { - error_at(env, [ + switch (exit) { + case 1 : + var err; + var exit$1 = 0; + if (/* tag */typeof lex_token === "number") { + switch (lex_token) { + case /* T_FUNCTION */13 : + case /* T_IF */14 : + case /* T_IN */15 : + case /* T_INSTANCEOF */16 : + case /* T_RETURN */17 : + case /* T_SWITCH */18 : + case /* T_THIS */19 : + case /* T_THROW */20 : + case /* T_TRY */21 : + case /* T_VAR */22 : + case /* T_WHILE */23 : + case /* T_WITH */24 : + case /* T_CONST */25 : + case /* T_LET */26 : + case /* T_NULL */27 : + case /* T_FALSE */28 : + case /* T_TRUE */29 : + case /* T_BREAK */30 : + case /* T_CASE */31 : + case /* T_CATCH */32 : + case /* T_CONTINUE */33 : + case /* T_DEFAULT */34 : + case /* T_DO */35 : + case /* T_FINALLY */36 : + case /* T_FOR */37 : + case /* T_CLASS */38 : + case /* T_EXTENDS */39 : + case /* T_STATIC */40 : + case /* T_ELSE */41 : + case /* T_NEW */42 : + case /* T_DELETE */43 : + case /* T_TYPEOF */44 : + case /* T_VOID */45 : + case /* T_ENUM */46 : + case /* T_EXPORT */47 : + case /* T_IMPORT */48 : + case /* T_SUPER */49 : + case /* T_IMPLEMENTS */50 : + case /* T_INTERFACE */51 : + case /* T_PACKAGE */52 : + case /* T_PRIVATE */53 : + case /* T_PROTECTED */54 : + case /* T_PUBLIC */55 : + case /* T_YIELD */56 : + case /* T_DEBUGGER */57 : + case /* T_AWAIT */62 : + case /* T_ANY_TYPE */107 : + case /* T_BOOLEAN_TYPE */108 : + case /* T_NUMBER_TYPE */109 : + case /* T_STRING_TYPE */110 : + case /* T_VOID_TYPE */111 : + exit$1 = 3; + break; + default: + error_unexpected(env); + err = undefined; + } + } else { + error_unexpected(env); + err = undefined; + } + if (exit$1 === 3) { + err = [ + lex_loc, + get_unexpected_error([ + lex_token, + lex_value + ]) + ]; + } + token$3(env); + return [ + [ + lex_loc, + { + name: lex_value, + typeAnnotation: undefined, + optional: false + } + ], + err + ]; + case 2 : + return [ + Curry._2(Parse.identifier, undefined, env), + undefined + ]; + + } +} + +function assignment_but_not_arrow_function(env) { + var expr = conditional(env); + var operator = assignment_op(env); + if (operator === undefined) { + return expr; + } + if (!is_assignable_lhs(expr)) { + error_at(env, [ expr[0], /* InvalidLHSInAssignment */14 ]); } var match = expr[1]; - if (typeof match !== "number" && match.TAG === /* Identifier */18) { + if (/* tag */typeof match !== "number" && match.TAG === /* Identifier */18) { if (is_restricted(match._0[1].name)) { strict_error_at(env, [ expr[0], @@ -9307,20 +9425,16 @@ function try_assignment_but_not_arrow_function(env) { var env$1 = with_error_callback(error_callback, env); var ret = assignment_but_not_arrow_function(env$1); var match = Curry._2(Parser_env_Peek.token, undefined, env$1); - if (typeof match === "number") { - if (match !== 10) { - if (match === 77) { - throw { - RE_EXN_ID: Parser_env_Try.Rollback, - Error: new Error() - }; - } - - } else { - throw { - RE_EXN_ID: Parser_env_Try.Rollback, - Error: new Error() - }; + if (/* tag */typeof match === "number") { + switch (match) { + case /* T_ARROW */10 : + case /* T_COLON */77 : + throw { + RE_EXN_ID: Parser_env_Try.Rollback, + Error: new Error() + }; + default: + } } if (!Curry._2(Parser_env_Peek.is_identifier, undefined, env$1)) { @@ -9333,7 +9447,7 @@ function try_assignment_but_not_arrow_function(env) { }; } var match$1 = ret[1]; - if (typeof match$1 === "number") { + if (/* tag */typeof match$1 === "number") { return ret; } if (match$1.TAG !== /* Identifier */18) { @@ -9355,45 +9469,45 @@ function assignment(env) { var match = Curry._2(Parser_env_Peek.token, undefined, env); var match$1 = Curry._2(Parser_env_Peek.is_identifier, undefined, env); var exit = 0; - if (typeof match === "number") { - if (match > 88 || match < 4) { - if (match > 89 || match < 3) { + if (/* tag */typeof match === "number") { + switch (match) { + case /* T_YIELD */56 : + if (env.allow_yield) { + var start_loc = Curry._2(Parser_env_Peek.loc, undefined, env); + token$4(env, /* T_YIELD */56); + if (!env.allow_yield) { + error(env, /* IllegalYield */24); + } + var delegate = maybe(env, /* T_MULT */97); + var has_argument = !(Curry._2(Parser_env_Peek.token, undefined, env) === /* T_SEMICOLON */7 || Curry._1(Parser_env_Peek.is_implicit_semicolon, env)); + var argument = delegate || has_argument ? Curry._1(assignment, env) : undefined; + var end_loc; + if (argument !== undefined) { + end_loc = argument[0]; + } else { + var loc = Curry._2(Parser_env_Peek.semicolon_loc, undefined, env); + var end_loc$1 = loc !== undefined ? loc : start_loc; + semicolon(env); + end_loc = end_loc$1; + } + return [ + btwn(start_loc, end_loc), + { + TAG: /* Yield */14, + _0: { + argument: argument, + delegate: delegate + } + } + ]; + } + exit = 2; + break; + case /* T_LPAREN */3 : + case /* T_LESS_THAN */89 : + break; + default: exit = 2; - } - - } else if (match !== 56) { - exit = 2; - } else { - if (env.allow_yield) { - var start_loc = Curry._2(Parser_env_Peek.loc, undefined, env); - token$4(env, /* T_YIELD */56); - if (!env.allow_yield) { - error(env, /* IllegalYield */24); - } - var delegate = maybe(env, /* T_MULT */97); - var has_argument = !(Curry._2(Parser_env_Peek.token, undefined, env) === /* T_SEMICOLON */7 || Curry._1(Parser_env_Peek.is_implicit_semicolon, env)); - var argument = delegate || has_argument ? Curry._1(assignment, env) : undefined; - var end_loc; - if (argument !== undefined) { - end_loc = argument[0]; - } else { - var loc = Curry._2(Parser_env_Peek.semicolon_loc, undefined, env); - var end_loc$1 = loc !== undefined ? loc : start_loc; - semicolon(env); - end_loc = end_loc$1; - } - return [ - btwn(start_loc, end_loc), - { - TAG: /* Yield */14, - _0: { - argument: argument, - delegate: delegate - } - } - ]; - } - exit = 2; } } else { exit = 2; @@ -9402,14 +9516,14 @@ function assignment(env) { return assignment_but_not_arrow_function(env); } var expr = Curry._2(Parser_env_Try.to_parse, env, try_assignment_but_not_arrow_function); - if (expr) { + if (/* tag */typeof expr !== "number") { return expr._0; } var expr$1 = Curry._2(Parser_env_Try.to_parse, env, try_arrow_function); - if (expr$1) { - return expr$1._0; - } else { + if (/* tag */typeof expr$1 === "number") { return assignment_but_not_arrow_function(env); + } else { + return expr$1._0; } } @@ -9432,7 +9546,13 @@ function logical_and(env, _left, _lloc) { var lloc = _lloc; var left = _left; var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (match !== 79) { + if (/* tag */typeof match !== "number") { + return [ + lloc, + left + ]; + } + if (match !== /* T_AND */79) { return [ lloc, left @@ -9452,7 +9572,13 @@ function logical_or(env, _left, _lloc) { var lloc = _lloc; var left = _left; var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (match !== 78) { + if (/* tag */typeof match !== "number") { + return [ + lloc, + left + ]; + } + if (match !== /* T_OR */78) { return [ lloc, left @@ -9477,223 +9603,208 @@ function logical(env) { function binary_op(env) { var match = Curry._2(Parser_env_Peek.token, undefined, env); var ret; - if (typeof match === "number") { - if (match === 16 || match === 15) { - ret = match >= 16 ? [ - /* Instanceof */21, - { - TAG: /* Left_assoc */0, - _0: 6 - } - ] : ( - env.no_in ? undefined : [ + if (/* tag */typeof match === "number") { + switch (match) { + case /* T_IN */15 : + ret = env.no_in ? undefined : [ /* In */20, { TAG: /* Left_assoc */0, _0: 6 } - ] - ); - } else if (match >= 80) { - switch (match) { - case /* T_BIT_OR */80 : - ret = [ - /* BitOr */17, - { - TAG: /* Left_assoc */0, - _0: 2 - } - ]; - break; - case /* T_BIT_XOR */81 : - ret = [ - /* Xor */18, - { - TAG: /* Left_assoc */0, - _0: 3 - } - ]; - break; - case /* T_BIT_AND */82 : - ret = [ - /* BitAnd */19, - { - TAG: /* Left_assoc */0, - _0: 4 - } - ]; - break; - case /* T_EQUAL */83 : - ret = [ - /* Equal */0, - { - TAG: /* Left_assoc */0, - _0: 5 - } - ]; - break; - case /* T_NOT_EQUAL */84 : - ret = [ - /* NotEqual */1, - { - TAG: /* Left_assoc */0, - _0: 5 - } - ]; - break; - case /* T_STRICT_EQUAL */85 : - ret = [ - /* StrictEqual */2, - { - TAG: /* Left_assoc */0, - _0: 5 - } - ]; - break; - case /* T_STRICT_NOT_EQUAL */86 : - ret = [ - /* StrictNotEqual */3, - { - TAG: /* Left_assoc */0, - _0: 5 - } - ]; - break; - case /* T_LESS_THAN_EQUAL */87 : - ret = [ - /* LessThanEqual */5, - { - TAG: /* Left_assoc */0, - _0: 6 - } - ]; - break; - case /* T_GREATER_THAN_EQUAL */88 : - ret = [ - /* GreaterThanEqual */7, - { - TAG: /* Left_assoc */0, - _0: 6 - } - ]; - break; - case /* T_LESS_THAN */89 : - ret = [ - /* LessThan */4, - { - TAG: /* Left_assoc */0, - _0: 6 - } - ]; - break; - case /* T_GREATER_THAN */90 : - ret = [ - /* GreaterThan */6, - { - TAG: /* Left_assoc */0, - _0: 6 - } - ]; - break; - case /* T_LSHIFT */91 : - ret = [ - /* LShift */8, - { - TAG: /* Left_assoc */0, - _0: 7 - } - ]; - break; - case /* T_RSHIFT */92 : - ret = [ - /* RShift */9, - { - TAG: /* Left_assoc */0, - _0: 7 - } - ]; - break; - case /* T_RSHIFT3 */93 : - ret = [ - /* RShift3 */10, - { - TAG: /* Left_assoc */0, - _0: 7 - } - ]; - break; - case /* T_PLUS */94 : - ret = [ - /* Plus */11, - { - TAG: /* Left_assoc */0, - _0: 8 - } - ]; - break; - case /* T_MINUS */95 : - ret = [ - /* Minus */12, - { - TAG: /* Left_assoc */0, - _0: 8 - } ]; - break; - case /* T_DIV */96 : - ret = [ - /* Div */15, - { - TAG: /* Left_assoc */0, - _0: 9 - } - ]; - break; - case /* T_MULT */97 : - ret = [ - /* Mult */13, - { - TAG: /* Left_assoc */0, - _0: 9 - } - ]; - break; - case /* T_EXP */98 : - ret = [ - /* Exp */14, - { - TAG: /* Right_assoc */1, - _0: 10 - } - ]; - break; - case /* T_MOD */99 : - ret = [ - /* Mod */16, - { - TAG: /* Left_assoc */0, - _0: 9 - } - ]; - break; - case /* T_NOT */100 : - case /* T_BIT_NOT */101 : - case /* T_INCR */102 : - case /* T_DECR */103 : - case /* T_ERROR */104 : - case /* T_EOF */105 : - case /* T_JSX_IDENTIFIER */106 : - case /* T_ANY_TYPE */107 : - case /* T_BOOLEAN_TYPE */108 : - case /* T_NUMBER_TYPE */109 : - case /* T_STRING_TYPE */110 : - case /* T_VOID_TYPE */111 : - ret = undefined; - break; - - } - } else { - ret = undefined; + break; + case /* T_INSTANCEOF */16 : + ret = [ + /* Instanceof */21, + { + TAG: /* Left_assoc */0, + _0: 6 + } + ]; + break; + case /* T_BIT_OR */80 : + ret = [ + /* BitOr */17, + { + TAG: /* Left_assoc */0, + _0: 2 + } + ]; + break; + case /* T_BIT_XOR */81 : + ret = [ + /* Xor */18, + { + TAG: /* Left_assoc */0, + _0: 3 + } + ]; + break; + case /* T_BIT_AND */82 : + ret = [ + /* BitAnd */19, + { + TAG: /* Left_assoc */0, + _0: 4 + } + ]; + break; + case /* T_EQUAL */83 : + ret = [ + /* Equal */0, + { + TAG: /* Left_assoc */0, + _0: 5 + } + ]; + break; + case /* T_NOT_EQUAL */84 : + ret = [ + /* NotEqual */1, + { + TAG: /* Left_assoc */0, + _0: 5 + } + ]; + break; + case /* T_STRICT_EQUAL */85 : + ret = [ + /* StrictEqual */2, + { + TAG: /* Left_assoc */0, + _0: 5 + } + ]; + break; + case /* T_STRICT_NOT_EQUAL */86 : + ret = [ + /* StrictNotEqual */3, + { + TAG: /* Left_assoc */0, + _0: 5 + } + ]; + break; + case /* T_LESS_THAN_EQUAL */87 : + ret = [ + /* LessThanEqual */5, + { + TAG: /* Left_assoc */0, + _0: 6 + } + ]; + break; + case /* T_GREATER_THAN_EQUAL */88 : + ret = [ + /* GreaterThanEqual */7, + { + TAG: /* Left_assoc */0, + _0: 6 + } + ]; + break; + case /* T_LESS_THAN */89 : + ret = [ + /* LessThan */4, + { + TAG: /* Left_assoc */0, + _0: 6 + } + ]; + break; + case /* T_GREATER_THAN */90 : + ret = [ + /* GreaterThan */6, + { + TAG: /* Left_assoc */0, + _0: 6 + } + ]; + break; + case /* T_LSHIFT */91 : + ret = [ + /* LShift */8, + { + TAG: /* Left_assoc */0, + _0: 7 + } + ]; + break; + case /* T_RSHIFT */92 : + ret = [ + /* RShift */9, + { + TAG: /* Left_assoc */0, + _0: 7 + } + ]; + break; + case /* T_RSHIFT3 */93 : + ret = [ + /* RShift3 */10, + { + TAG: /* Left_assoc */0, + _0: 7 + } + ]; + break; + case /* T_PLUS */94 : + ret = [ + /* Plus */11, + { + TAG: /* Left_assoc */0, + _0: 8 + } + ]; + break; + case /* T_MINUS */95 : + ret = [ + /* Minus */12, + { + TAG: /* Left_assoc */0, + _0: 8 + } + ]; + break; + case /* T_DIV */96 : + ret = [ + /* Div */15, + { + TAG: /* Left_assoc */0, + _0: 9 + } + ]; + break; + case /* T_MULT */97 : + ret = [ + /* Mult */13, + { + TAG: /* Left_assoc */0, + _0: 9 + } + ]; + break; + case /* T_EXP */98 : + ret = [ + /* Exp */14, + { + TAG: /* Right_assoc */1, + _0: 10 + } + ]; + break; + case /* T_MOD */99 : + ret = [ + /* Mod */16, + { + TAG: /* Left_assoc */0, + _0: 9 + } + ]; + break; + default: + ret = undefined; } } else { ret = undefined; @@ -9769,7 +9880,7 @@ function binary(env) { var right_loc = btwn(start_loc, end_loc); if (Curry._2(Parser_env_Peek.token, undefined, env) === /* T_LESS_THAN */89) { var tmp = right[1]; - if (typeof tmp !== "number" && tmp.TAG === /* JSXElement */22) { + if (/* tag */typeof tmp !== "number" && tmp.TAG === /* JSXElement */22) { error(env, /* AdjacentJSXElements */46); } @@ -9811,7 +9922,13 @@ function binary(env) { function argument(env) { var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (match !== 11) { + if (/* tag */typeof match !== "number") { + return { + TAG: /* Expression */0, + _0: Curry._1(assignment, env) + }; + } + if (match !== /* T_ELLIPSIS */11) { return { TAG: /* Expression */0, _0: Curry._1(assignment, env) @@ -9836,14 +9953,14 @@ function arguments$p(env, _acc) { while(true) { var acc = _acc; var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (typeof match === "number") { - if (match === 4) { - return List.rev(acc); - } - if (match === 105) { - return List.rev(acc); + if (/* tag */typeof match === "number") { + switch (match) { + case /* T_RPAREN */4 : + case /* T_EOF */105 : + return List.rev(acc); + default: + } - } var acc_0 = argument(env); var acc$1 = { @@ -9880,11 +9997,11 @@ function template_parts(env, _quasis, _expressions) { tl: expressions }; var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (match === 2) { + if (/* tag */typeof match === "number" && match === /* T_RCURLY */2) { push_lex_mode(env, /* TEMPLATE */4); var match$1 = Curry._2(Parser_env_Peek.token, undefined, env); var match$2; - if (typeof match$1 === "number") { + if (/* tag */typeof match$1 === "number") { throw { RE_EXN_ID: "Assert_failure", _1: [ @@ -10011,54 +10128,40 @@ function elements(env, _acc) { while(true) { var acc = _acc; var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (typeof match === "number") { - if (match === 105) { - return List.rev(acc); - } - if (match < 12) { - switch (match) { - case /* T_RBRACKET */6 : - return List.rev(acc); - case /* T_COMMA */8 : - token$4(env, /* T_COMMA */8); - _acc = { - hd: undefined, - tl: acc - }; - continue ; - case /* T_IDENTIFIER */0 : - case /* T_LCURLY */1 : - case /* T_RCURLY */2 : - case /* T_LPAREN */3 : - case /* T_RPAREN */4 : - case /* T_LBRACKET */5 : - case /* T_SEMICOLON */7 : - case /* T_PERIOD */9 : - case /* T_ARROW */10 : - break; - case /* T_ELLIPSIS */11 : - var start_loc = Curry._2(Parser_env_Peek.loc, undefined, env); - token$4(env, /* T_ELLIPSIS */11); - var argument = Curry._1(assignment, env); - var loc = btwn(start_loc, argument[0]); - var elem = { - TAG: /* Spread */1, - _0: [ - loc, - { - argument: argument - } - ] - }; - _acc = { - hd: elem, - tl: acc - }; - continue ; + if (/* tag */typeof match === "number") { + switch (match) { + case /* T_COMMA */8 : + token$4(env, /* T_COMMA */8); + _acc = { + hd: undefined, + tl: acc + }; + continue ; + case /* T_ELLIPSIS */11 : + var start_loc = Curry._2(Parser_env_Peek.loc, undefined, env); + token$4(env, /* T_ELLIPSIS */11); + var argument = Curry._1(assignment, env); + var loc = btwn(start_loc, argument[0]); + var elem = { + TAG: /* Spread */1, + _0: [ + loc, + { + argument: argument + } + ] + }; + _acc = { + hd: elem, + tl: acc + }; + continue ; + case /* T_RBRACKET */6 : + case /* T_EOF */105 : + return List.rev(acc); + default: - } } - } var elem$1 = { TAG: /* Expression */0, @@ -10090,28 +10193,24 @@ function array_initializer(env) { } function error_callback$1(param, param$1) { - if (typeof param$1 === "number") { - if (param$1 > 44 || param$1 < 28) { - if (param$1 === 47) { - return ; - } - throw { - RE_EXN_ID: Parser_env_Try.Rollback, - Error: new Error() - }; - } - if (param$1 > 43 || param$1 < 29) { - return ; + if (/* tag */typeof param$1 === "number") { + switch (param$1) { + case /* StrictParamName */28 : + case /* NewlineBeforeArrow */44 : + case /* ParameterAfterRestParameter */47 : + return ; + default: + throw { + RE_EXN_ID: Parser_env_Try.Rollback, + Error: new Error() + }; } + } else { throw { RE_EXN_ID: Parser_env_Try.Rollback, Error: new Error() }; } - throw { - RE_EXN_ID: Parser_env_Try.Rollback, - Error: new Error() - }; } function try_arrow_function(env) { @@ -10163,7 +10262,7 @@ function try_arrow_function(env) { var generator = false; var env = with_in_function(true, param); var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (match === 1) { + if (/* tag */typeof match === "number" && match === /* T_LCURLY */1) { var match$1 = function_body(env, async, generator); return [ match$1[1], @@ -10212,7 +10311,10 @@ function decorator_list_helper(env, _decorators) { while(true) { var decorators = _decorators; var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (match !== 12) { + if (/* tag */typeof match !== "number") { + return decorators; + } + if (match !== /* T_AT */12) { return decorators; } token$3(env); @@ -10234,7 +10336,7 @@ function decorator_list(env) { function key(env) { var number_type = Curry._2(Parser_env_Peek.token, undefined, env); - if (typeof number_type === "number") { + if (/* tag */typeof number_type === "number") { if (number_type === /* T_LBRACKET */5) { var start_loc = Curry._2(Parser_env_Peek.loc, undefined, env); token$4(env, /* T_LBRACKET */5); @@ -10326,7 +10428,17 @@ function key(env) { function _method(env, kind) { var generator$1 = generator(env, false); var match = key(env); - var typeParameters = kind !== 0 ? undefined : Curry._1(type_parameter_declaration$1, env); + var typeParameters; + switch (kind) { + case /* Init */0 : + typeParameters = Curry._1(type_parameter_declaration$1, env); + break; + case /* Get */1 : + case /* Set */2 : + typeParameters = undefined; + break; + + } token$4(env, /* T_LPAREN */3); var params; switch (kind) { @@ -10425,23 +10537,43 @@ function property$1(env) { switch (key$1._0[1].name) { case "get" : var match$2 = Curry._2(Parser_env_Peek.token, undefined, env); - tmp = typeof match$2 === "number" ? ( - match$2 > 77 || match$2 < 3 ? ( - match$2 !== 89 ? get(env, start_loc) : init(env, start_loc, key$1, false, false) - ) : ( - match$2 > 76 || match$2 < 4 ? init(env, start_loc, key$1, false, false) : get(env, start_loc) - ) - ) : get(env, start_loc); + var exit$1 = 0; + if (/* tag */typeof match$2 === "number") { + switch (match$2) { + case /* T_LPAREN */3 : + case /* T_COLON */77 : + case /* T_LESS_THAN */89 : + exit$1 = 2; + break; + default: + tmp = get(env, start_loc); + } + } else { + tmp = get(env, start_loc); + } + if (exit$1 === 2) { + tmp = init(env, start_loc, key$1, false, false); + } break; case "set" : var match$3 = Curry._2(Parser_env_Peek.token, undefined, env); - tmp = typeof match$3 === "number" ? ( - match$3 > 77 || match$3 < 3 ? ( - match$3 !== 89 ? set(env, start_loc) : init(env, start_loc, key$1, false, false) - ) : ( - match$3 > 76 || match$3 < 4 ? init(env, start_loc, key$1, false, false) : set(env, start_loc) - ) - ) : set(env, start_loc); + var exit$2 = 0; + if (/* tag */typeof match$3 === "number") { + switch (match$3) { + case /* T_LPAREN */3 : + case /* T_COLON */77 : + case /* T_LESS_THAN */89 : + exit$2 = 2; + break; + default: + tmp = set(env, start_loc); + } + } else { + tmp = set(env, start_loc); + } + if (exit$2 === 2) { + tmp = init(env, start_loc, key$1, false, false); + } break; default: exit = 1; @@ -10515,32 +10647,18 @@ function init(env, start_loc, key, async, generator) { var match = Curry._2(Parser_env_Peek.token, undefined, env); var match$1; var exit = 0; - if (typeof match === "number") { - if (match !== 89) { - if (match >= 9) { + if (/* tag */typeof match === "number") { + switch (match) { + case /* T_RCURLY */2 : + case /* T_COMMA */8 : + exit = 2; + break; + case /* T_LPAREN */3 : + case /* T_LESS_THAN */89 : + exit = 3; + break; + default: exit = 1; - } else { - switch (match) { - case /* T_LPAREN */3 : - exit = 3; - break; - case /* T_IDENTIFIER */0 : - case /* T_LCURLY */1 : - case /* T_RPAREN */4 : - case /* T_LBRACKET */5 : - case /* T_RBRACKET */6 : - case /* T_SEMICOLON */7 : - exit = 1; - break; - case /* T_RCURLY */2 : - case /* T_COMMA */8 : - exit = 2; - break; - - } - } - } else { - exit = 3; } } else { exit = 1; @@ -10672,7 +10790,7 @@ function check_property(env, prop_map, prop) { switch (match$1.TAG | 0) { case /* Literal */0 : var s = match$1._0[1].value; - if (typeof s === "number") { + if (/* tag */typeof s === "number") { key = "null"; } else { switch (s.TAG | 0) { @@ -10784,14 +10902,14 @@ function properties$1(env, _param) { var param = _param; var acc = param[1]; var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (typeof match === "number") { - if (match === 2) { - return List.rev(acc); - } - if (match === 105) { - return List.rev(acc); + if (/* tag */typeof match === "number") { + switch (match) { + case /* T_RCURLY */2 : + case /* T_EOF */105 : + return List.rev(acc); + default: + } - } var prop = property$1(env); var prop_map = check_property(env, param[0], prop); @@ -10845,7 +10963,10 @@ function class_implements(env, _acc) { tl: acc }; var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (match !== 8) { + if (/* tag */typeof match !== "number") { + return List.rev(acc$1); + } + if (match !== /* T_COMMA */8) { return List.rev(acc$1); } token$4(env, /* T_COMMA */8); @@ -10854,19 +10975,55 @@ function class_implements(env, _acc) { }; } -function init$1(env, start_loc, decorators, key, async, generator, $$static) { - var match = Curry._2(Parser_env_Peek.token, undefined, env); - var exit = 0; - if (typeof match === "number") { - if (match > 77 || match < 75) { - if (match === 7) { - exit = 2; - } - - } else if (match !== 76) { - exit = 2; +function get$1(env, start_loc, decorators, $$static) { + var match = _method(env, /* Get */1); + var value = match[1]; + return { + TAG: /* Method */0, + _0: [ + btwn(start_loc, value[0]), + { + kind: /* Get */2, + key: match[0], + value: value, + static: $$static, + decorators: decorators + } + ] + }; +} + +function set$1(env, start_loc, decorators, $$static) { + var match = _method(env, /* Set */2); + var value = match[1]; + return { + TAG: /* Method */0, + _0: [ + btwn(start_loc, value[0]), + { + kind: /* Set */3, + key: match[0], + value: value, + static: $$static, + decorators: decorators + } + ] + }; +} + +function init$1(env, start_loc, decorators, key, async, generator, $$static) { + var match = Curry._2(Parser_env_Peek.token, undefined, env); + var exit = 0; + if (/* tag */typeof match === "number") { + switch (match) { + case /* T_SEMICOLON */7 : + case /* T_ASSIGN */75 : + case /* T_COLON */77 : + exit = 2; + break; + default: + } - } if (exit === 2 && !async && !generator) { var typeAnnotation = wrap(annotation_opt, env); @@ -10932,7 +11089,7 @@ function init$1(env, start_loc, decorators, key, async, generator, $$static) { switch (key.TAG | 0) { case /* Literal */0 : var match$4 = key._0[1].value; - kind = typeof match$4 === "number" || !(match$4.TAG === /* String */0 && match$4._0 === "constructor") ? /* Method */1 : /* Constructor */0; + kind = /* tag */typeof match$4 === "number" || !(match$4.TAG === /* String */0 && match$4._0 === "constructor") ? /* Method */1 : /* Constructor */0; break; case /* Identifier */1 : kind = key._0[1].name === "constructor" ? /* Constructor */0 : /* Method */1; @@ -10972,73 +11129,43 @@ function class_element(env) { case "get" : var match$1 = Curry._2(Parser_env_Peek.token, undefined, env); var exit = 0; - exit = typeof match$1 === "number" ? ( - match$1 >= 75 ? ( - match$1 >= 78 ? ( - match$1 !== 89 ? 2 : 3 - ) : ( - match$1 !== 76 ? 3 : 2 - ) - ) : ( - match$1 !== 3 && match$1 !== 7 ? 2 : 3 - ) - ) : 2; - switch (exit) { - case 2 : - var match$2 = _method(env, /* Get */1); - var value = match$2[1]; - return { - TAG: /* Method */0, - _0: [ - btwn(start_loc, value[0]), - { - kind: /* Get */2, - key: match$2[0], - value: value, - static: $$static, - decorators: decorators - } - ] - }; - case 3 : - return init$1(env, start_loc, decorators, key$1, async, generator$1, $$static); - + if (/* tag */typeof match$1 !== "number") { + return get$1(env, start_loc, decorators, $$static); + } + switch (match$1) { + case /* T_LPAREN */3 : + case /* T_SEMICOLON */7 : + case /* T_ASSIGN */75 : + case /* T_COLON */77 : + case /* T_LESS_THAN */89 : + exit = 2; + break; + default: + return get$1(env, start_loc, decorators, $$static); + } + if (exit === 2) { + return init$1(env, start_loc, decorators, key$1, async, generator$1, $$static); } break; case "set" : - var match$3 = Curry._2(Parser_env_Peek.token, undefined, env); + var match$2 = Curry._2(Parser_env_Peek.token, undefined, env); var exit$1 = 0; - exit$1 = typeof match$3 === "number" ? ( - match$3 >= 75 ? ( - match$3 >= 78 ? ( - match$3 !== 89 ? 2 : 3 - ) : ( - match$3 !== 76 ? 3 : 2 - ) - ) : ( - match$3 !== 3 && match$3 !== 7 ? 2 : 3 - ) - ) : 2; - switch (exit$1) { - case 2 : - var match$4 = _method(env, /* Set */2); - var value$1 = match$4[1]; - return { - TAG: /* Method */0, - _0: [ - btwn(start_loc, value$1[0]), - { - kind: /* Set */3, - key: match$4[0], - value: value$1, - static: $$static, - decorators: decorators - } - ] - }; - case 3 : - return init$1(env, start_loc, decorators, key$1, async, generator$1, $$static); - + if (/* tag */typeof match$2 !== "number") { + return set$1(env, start_loc, decorators, $$static); + } + switch (match$2) { + case /* T_LPAREN */3 : + case /* T_SEMICOLON */7 : + case /* T_ASSIGN */75 : + case /* T_COLON */77 : + case /* T_LESS_THAN */89 : + exit$1 = 2; + break; + default: + return set$1(env, start_loc, decorators, $$static); + } + if (exit$1 === 2) { + return init$1(env, start_loc, decorators, key$1, async, generator$1, $$static); } break; default: @@ -11058,23 +11185,28 @@ function elements$1(env, _acc) { while(true) { var acc = _acc; var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (typeof match === "number") { - if (match > 104 || match < 3) { - if (!(match > 105 || match < 2)) { - return List.rev(acc); - } - - } else if (match === 7) { - token$4(env, /* T_SEMICOLON */7); - continue ; + if (/* tag */typeof match === "number") { + switch (match) { + case /* T_SEMICOLON */7 : + token$4(env, /* T_SEMICOLON */7); + continue ; + case /* T_RCURLY */2 : + case /* T_EOF */105 : + return List.rev(acc); + default: + _acc = { + hd: Curry._1(class_element, env), + tl: acc + }; + continue ; } - + } else { + _acc = { + hd: Curry._1(class_element, env), + tl: acc + }; + continue ; } - _acc = { - hd: Curry._1(class_element, env), - tl: acc - }; - continue ; }; } @@ -11155,23 +11287,18 @@ function class_expression(env) { var match = Curry._2(Parser_env_Peek.token, undefined, env); var match$1; var exit = 0; - if (typeof match === "number") { - if (match > 39 || match < 1) { - if (match !== 89) { + if (/* tag */typeof match === "number") { + switch (match) { + case /* T_LCURLY */1 : + case /* T_EXTENDS */39 : + case /* T_LESS_THAN */89 : + match$1 = [ + undefined, + undefined + ]; + break; + default: exit = 1; - } else { - match$1 = [ - undefined, - undefined - ]; - } - } else if (match > 38 || match < 2) { - match$1 = [ - undefined, - undefined - ]; - } else { - exit = 1; } } else { exit = 1; @@ -11261,20 +11388,17 @@ function export_specifiers_and_errs(env, _specifiers, _errs) { var errs = _errs; var specifiers = _specifiers; var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (typeof match === "number") { - if (match === 2) { - return [ - List.rev(specifiers), - List.rev(errs) - ]; - } - if (match === 105) { - return [ - List.rev(specifiers), - List.rev(errs) - ]; + if (/* tag */typeof match === "number") { + switch (match) { + case /* T_RCURLY */2 : + case /* T_EOF */105 : + return [ + List.rev(specifiers), + List.rev(errs) + ]; + default: + } - } var match$1 = Curry._1(Parse.identifier_or_reserved_keyword, env); var id = match$1[0]; @@ -11348,7 +11472,7 @@ function declare_var(env, start_loc) { function export_source(env) { contextual(env, "from"); var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (typeof match !== "number" && match.TAG === /* T_STRING */1) { + if (/* tag */typeof match !== "number" && match.TAG === /* T_STRING */1) { var match$1 = match._0; var octal = match$1[3]; var raw = match$1[2]; @@ -11428,162 +11552,135 @@ function declare(in_moduleOpt, env) { } var start_loc = Curry._2(Parser_env_Peek.loc, undefined, env); var match = Curry._2(Parser_env_Peek.token, 1, env); - if (typeof match === "number") { - if (match >= 22) { - if (match >= 38) { - if (match < 62) { - switch (match) { - case /* T_CLASS */38 : - token$4(env, /* T_DECLARE */58); - var match$1 = Curry._2(declare_class, env, start_loc); - return [ - match$1[0], - { - TAG: /* DeclareClass */24, - _0: match$1[1] - } - ]; - case /* T_EXPORT */47 : - if (in_module) { - return declare_export_declaration(in_module, env); + if (/* tag */typeof match === "number") { + switch (match) { + case /* T_IDENTIFIER */0 : + if (Curry._2(Parser_env_Peek.value, 1, env) === "module") { + token$4(env, /* T_DECLARE */58); + contextual(env, "module"); + if (in_module || Curry._2(Parser_env_Peek.token, undefined, env) === /* T_PERIOD */9) { + token$4(env, /* T_PERIOD */9); + contextual(env, "exports"); + var type_annot = wrap(annotation, env); + var loc = Curry._2(Parser_env_Peek.semicolon_loc, undefined, env); + var end_loc = loc !== undefined ? loc : type_annot[0]; + semicolon(env); + var loc$1 = btwn(start_loc, end_loc); + return [ + loc$1, + { + TAG: /* DeclareModuleExports */26, + _0: type_annot + } + ]; + } else { + var match$1 = Curry._2(Parser_env_Peek.token, undefined, env); + var id; + if (/* tag */typeof match$1 === "number" || match$1.TAG !== /* T_STRING */1) { + id = { + TAG: /* Identifier */0, + _0: Curry._2(Parse.identifier, undefined, env) + }; + } else { + var match$2 = match$1._0; + var octal = match$2[3]; + var raw = match$2[2]; + var value = match$2[1]; + var loc$2 = match$2[0]; + if (octal) { + strict_error(env, /* StrictOctalLiteral */31); } - break; - case /* T_INTERFACE */51 : - token$4(env, /* T_DECLARE */58); - return $$interface(env); - case /* T_TYPE */59 : - token$4(env, /* T_DECLARE */58); - return type_alias(env); - case /* T_EXTENDS */39 : - case /* T_STATIC */40 : - case /* T_ELSE */41 : - case /* T_NEW */42 : - case /* T_DELETE */43 : - case /* T_TYPEOF */44 : - case /* T_VOID */45 : - case /* T_ENUM */46 : - case /* T_IMPORT */48 : - case /* T_SUPER */49 : - case /* T_IMPLEMENTS */50 : - case /* T_PACKAGE */52 : - case /* T_PRIVATE */53 : - case /* T_PROTECTED */54 : - case /* T_PUBLIC */55 : - case /* T_YIELD */56 : - case /* T_DEBUGGER */57 : - case /* T_DECLARE */58 : - case /* T_OF */60 : - break; - case /* T_ASYNC */61 : - token$4(env, /* T_DECLARE */58); - error(env, /* DeclareAsync */49); - token$4(env, /* T_ASYNC */61); - return declare_function_statement(env, start_loc); - - } - } - - } else if (match < 23) { - token$4(env, /* T_DECLARE */58); - return declare_var_statement(env, start_loc); - } - - } else if (match !== 13) { - if (match === 0 && Curry._2(Parser_env_Peek.value, 1, env) === "module") { - token$4(env, /* T_DECLARE */58); - contextual(env, "module"); - if (in_module || Curry._2(Parser_env_Peek.token, undefined, env) === /* T_PERIOD */9) { - token$4(env, /* T_PERIOD */9); - contextual(env, "exports"); - var type_annot = wrap(annotation, env); - var loc = Curry._2(Parser_env_Peek.semicolon_loc, undefined, env); - var end_loc = loc !== undefined ? loc : type_annot[0]; - semicolon(env); - var loc$1 = btwn(start_loc, end_loc); - return [ - loc$1, - { - TAG: /* DeclareModuleExports */26, - _0: type_annot - } - ]; - } else { - var match$2 = Curry._2(Parser_env_Peek.token, undefined, env); - var id; - if (typeof match$2 === "number" || match$2.TAG !== /* T_STRING */1) { - id = { - TAG: /* Identifier */0, - _0: Curry._2(Parse.identifier, undefined, env) - }; - } else { - var match$3 = match$2._0; - var octal = match$3[3]; - var raw = match$3[2]; - var value = match$3[1]; - var loc$2 = match$3[0]; - if (octal) { - strict_error(env, /* StrictOctalLiteral */31); - } - token$4(env, { - TAG: /* T_STRING */1, + token$4(env, { + TAG: /* T_STRING */1, + _0: [ + loc$2, + value, + raw, + octal + ] + }); + var value$1 = { + TAG: /* String */0, + _0: value + }; + id = { + TAG: /* Literal */1, _0: [ loc$2, - value, - raw, - octal + { + value: value$1, + raw: raw + } ] - }); - var value$1 = { - TAG: /* String */0, - _0: value - }; - id = { - TAG: /* Literal */1, - _0: [ - loc$2, - { - value: value$1, - raw: raw - } - ] - }; + }; + } + var body_start_loc = Curry._2(Parser_env_Peek.loc, undefined, env); + token$4(env, /* T_LCURLY */1); + var match$3 = module_items(env, undefined, /* [] */0); + var module_kind = match$3[0]; + token$4(env, /* T_RCURLY */2); + var body_end_loc = Curry._2(Parser_env_Peek.loc, undefined, env); + var body_loc = btwn(body_start_loc, body_end_loc); + var body_1 = { + body: match$3[1] + }; + var body = [ + body_loc, + body_1 + ]; + var loc$3 = btwn(start_loc, body_loc); + var kind = module_kind !== undefined ? module_kind : ({ + TAG: /* CommonJS */0, + _0: loc$3 + }); + return [ + loc$3, + { + TAG: /* DeclareModule */25, + _0: { + id: id, + body: body, + kind: kind + } + } + ]; + } } - var body_start_loc = Curry._2(Parser_env_Peek.loc, undefined, env); - token$4(env, /* T_LCURLY */1); - var match$4 = module_items(env, undefined, /* [] */0); - var module_kind = match$4[0]; - token$4(env, /* T_RCURLY */2); - var body_end_loc = Curry._2(Parser_env_Peek.loc, undefined, env); - var body_loc = btwn(body_start_loc, body_end_loc); - var body_1 = { - body: match$4[1] - }; - var body = [ - body_loc, - body_1 - ]; - var loc$3 = btwn(start_loc, body_loc); - var kind = module_kind !== undefined ? module_kind : ({ - TAG: /* CommonJS */0, - _0: loc$3 - }); + break; + case /* T_FUNCTION */13 : + token$4(env, /* T_DECLARE */58); + return declare_function_statement(env, start_loc); + case /* T_VAR */22 : + token$4(env, /* T_DECLARE */58); + return declare_var_statement(env, start_loc); + case /* T_CLASS */38 : + token$4(env, /* T_DECLARE */58); + var match$4 = Curry._2(declare_class, env, start_loc); return [ - loc$3, + match$4[0], { - TAG: /* DeclareModule */25, - _0: { - id: id, - body: body, - kind: kind - } + TAG: /* DeclareClass */24, + _0: match$4[1] } ]; - } - } - - } else { - token$4(env, /* T_DECLARE */58); - return declare_function_statement(env, start_loc); + case /* T_EXPORT */47 : + if (in_module) { + return declare_export_declaration(in_module, env); + } + break; + case /* T_INTERFACE */51 : + token$4(env, /* T_DECLARE */58); + return $$interface(env); + case /* T_TYPE */59 : + token$4(env, /* T_DECLARE */58); + return type_alias(env); + case /* T_ASYNC */61 : + token$4(env, /* T_DECLARE */58); + error(env, /* DeclareAsync */49); + token$4(env, /* T_ASYNC */61); + return declare_function_statement(env, start_loc); + default: + } } if (in_module) { @@ -11671,186 +11768,154 @@ function declare_export_declaration(allow_export_typeOpt, env) { token$4(env$1, /* T_EXPORT */47); var match = Curry._2(Parser_env_Peek.token, undefined, env$1); var exit = 0; - if (typeof match === "number") { - if (match >= 52) { - if (match !== 59) { - if (match !== 97) { - exit = 1; - } else { - var loc = Curry._2(Parser_env_Peek.loc, undefined, env$1); - token$4(env$1, /* T_MULT */97); - var parse_export_star_as = env$1.parse_options.esproposal_export_star_as; - var local_name = Curry._2(Parser_env_Peek.value, undefined, env$1) === "as" ? (contextual(env$1, "as"), parse_export_star_as ? Curry._2(Parse.identifier, undefined, env$1) : (error(env$1, /* UnexpectedTypeDeclaration */7), undefined)) : undefined; - var specifiers = { - TAG: /* ExportBatchSpecifier */1, - _0: loc, - _1: local_name - }; - var source = export_source(env$1); - var loc$1 = Curry._2(Parser_env_Peek.semicolon_loc, undefined, env$1); - var end_loc = loc$1 !== undefined ? loc$1 : source[0]; - var source$1 = source; - semicolon(env$1); - return [ - btwn(start_loc, end_loc), - { - TAG: /* DeclareExportDeclaration */27, - _0: { - default: false, - declaration: undefined, - specifiers: specifiers, - source: source$1 + if (/* tag */typeof match === "number") { + switch (match) { + case /* T_DEFAULT */34 : + token$4(env$1, /* T_DEFAULT */34); + var match$1 = Curry._2(Parser_env_Peek.token, undefined, env$1); + var match$2; + var exit$1 = 0; + if (/* tag */typeof match$1 === "number") { + switch (match$1) { + case /* T_FUNCTION */13 : + var fn = declare_function(env$1, start_loc); + match$2 = [ + fn[0], + { + TAG: /* Function */1, + _0: fn } - } - ]; - } - } else { - if (allow_export_type) { - var match$1 = type_alias_helper(env$1); - var alias_loc = match$1[0]; - var loc$2 = btwn(start_loc, alias_loc); - return [ - loc$2, - { - TAG: /* DeclareExportDeclaration */27, - _0: { - default: false, - declaration: { - TAG: /* NamedType */4, - _0: [ - alias_loc, - match$1[1] - ] - }, - specifiers: undefined, - source: undefined + ]; + break; + case /* T_CLASS */38 : + var _class = Curry._2(declare_class, env$1, start_loc); + match$2 = [ + _class[0], + { + TAG: /* Class */2, + _0: _class } - } - ]; - } - exit = 1; - } - } else if (match >= 39) { - if (match >= 51) { - if (allow_export_type) { - var match$2 = Curry._1(interface_helper, env$1); - var iface_loc = match$2[0]; - var loc$3 = btwn(start_loc, iface_loc); + ]; + break; + default: + exit$1 = 3; + } + } else { + exit$1 = 3; + } + if (exit$1 === 3) { + var _type$1 = wrap(_type, env$1); + var loc = Curry._2(Parser_env_Peek.semicolon_loc, undefined, env$1); + var end_loc = loc !== undefined ? loc : _type$1[0]; + semicolon(env$1); + match$2 = [ + end_loc, + { + TAG: /* DefaultType */3, + _0: _type$1 + } + ]; + } return [ - loc$3, + btwn(start_loc, match$2[0]), { TAG: /* DeclareExportDeclaration */27, _0: { - default: false, - declaration: { - TAG: /* Interface */5, - _0: [ - iface_loc, - match$2[1] - ] - }, + default: true, + declaration: match$2[1], specifiers: undefined, source: undefined } } ]; - } - exit = 1; - } else { - exit = 1; - } - } else if (match >= 13) { - switch (match) { - case /* T_DEFAULT */34 : - token$4(env$1, /* T_DEFAULT */34); - var match$3 = Curry._2(Parser_env_Peek.token, undefined, env$1); - var match$4; - var exit$1 = 0; - if (typeof match$3 === "number") { - if (match$3 !== 13) { - if (match$3 !== 38) { - exit$1 = 3; - } else { - var _class = Curry._2(declare_class, env$1, start_loc); - match$4 = [ - _class[0], + case /* T_FUNCTION */13 : + case /* T_VAR */22 : + case /* T_CONST */25 : + case /* T_LET */26 : + case /* T_CLASS */38 : + exit = 2; + break; + case /* T_INTERFACE */51 : + if (allow_export_type) { + var match$3 = Curry._1(interface_helper, env$1); + var iface_loc = match$3[0]; + var loc$1 = btwn(start_loc, iface_loc); + return [ + loc$1, { - TAG: /* Class */2, - _0: _class + TAG: /* DeclareExportDeclaration */27, + _0: { + default: false, + declaration: { + TAG: /* Interface */5, + _0: [ + iface_loc, + match$3[1] + ] + }, + specifiers: undefined, + source: undefined + } } ]; - } - } else { - var fn = declare_function(env$1, start_loc); - match$4 = [ - fn[0], - { - TAG: /* Function */1, - _0: fn - } - ]; - } - } else { - exit$1 = 3; - } - if (exit$1 === 3) { - var _type$1 = wrap(_type, env$1); - var loc$4 = Curry._2(Parser_env_Peek.semicolon_loc, undefined, env$1); - var end_loc$1 = loc$4 !== undefined ? loc$4 : _type$1[0]; - semicolon(env$1); - match$4 = [ - end_loc$1, - { - TAG: /* DefaultType */3, - _0: _type$1 - } - ]; - } + } + exit = 1; + break; + case /* T_TYPE */59 : + if (allow_export_type) { + var match$4 = type_alias_helper(env$1); + var alias_loc = match$4[0]; + var loc$2 = btwn(start_loc, alias_loc); return [ - btwn(start_loc, match$4[0]), + loc$2, { TAG: /* DeclareExportDeclaration */27, _0: { - default: true, - declaration: match$4[1], + default: false, + declaration: { + TAG: /* NamedType */4, + _0: [ + alias_loc, + match$4[1] + ] + }, specifiers: undefined, source: undefined } } ]; - case /* T_IF */14 : - case /* T_IN */15 : - case /* T_INSTANCEOF */16 : - case /* T_RETURN */17 : - case /* T_SWITCH */18 : - case /* T_THIS */19 : - case /* T_THROW */20 : - case /* T_TRY */21 : - case /* T_WHILE */23 : - case /* T_WITH */24 : - case /* T_NULL */27 : - case /* T_FALSE */28 : - case /* T_TRUE */29 : - case /* T_BREAK */30 : - case /* T_CASE */31 : - case /* T_CATCH */32 : - case /* T_CONTINUE */33 : - case /* T_DO */35 : - case /* T_FINALLY */36 : - case /* T_FOR */37 : - exit = 1; - break; - case /* T_FUNCTION */13 : - case /* T_VAR */22 : - case /* T_CONST */25 : - case /* T_LET */26 : - case /* T_CLASS */38 : - exit = 2; - break; - - } - } else { - exit = 1; + } + exit = 1; + break; + case /* T_MULT */97 : + var loc$3 = Curry._2(Parser_env_Peek.loc, undefined, env$1); + token$4(env$1, /* T_MULT */97); + var parse_export_star_as = env$1.parse_options.esproposal_export_star_as; + var local_name = Curry._2(Parser_env_Peek.value, undefined, env$1) === "as" ? (contextual(env$1, "as"), parse_export_star_as ? Curry._2(Parse.identifier, undefined, env$1) : (error(env$1, /* UnexpectedTypeDeclaration */7), undefined)) : undefined; + var specifiers = { + TAG: /* ExportBatchSpecifier */1, + _0: loc$3, + _1: local_name + }; + var source = export_source(env$1); + var loc$4 = Curry._2(Parser_env_Peek.semicolon_loc, undefined, env$1); + var end_loc$1 = loc$4 !== undefined ? loc$4 : source[0]; + var source$1 = source; + semicolon(env$1); + return [ + btwn(start_loc, end_loc$1), + { + TAG: /* DeclareExportDeclaration */27, + _0: { + default: false, + declaration: undefined, + specifiers: specifiers, + source: source$1 + } + } + ]; + default: + exit = 1; } } else { exit = 1; @@ -11858,15 +11923,16 @@ function declare_export_declaration(allow_export_typeOpt, env) { switch (exit) { case 1 : var match$5 = Curry._2(Parser_env_Peek.token, undefined, env$1); - if (typeof match$5 === "number") { - if (match$5 !== 51) { - if (match$5 !== 59) { + if (/* tag */typeof match$5 === "number") { + switch (match$5) { + case /* T_INTERFACE */51 : + error(env$1, /* DeclareExportInterface */53); + break; + case /* T_TYPE */59 : + error(env$1, /* DeclareExportType */52); + break; + default: - } else { - error(env$1, /* DeclareExportType */52); - } - } else { - error(env$1, /* DeclareExportInterface */53); } } token$4(env$1, /* T_LCURLY */1); @@ -11901,12 +11967,24 @@ function declare_export_declaration(allow_export_typeOpt, env) { var token$5 = Curry._2(Parser_env_Peek.token, undefined, env$1); var match$7; var exit$2 = 0; - if (typeof token$5 === "number") { - if (token$5 >= 23) { - if (token$5 >= 27) { - if (token$5 !== 38) { + if (/* tag */typeof token$5 === "number") { + switch (token$5) { + case /* T_FUNCTION */13 : + var fn$1 = declare_function(env$1, start_loc); + match$7 = [ + fn$1[0], + { + TAG: /* Function */1, + _0: fn$1 + } + ]; + break; + case /* T_VAR */22 : + case /* T_CONST */25 : + case /* T_LET */26 : exit$2 = 3; - } else { + break; + case /* T_CLASS */38 : var _class$1 = Curry._2(declare_class, env$1, start_loc); match$7 = [ _class$1[0], @@ -11915,27 +11993,8 @@ function declare_export_declaration(allow_export_typeOpt, env) { _0: _class$1 } ]; - } - } else { - exit$2 = token$5 >= 25 ? 4 : 3; - } - } else if (token$5 !== 13) { - exit$2 = token$5 >= 22 ? 4 : 3; - } else { - var fn$1 = declare_function(env$1, start_loc); - match$7 = [ - fn$1[0], - { - TAG: /* Function */1, - _0: fn$1 - } - ]; - } - } else { - exit$2 = 3; - } - switch (exit$2) { - case 3 : + break; + default: throw { RE_EXN_ID: "Assert_failure", _1: [ @@ -11945,28 +12004,39 @@ function declare_export_declaration(allow_export_typeOpt, env) { ], Error: new Error() }; - case 4 : - if (typeof token$5 === "number") { - if (token$5 !== 25) { - if (token$5 !== 26) { - - } else { - error(env$1, /* DeclareExportLet */50); - } - } else { + } + } else { + throw { + RE_EXN_ID: "Assert_failure", + _1: [ + "parser_flow.ml", + 3480, + 17 + ], + Error: new Error() + }; + } + if (exit$2 === 3) { + if (/* tag */typeof token$5 === "number") { + switch (token$5) { + case /* T_CONST */25 : error(env$1, /* DeclareExportConst */51); - } - } - var $$var = declare_var(env$1, start_loc); - match$7 = [ - $$var[0], - { - TAG: /* Variable */0, - _0: $$var - } - ]; - break; - + break; + case /* T_LET */26 : + error(env$1, /* DeclareExportLet */50); + break; + default: + + } + } + var $$var = declare_var(env$1, start_loc); + match$7 = [ + $$var[0], + { + TAG: /* Variable */0, + _0: $$var + } + ]; } return [ btwn(start_loc, match$7[0]), @@ -11997,7 +12067,10 @@ function supers(env, _acc) { tl: acc }; var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (match !== 8) { + if (/* tag */typeof match !== "number") { + return List.rev(acc$1); + } + if (match !== /* T_COMMA */8) { return List.rev(acc$1); } token$4(env, /* T_COMMA */8); @@ -12036,7 +12109,10 @@ function supers$1(env, _acc) { tl: acc }; var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (match !== 8) { + if (/* tag */typeof match !== "number") { + return List.rev(acc$1); + } + if (match !== /* T_COMMA */8) { return List.rev(acc$1); } token$4(env, /* T_COMMA */8); @@ -12073,20 +12149,17 @@ function module_items(env, _module_kind, _acc) { var acc = _acc; var module_kind = _module_kind; var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (typeof match === "number") { - if (match === 2) { - return [ - module_kind, - List.rev(acc) - ]; - } - if (match === 105) { - return [ - module_kind, - List.rev(acc) - ]; + if (/* tag */typeof match === "number") { + switch (match) { + case /* T_RCURLY */2 : + case /* T_EOF */105 : + return [ + module_kind, + List.rev(acc) + ]; + default: + } - } var stmt = declare(true, env); var stmt$1 = stmt[1]; @@ -12094,7 +12167,7 @@ function module_items(env, _module_kind, _acc) { var module_kind$1; if (module_kind !== undefined) { if (module_kind.TAG === /* CommonJS */0) { - if (typeof stmt$1 === "number") { + if (/* tag */typeof stmt$1 === "number") { module_kind$1 = module_kind; } else { switch (stmt$1.TAG | 0) { @@ -12121,13 +12194,13 @@ function module_items(env, _module_kind, _acc) { module_kind$1 = module_kind; } } - } else if (typeof stmt$1 === "number" || stmt$1.TAG !== /* DeclareModuleExports */26) { + } else if (/* tag */typeof stmt$1 === "number" || stmt$1.TAG !== /* DeclareModuleExports */26) { module_kind$1 = module_kind; } else { error(env, /* AmbiguousDeclareModuleKind */61); module_kind$1 = module_kind; } - } else if (typeof stmt$1 === "number") { + } else if (/* tag */typeof stmt$1 === "number") { module_kind$1 = module_kind; } else { switch (stmt$1.TAG | 0) { @@ -12277,31 +12350,43 @@ function case_list(env, _param) { var acc = param[1]; var seen_default = param[0]; var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (typeof match === "number") { - if (match === 2) { - return List.rev(acc); - } - if (match === 105) { - return List.rev(acc); + if (/* tag */typeof match === "number") { + switch (match) { + case /* T_RCURLY */2 : + case /* T_EOF */105 : + return List.rev(acc); + default: + } - } var start_loc = Curry._2(Parser_env_Peek.loc, undefined, env); var match$1 = Curry._2(Parser_env_Peek.token, undefined, env); - var test = match$1 === 34 ? (seen_default ? error(env, /* MultipleDefaultsInSwitch */19) : undefined, token$4(env, /* T_DEFAULT */34), undefined) : (token$4(env, /* T_CASE */31), Curry._1(Parse.expression, env)); + var test; + if (/* tag */typeof match$1 === "number" && match$1 === /* T_DEFAULT */34) { + if (seen_default) { + error(env, /* MultipleDefaultsInSwitch */19); + } + token$4(env, /* T_DEFAULT */34); + test = undefined; + } else { + token$4(env, /* T_CASE */31); + test = Curry._1(Parse.expression, env); + } var seen_default$1 = seen_default || test === undefined; var end_loc = Curry._2(Parser_env_Peek.loc, undefined, env); token$4(env, /* T_COLON */77); var term_fn = function (param) { - if (typeof param === "number") { - if (param > 31 || param < 2) { - return param === 34; - } else { - return param > 30 || param < 3; - } - } else { + if (/* tag */typeof param !== "number") { return false; } + switch (param) { + case /* T_RCURLY */2 : + case /* T_CASE */31 : + case /* T_DEFAULT */34 : + return true; + default: + return false; + } }; var consequent = Curry._2(Parse.statement_list, term_fn, with_in_switch(true, env)); var match$2 = List.rev(consequent); @@ -12344,7 +12429,7 @@ function var_or_const(env) { function source(env) { contextual(env, "from"); var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (typeof match !== "number" && match.TAG === /* T_STRING */1) { + if (/* tag */typeof match !== "number" && match.TAG === /* T_STRING */1) { var match$1 = match._0; var octal = match$1[3]; var raw = match$1[2]; @@ -12396,14 +12481,14 @@ function specifier_list(env, _acc) { while(true) { var acc = _acc; var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (typeof match === "number") { - if (match === 2) { - return List.rev(acc); - } - if (match === 105) { - return List.rev(acc); + if (/* tag */typeof match === "number") { + switch (match) { + case /* T_RCURLY */2 : + case /* T_EOF */105 : + return List.rev(acc); + default: + } - } var match$1 = Curry._1(Parse.identifier_or_reserved_keyword, env); var err = match$1[1]; @@ -12445,7 +12530,7 @@ function specifier_list(env, _acc) { function named_or_namespace_specifier(env) { var start_loc = Curry._2(Parser_env_Peek.loc, undefined, env); var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (match === 97) { + if (/* tag */typeof match === "number" && match === /* T_MULT */97) { token$4(env, /* T_MULT */97); contextual(env, "as"); var id = Curry._2(Parse.identifier, undefined, env); @@ -12469,7 +12554,7 @@ function named_or_namespace_specifier(env) { function from_expr(env, param) { var expr = param[1]; var loc = param[0]; - if (typeof expr !== "number") { + if (/* tag */typeof expr !== "number") { switch (expr.TAG | 0) { case /* Array */0 : var param$1 = [ @@ -12581,7 +12666,7 @@ function from_expr(env, param) { ]; case /* Assignment */7 : var match = expr._0; - if (match.operator === 0) { + if (match.operator === /* Assign */0) { return [ loc, { @@ -12660,13 +12745,17 @@ function _object$2(restricted_error) { } var match$1 = Curry._2(Parser_env_Peek.token, undefined, env); var prop; - if (match$1 === 77) { + var exit = 0; + if (/* tag */typeof match$1 === "number" && match$1 === /* T_COLON */77) { token$4(env, /* T_COLON */77); prop = [ pattern$1(env, restricted_error), false ]; } else { + exit = 1; + } + if (exit === 1) { switch (key.TAG | 0) { case /* Identifier */1 : var id = key._0; @@ -12698,7 +12787,7 @@ function _object$2(restricted_error) { var pattern$3 = prop[0]; var match$2 = Curry._2(Parser_env_Peek.token, undefined, env); var pattern$4; - if (match$2 === 75) { + if (/* tag */typeof match$2 === "number" && match$2 === /* T_ASSIGN */75) { token$4(env, /* T_ASSIGN */75); var $$default = Curry._1(Parse.assignment, env); var loc$1 = btwn(pattern$3[0], $$default[0]); @@ -12732,14 +12821,14 @@ function _object$2(restricted_error) { while(true) { var acc = _acc; var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (typeof match === "number") { - if (match === 2) { - return List.rev(acc); - } - if (match === 105) { - return List.rev(acc); + if (/* tag */typeof match === "number") { + switch (match) { + case /* T_RCURLY */2 : + case /* T_EOF */105 : + return List.rev(acc); + default: + } - } var prop = property(env); if (prop !== undefined) { @@ -12792,59 +12881,45 @@ function _array(restricted_error) { while(true) { var acc = _acc; var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (typeof match === "number") { - if (match === 105) { - return List.rev(acc); - } - if (match < 12) { - switch (match) { - case /* T_RBRACKET */6 : - return List.rev(acc); - case /* T_COMMA */8 : - token$4(env, /* T_COMMA */8); - _acc = { - hd: undefined, - tl: acc - }; - continue ; - case /* T_IDENTIFIER */0 : - case /* T_LCURLY */1 : - case /* T_RCURLY */2 : - case /* T_LPAREN */3 : - case /* T_RPAREN */4 : - case /* T_LBRACKET */5 : - case /* T_SEMICOLON */7 : - case /* T_PERIOD */9 : - case /* T_ARROW */10 : - break; - case /* T_ELLIPSIS */11 : - var start_loc = Curry._2(Parser_env_Peek.loc, undefined, env); - token$4(env, /* T_ELLIPSIS */11); - var argument = pattern$1(env, restricted_error); - var loc = btwn(start_loc, argument[0]); - var element = { - TAG: /* Spread */1, - _0: [ - loc, - { - argument: argument - } - ] - }; - _acc = { - hd: element, - tl: acc - }; - continue ; + if (/* tag */typeof match === "number") { + switch (match) { + case /* T_COMMA */8 : + token$4(env, /* T_COMMA */8); + _acc = { + hd: undefined, + tl: acc + }; + continue ; + case /* T_ELLIPSIS */11 : + var start_loc = Curry._2(Parser_env_Peek.loc, undefined, env); + token$4(env, /* T_ELLIPSIS */11); + var argument = pattern$1(env, restricted_error); + var loc = btwn(start_loc, argument[0]); + var element = { + TAG: /* Spread */1, + _0: [ + loc, + { + argument: argument + } + ] + }; + _acc = { + hd: element, + tl: acc + }; + continue ; + case /* T_RBRACKET */6 : + case /* T_EOF */105 : + return List.rev(acc); + default: - } } - } var pattern$2 = pattern$1(env, restricted_error); var match$1 = Curry._2(Parser_env_Peek.token, undefined, env); var pattern$3; - if (match$1 === 75) { + if (/* tag */typeof match$1 === "number" && match$1 === /* T_ASSIGN */75) { token$4(env, /* T_ASSIGN */75); var $$default = Curry._1(Parse.expression, env); var loc$1 = btwn(pattern$2[0], $$default[0]); @@ -12909,14 +12984,15 @@ function _array(restricted_error) { function pattern$1(env, restricted_error) { var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (typeof match === "number") { - if (match === 1) { - return _object$2(restricted_error)(env); - } - if (match === 5) { - return _array(restricted_error)(env); + if (/* tag */typeof match === "number") { + switch (match) { + case /* T_LCURLY */1 : + return _object$2(restricted_error)(env); + case /* T_LBRACKET */5 : + return _array(restricted_error)(env); + default: + } - } var id = Curry._2(Parse.identifier_with_type, env, restricted_error); return [ @@ -12989,7 +13065,10 @@ function member_expression(env, _member) { while(true) { var member = _member; var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (match !== 9) { + if (/* tag */typeof match !== "number") { + return member; + } + if (match !== /* T_PERIOD */9) { return member; } var _object = { @@ -13015,52 +13094,53 @@ function member_expression(env, _member) { function name(env) { var name$1 = identifier$1(env); var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (typeof match !== "number") { + if (/* tag */typeof match !== "number") { return { TAG: /* Identifier */0, _0: name$1 }; } - if (match !== 9) { - if (match !== 77) { + switch (match) { + case /* T_PERIOD */9 : + var _object = { + TAG: /* Identifier */0, + _0: name$1 + }; + token$4(env, /* T_PERIOD */9); + var property = identifier$1(env); + var loc = btwn(name$1[0], property[0]); + var member_1 = { + _object: _object, + property: property + }; + var member = [ + loc, + member_1 + ]; + return { + TAG: /* MemberExpression */2, + _0: member_expression(env, member) + }; + case /* T_COLON */77 : + token$4(env, /* T_COLON */77); + var name$2 = identifier$1(env); + var loc$1 = btwn(name$1[0], name$2[0]); + return { + TAG: /* NamespacedName */1, + _0: [ + loc$1, + { + namespace: name$1, + name: name$2 + } + ] + }; + default: return { TAG: /* Identifier */0, _0: name$1 }; - } - token$4(env, /* T_COLON */77); - var name$2 = identifier$1(env); - var loc = btwn(name$1[0], name$2[0]); - return { - TAG: /* NamespacedName */1, - _0: [ - loc, - { - namespace: name$1, - name: name$2 - } - ] - }; } - var _object = { - TAG: /* Identifier */0, - _0: name$1 - }; - token$4(env, /* T_PERIOD */9); - var property = identifier$1(env); - var loc$1 = btwn(name$1[0], property[0]); - var member_1 = { - _object: _object, - property: property - }; - var member = [ - loc$1, - member_1 - ]; - return { - TAG: /* MemberExpression */2, - _0: member_expression(env, member) - }; } function attribute(env) { @@ -13098,7 +13178,7 @@ function attribute(env) { token$4(env, /* T_ASSIGN */75); var token$5 = Curry._2(Parser_env_Peek.token, undefined, env); var exit = 0; - if (typeof token$5 === "number") { + if (/* tag */typeof token$5 === "number") { if (token$5 === /* T_LCURLY */1) { var match$2 = expression_container(env); var expression_container$1 = match$2[1]; @@ -13178,30 +13258,24 @@ function attributes(env, _acc) { while(true) { var acc = _acc; var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (typeof match === "number") { - if (match >= 91) { - if (match === 96) { - return List.rev(acc); - } - if (match === 105) { - return List.rev(acc); - } - - } else if (match !== 1) { - if (match >= 90) { - return List.rev(acc); - } - - } else { - var attribute$1 = { - TAG: /* SpreadAttribute */1, - _0: spread_attribute(env) - }; - _acc = { - hd: attribute$1, - tl: acc - }; - continue ; + if (/* tag */typeof match === "number") { + switch (match) { + case /* T_LCURLY */1 : + var attribute$1 = { + TAG: /* SpreadAttribute */1, + _0: spread_attribute(env) + }; + _acc = { + hd: attribute$1, + tl: acc + }; + continue ; + case /* T_GREATER_THAN */90 : + case /* T_DIV */96 : + case /* T_EOF */105 : + return List.rev(acc); + default: + } } var attribute$2 = { @@ -13252,7 +13326,7 @@ function closing_element_without_lt(env, start_loc) { function child(env) { var token$5 = Curry._2(Parser_env_Peek.token, undefined, env); - if (typeof token$5 === "number") { + if (/* tag */typeof token$5 === "number") { if (token$5 === /* T_LCURLY */1) { var expression_container$1 = expression_container(env); return [ @@ -13300,66 +13374,76 @@ function element_or_closing(env) { var start_loc = Curry._2(Parser_env_Peek.loc, undefined, env); token$4(env, /* T_LESS_THAN */89); var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (typeof match === "number" && !(match !== 96 && match !== 105)) { - return { - TAG: /* Closing */0, - _0: closing_element_without_lt(env, start_loc) - }; - } else { + if (/* tag */typeof match !== "number") { return { TAG: /* ChildElement */1, _0: Curry._2(element_without_lt, env, start_loc) }; } + switch (match) { + case /* T_DIV */96 : + case /* T_EOF */105 : + return { + TAG: /* Closing */0, + _0: closing_element_without_lt(env, start_loc) + }; + default: + return { + TAG: /* ChildElement */1, + _0: Curry._2(element_without_lt, env, start_loc) + }; + } } function children_and_closing(env, _acc) { while(true) { var acc = _acc; var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (typeof match === "number") { - if (match !== 89) { - if (match !== 105) { + if (/* tag */typeof match === "number") { + switch (match) { + case /* T_LESS_THAN */89 : + var closingElement = element_or_closing(env); + if (closingElement.TAG === /* Closing */0) { + return [ + List.rev(acc), + closingElement._0 + ]; + } + var element = closingElement._0; + var element_0 = element[0]; + var element_1 = { + TAG: /* Element */0, + _0: element[1] + }; + var element$1 = [ + element_0, + element_1 + ]; + _acc = { + hd: element$1, + tl: acc + }; + continue ; + case /* T_EOF */105 : + error_unexpected(env); + return [ + List.rev(acc), + undefined + ]; + default: _acc = { hd: child(env), tl: acc }; continue ; - } - error_unexpected(env); - return [ - List.rev(acc), - undefined - ]; } - var closingElement = element_or_closing(env); - if (closingElement.TAG === /* Closing */0) { - return [ - List.rev(acc), - closingElement._0 - ]; - } - var element = closingElement._0; - var element_0 = element[0]; - var element_1 = { - TAG: /* Element */0, - _0: element[1] - }; - var element$1 = [ - element_0, - element_1 - ]; + } else { _acc = { - hd: element$1, + hd: child(env), tl: acc }; continue ; } - _acc = { - hd: child(env), - tl: acc - }; - continue ; }; } @@ -13417,411 +13501,364 @@ function statement(env) { while(true) { var match = Curry._2(Parser_env_Peek.token, undefined, env); var exit = 0; - if (typeof match === "number") { - if (match !== 105) { - if (match >= 58) { - exit = 2; - } else { - switch (match) { - case /* T_LCURLY */1 : - var match$1 = Curry._1(Parse.block_body, env); - return [ - match$1[0], - { - TAG: /* Block */0, - _0: match$1[1] - } - ]; - case /* T_SEMICOLON */7 : - var loc = Curry._2(Parser_env_Peek.loc, undefined, env); - token$4(env, /* T_SEMICOLON */7); - return [ - loc, - /* Empty */0 - ]; - case /* T_IF */14 : - return _if(env); - case /* T_RETURN */17 : - if (!env.in_function) { - error(env, /* IllegalReturn */23); - } - var start_loc = Curry._2(Parser_env_Peek.loc, undefined, env); - token$4(env, /* T_RETURN */17); - var argument = Curry._2(Parser_env_Peek.token, undefined, env) === /* T_SEMICOLON */7 || Curry._1(Parser_env_Peek.is_implicit_semicolon, env) ? undefined : Curry._1(Parse.expression, env); - var loc$1 = Curry._2(Parser_env_Peek.semicolon_loc, undefined, env); - var end_loc = loc$1 !== undefined ? loc$1 : ( - argument !== undefined ? argument[0] : start_loc - ); - semicolon(env); - return [ - btwn(start_loc, end_loc), - { - TAG: /* Return */9, - _0: { - argument: argument - } - } - ]; - case /* T_SWITCH */18 : - var start_loc$1 = Curry._2(Parser_env_Peek.loc, undefined, env); - token$4(env, /* T_SWITCH */18); - token$4(env, /* T_LPAREN */3); - var discriminant = Curry._1(Parse.expression, env); - token$4(env, /* T_RPAREN */4); - token$4(env, /* T_LCURLY */1); - var cases = case_list(env, [ - false, - /* [] */0 - ]); - var end_loc$1 = Curry._2(Parser_env_Peek.loc, undefined, env); - token$4(env, /* T_RCURLY */2); - return [ - btwn(start_loc$1, end_loc$1), - { - TAG: /* Switch */8, - _0: { - discriminant: discriminant, - cases: cases, - lexical: false - } - } - ]; - case /* T_THROW */20 : - var start_loc$2 = Curry._2(Parser_env_Peek.loc, undefined, env); - token$4(env, /* T_THROW */20); - if (Curry._1(Parser_env_Peek.is_line_terminator, env)) { - error_at(env, [ - start_loc$2, - /* NewlineAfterThrow */11 - ]); - } - var argument$1 = Curry._1(Parse.expression, env); - var loc$2 = Curry._2(Parser_env_Peek.semicolon_loc, undefined, env); - var end_loc$2 = loc$2 !== undefined ? loc$2 : argument$1[0]; - semicolon(env); - return [ - btwn(start_loc$2, end_loc$2), - { - TAG: /* Throw */10, - _0: { - argument: argument$1 - } - } - ]; - case /* T_TRY */21 : - var start_loc$3 = Curry._2(Parser_env_Peek.loc, undefined, env); - token$4(env, /* T_TRY */21); - var block = Curry._1(Parse.block_body, env); - var match$2 = Curry._2(Parser_env_Peek.token, undefined, env); - var handler; - if (match$2 === 32) { - var start_loc$4 = Curry._2(Parser_env_Peek.loc, undefined, env); - token$4(env, /* T_CATCH */32); - token$4(env, /* T_LPAREN */3); - var id = Curry._2(Parse.identifier, /* StrictCatchVariable */26, env); - var param_0 = id[0]; - var param_1 = { - TAG: /* Identifier */3, - _0: id - }; - var param = [ - param_0, - param_1 + if (/* tag */typeof match === "number") { + switch (match) { + case /* T_LCURLY */1 : + var match$1 = Curry._1(Parse.block_body, env); + return [ + match$1[0], + { + TAG: /* Block */0, + _0: match$1[1] + } ]; - token$4(env, /* T_RPAREN */4); - var body = Curry._1(Parse.block_body, env); - var loc$3 = btwn(start_loc$4, body[0]); - handler = [ - loc$3, + case /* T_SEMICOLON */7 : + var loc = Curry._2(Parser_env_Peek.loc, undefined, env); + token$4(env, /* T_SEMICOLON */7); + return [ + loc, + /* Empty */0 + ]; + case /* T_IF */14 : + return _if(env); + case /* T_RETURN */17 : + if (!env.in_function) { + error(env, /* IllegalReturn */23); + } + var start_loc = Curry._2(Parser_env_Peek.loc, undefined, env); + token$4(env, /* T_RETURN */17); + var argument = Curry._2(Parser_env_Peek.token, undefined, env) === /* T_SEMICOLON */7 || Curry._1(Parser_env_Peek.is_implicit_semicolon, env) ? undefined : Curry._1(Parse.expression, env); + var loc$1 = Curry._2(Parser_env_Peek.semicolon_loc, undefined, env); + var end_loc = loc$1 !== undefined ? loc$1 : ( + argument !== undefined ? argument[0] : start_loc + ); + semicolon(env); + return [ + btwn(start_loc, end_loc), { - param: param, - guard: undefined, - body: body + TAG: /* Return */9, + _0: { + argument: argument + } } ]; - } else { - handler = undefined; - } - var match$3 = Curry._2(Parser_env_Peek.token, undefined, env); - var finalizer = match$3 === 36 ? (token$4(env, /* T_FINALLY */36), Curry._1(Parse.block_body, env)) : undefined; - var end_loc$3 = finalizer !== undefined ? finalizer[0] : ( - handler !== undefined ? handler[0] : (error_at(env, [ - block[0], - /* NoCatchOrFinally */20 - ]), block[0]) - ); - return [ - btwn(start_loc$3, end_loc$3), - { - TAG: /* Try */11, - _0: { - block: block, - handler: handler, - guardedHandlers: /* [] */0, - finalizer: finalizer - } - } - ]; - case /* T_VAR */22 : - return var_or_const(env); - case /* T_WHILE */23 : - var start_loc$5 = Curry._2(Parser_env_Peek.loc, undefined, env); - token$4(env, /* T_WHILE */23); - token$4(env, /* T_LPAREN */3); - var test = Curry._1(Parse.expression, env); - token$4(env, /* T_RPAREN */4); - var body$1 = Curry._1(Parse.statement, with_in_loop(true, env)); - return [ - btwn(start_loc$5, body$1[0]), - { - TAG: /* While */12, - _0: { - test: test, - body: body$1 - } - } - ]; - case /* T_WITH */24 : - var start_loc$6 = Curry._2(Parser_env_Peek.loc, undefined, env); - token$4(env, /* T_WITH */24); - token$4(env, /* T_LPAREN */3); - var _object = Curry._1(Parse.expression, env); - token$4(env, /* T_RPAREN */4); - var body$2 = Curry._1(Parse.statement, env); - var loc$4 = btwn(start_loc$6, body$2[0]); - strict_error_at(env, [ - loc$4, - /* StrictModeWith */25 - ]); - return [ - loc$4, - { - TAG: /* With */6, - _0: { - _object: _object, - body: body$2 - } - } - ]; - case /* T_BREAK */30 : - var start_loc$7 = Curry._2(Parser_env_Peek.loc, undefined, env); - token$4(env, /* T_BREAK */30); - var label; - if (Curry._2(Parser_env_Peek.token, undefined, env) === /* T_SEMICOLON */7 || Curry._1(Parser_env_Peek.is_implicit_semicolon, env)) { - label = undefined; - } else { - var label$1 = Curry._2(Parse.identifier, undefined, env); - var name = label$1[1].name; - if (!mem$1(name, env.labels)) { - error(env, { - TAG: /* UnknownLabel */4, - _0: name - }); - } - label = label$1; - } - var loc$5 = Curry._2(Parser_env_Peek.semicolon_loc, undefined, env); - var end_loc$4 = loc$5 !== undefined ? loc$5 : ( - label !== undefined ? label[0] : start_loc$7 - ); - var loc$6 = btwn(start_loc$7, end_loc$4); - if (label === undefined && !(env.in_loop || env.in_switch)) { - error_at(env, [ - loc$6, - /* IllegalBreak */22 - ]); - } - semicolon(env); - return [ - loc$6, - { - TAG: /* Break */4, - _0: { - label: label - } - } - ]; - case /* T_CONTINUE */33 : - var start_loc$8 = Curry._2(Parser_env_Peek.loc, undefined, env); - token$4(env, /* T_CONTINUE */33); - var label$2; - if (Curry._2(Parser_env_Peek.token, undefined, env) === /* T_SEMICOLON */7 || Curry._1(Parser_env_Peek.is_implicit_semicolon, env)) { - label$2 = undefined; - } else { - var label$3 = Curry._2(Parse.identifier, undefined, env); - var name$1 = label$3[1].name; - if (!mem$1(name$1, env.labels)) { - error(env, { - TAG: /* UnknownLabel */4, - _0: name$1 - }); - } - label$2 = label$3; - } - var loc$7 = Curry._2(Parser_env_Peek.semicolon_loc, undefined, env); - var end_loc$5 = loc$7 !== undefined ? loc$7 : ( - label$2 !== undefined ? label$2[0] : start_loc$8 - ); - var loc$8 = btwn(start_loc$8, end_loc$5); - if (!env.in_loop) { - error_at(env, [ - loc$8, - /* IllegalContinue */21 - ]); - } - semicolon(env); - return [ - loc$8, - { - TAG: /* Continue */5, - _0: { - label: label$2 - } - } - ]; - case /* T_DO */35 : - var start_loc$9 = Curry._2(Parser_env_Peek.loc, undefined, env); - token$4(env, /* T_DO */35); - var body$3 = Curry._1(Parse.statement, with_in_loop(true, env)); - token$4(env, /* T_WHILE */23); - token$4(env, /* T_LPAREN */3); - var test$1 = Curry._1(Parse.expression, env); - var end_loc$6 = Curry._2(Parser_env_Peek.loc, undefined, env); - token$4(env, /* T_RPAREN */4); - var loc$9 = Curry._2(Parser_env_Peek.semicolon_loc, undefined, env); - var end_loc$7 = loc$9 !== undefined ? loc$9 : end_loc$6; - if (Curry._2(Parser_env_Peek.token, undefined, env) === /* T_SEMICOLON */7) { - semicolon(env); + case /* T_SWITCH */18 : + var start_loc$1 = Curry._2(Parser_env_Peek.loc, undefined, env); + token$4(env, /* T_SWITCH */18); + token$4(env, /* T_LPAREN */3); + var discriminant = Curry._1(Parse.expression, env); + token$4(env, /* T_RPAREN */4); + token$4(env, /* T_LCURLY */1); + var cases = case_list(env, [ + false, + /* [] */0 + ]); + var end_loc$1 = Curry._2(Parser_env_Peek.loc, undefined, env); + token$4(env, /* T_RCURLY */2); + return [ + btwn(start_loc$1, end_loc$1), + { + TAG: /* Switch */8, + _0: { + discriminant: discriminant, + cases: cases, + lexical: false + } + } + ]; + case /* T_THROW */20 : + var start_loc$2 = Curry._2(Parser_env_Peek.loc, undefined, env); + token$4(env, /* T_THROW */20); + if (Curry._1(Parser_env_Peek.is_line_terminator, env)) { + error_at(env, [ + start_loc$2, + /* NewlineAfterThrow */11 + ]); + } + var argument$1 = Curry._1(Parse.expression, env); + var loc$2 = Curry._2(Parser_env_Peek.semicolon_loc, undefined, env); + var end_loc$2 = loc$2 !== undefined ? loc$2 : argument$1[0]; + semicolon(env); + return [ + btwn(start_loc$2, end_loc$2), + { + TAG: /* Throw */10, + _0: { + argument: argument$1 + } + } + ]; + case /* T_TRY */21 : + var start_loc$3 = Curry._2(Parser_env_Peek.loc, undefined, env); + token$4(env, /* T_TRY */21); + var block = Curry._1(Parse.block_body, env); + var match$2 = Curry._2(Parser_env_Peek.token, undefined, env); + var handler; + if (/* tag */typeof match$2 === "number" && match$2 === /* T_CATCH */32) { + var start_loc$4 = Curry._2(Parser_env_Peek.loc, undefined, env); + token$4(env, /* T_CATCH */32); + token$4(env, /* T_LPAREN */3); + var id = Curry._2(Parse.identifier, /* StrictCatchVariable */26, env); + var param_0 = id[0]; + var param_1 = { + TAG: /* Identifier */3, + _0: id + }; + var param = [ + param_0, + param_1 + ]; + token$4(env, /* T_RPAREN */4); + var body = Curry._1(Parse.block_body, env); + var loc$3 = btwn(start_loc$4, body[0]); + handler = [ + loc$3, + { + param: param, + guard: undefined, + body: body } - return [ - btwn(start_loc$9, end_loc$7), - { - TAG: /* DoWhile */13, - _0: { - body: body$3, - test: test$1 - } - } - ]; - case /* T_FOR */37 : - var start_loc$10 = Curry._2(Parser_env_Peek.loc, undefined, env); - token$4(env, /* T_FOR */37); - token$4(env, /* T_LPAREN */3); - var match$4 = Curry._2(Parser_env_Peek.token, undefined, env); - var match$5; - var exit$1 = 0; - if (typeof match$4 === "number") { - if (match$4 >= 22) { - if (match$4 >= 27) { - exit$1 = 1; - } else { - switch (match$4) { - case /* T_VAR */22 : - var match$6 = declarations(/* T_VAR */22, /* Var */0, with_no_in(true, env)); - match$5 = [ - { - TAG: /* InitDeclaration */0, - _0: match$6[0] - }, - match$6[1] - ]; - break; - case /* T_WHILE */23 : - case /* T_WITH */24 : - exit$1 = 1; - break; - case /* T_CONST */25 : - var match$7 = $$const(with_no_in(true, env)); - match$5 = [ - { - TAG: /* InitDeclaration */0, - _0: match$7[0] - }, - match$7[1] - ]; - break; - case /* T_LET */26 : - var match$8 = _let(with_no_in(true, env)); - match$5 = [ - { - TAG: /* InitDeclaration */0, - _0: match$8[0] - }, - match$8[1] - ]; - break; - + ]; + } else { + handler = undefined; + } + var match$3 = Curry._2(Parser_env_Peek.token, undefined, env); + var finalizer; + if (/* tag */typeof match$3 === "number" && match$3 === /* T_FINALLY */36) { + token$4(env, /* T_FINALLY */36); + finalizer = Curry._1(Parse.block_body, env); + } else { + finalizer = undefined; + } + var end_loc$3 = finalizer !== undefined ? finalizer[0] : ( + handler !== undefined ? handler[0] : (error_at(env, [ + block[0], + /* NoCatchOrFinally */20 + ]), block[0]) + ); + return [ + btwn(start_loc$3, end_loc$3), + { + TAG: /* Try */11, + _0: { + block: block, + handler: handler, + guardedHandlers: /* [] */0, + finalizer: finalizer } } - } else if (match$4 !== 7) { - exit$1 = 1; - } else { + ]; + case /* T_VAR */22 : + return var_or_const(env); + case /* T_WHILE */23 : + var start_loc$5 = Curry._2(Parser_env_Peek.loc, undefined, env); + token$4(env, /* T_WHILE */23); + token$4(env, /* T_LPAREN */3); + var test = Curry._1(Parse.expression, env); + token$4(env, /* T_RPAREN */4); + var body$1 = Curry._1(Parse.statement, with_in_loop(true, env)); + return [ + btwn(start_loc$5, body$1[0]), + { + TAG: /* While */12, + _0: { + test: test, + body: body$1 + } + } + ]; + case /* T_WITH */24 : + var start_loc$6 = Curry._2(Parser_env_Peek.loc, undefined, env); + token$4(env, /* T_WITH */24); + token$4(env, /* T_LPAREN */3); + var _object = Curry._1(Parse.expression, env); + token$4(env, /* T_RPAREN */4); + var body$2 = Curry._1(Parse.statement, env); + var loc$4 = btwn(start_loc$6, body$2[0]); + strict_error_at(env, [ + loc$4, + /* StrictModeWith */25 + ]); + return [ + loc$4, + { + TAG: /* With */6, + _0: { + _object: _object, + body: body$2 + } + } + ]; + case /* T_BREAK */30 : + var start_loc$7 = Curry._2(Parser_env_Peek.loc, undefined, env); + token$4(env, /* T_BREAK */30); + var label; + if (Curry._2(Parser_env_Peek.token, undefined, env) === /* T_SEMICOLON */7 || Curry._1(Parser_env_Peek.is_implicit_semicolon, env)) { + label = undefined; + } else { + var label$1 = Curry._2(Parse.identifier, undefined, env); + var name = label$1[1].name; + if (!mem$1(name, env.labels)) { + error(env, { + TAG: /* UnknownLabel */4, + _0: name + }); + } + label = label$1; + } + var loc$5 = Curry._2(Parser_env_Peek.semicolon_loc, undefined, env); + var end_loc$4 = loc$5 !== undefined ? loc$5 : ( + label !== undefined ? label[0] : start_loc$7 + ); + var loc$6 = btwn(start_loc$7, end_loc$4); + if (label === undefined && !(env.in_loop || env.in_switch)) { + error_at(env, [ + loc$6, + /* IllegalBreak */22 + ]); + } + semicolon(env); + return [ + loc$6, + { + TAG: /* Break */4, + _0: { + label: label + } + } + ]; + case /* T_CONTINUE */33 : + var start_loc$8 = Curry._2(Parser_env_Peek.loc, undefined, env); + token$4(env, /* T_CONTINUE */33); + var label$2; + if (Curry._2(Parser_env_Peek.token, undefined, env) === /* T_SEMICOLON */7 || Curry._1(Parser_env_Peek.is_implicit_semicolon, env)) { + label$2 = undefined; + } else { + var label$3 = Curry._2(Parse.identifier, undefined, env); + var name$1 = label$3[1].name; + if (!mem$1(name$1, env.labels)) { + error(env, { + TAG: /* UnknownLabel */4, + _0: name$1 + }); + } + label$2 = label$3; + } + var loc$7 = Curry._2(Parser_env_Peek.semicolon_loc, undefined, env); + var end_loc$5 = loc$7 !== undefined ? loc$7 : ( + label$2 !== undefined ? label$2[0] : start_loc$8 + ); + var loc$8 = btwn(start_loc$8, end_loc$5); + if (!env.in_loop) { + error_at(env, [ + loc$8, + /* IllegalContinue */21 + ]); + } + semicolon(env); + return [ + loc$8, + { + TAG: /* Continue */5, + _0: { + label: label$2 + } + } + ]; + case /* T_DO */35 : + var start_loc$9 = Curry._2(Parser_env_Peek.loc, undefined, env); + token$4(env, /* T_DO */35); + var body$3 = Curry._1(Parse.statement, with_in_loop(true, env)); + token$4(env, /* T_WHILE */23); + token$4(env, /* T_LPAREN */3); + var test$1 = Curry._1(Parse.expression, env); + var end_loc$6 = Curry._2(Parser_env_Peek.loc, undefined, env); + token$4(env, /* T_RPAREN */4); + var loc$9 = Curry._2(Parser_env_Peek.semicolon_loc, undefined, env); + var end_loc$7 = loc$9 !== undefined ? loc$9 : end_loc$6; + if (Curry._2(Parser_env_Peek.token, undefined, env) === /* T_SEMICOLON */7) { + semicolon(env); + } + return [ + btwn(start_loc$9, end_loc$7), + { + TAG: /* DoWhile */13, + _0: { + body: body$3, + test: test$1 + } + } + ]; + case /* T_FOR */37 : + var start_loc$10 = Curry._2(Parser_env_Peek.loc, undefined, env); + token$4(env, /* T_FOR */37); + token$4(env, /* T_LPAREN */3); + var match$4 = Curry._2(Parser_env_Peek.token, undefined, env); + var match$5; + var exit$1 = 0; + if (/* tag */typeof match$4 === "number") { + switch (match$4) { + case /* T_SEMICOLON */7 : match$5 = [ undefined, /* [] */0 ]; - } - } else { + break; + case /* T_VAR */22 : + var match$6 = declarations(/* T_VAR */22, /* Var */0, with_no_in(true, env)); + match$5 = [ + { + TAG: /* InitDeclaration */0, + _0: match$6[0] + }, + match$6[1] + ]; + break; + case /* T_CONST */25 : + var match$7 = $$const(with_no_in(true, env)); + match$5 = [ + { + TAG: /* InitDeclaration */0, + _0: match$7[0] + }, + match$7[1] + ]; + break; + case /* T_LET */26 : + var match$8 = _let(with_no_in(true, env)); + match$5 = [ + { + TAG: /* InitDeclaration */0, + _0: match$8[0] + }, + match$8[1] + ]; + break; + default: exit$1 = 1; - } - if (exit$1 === 1) { - var expr = Curry._1(Parse.expression, with_no_let(true, with_no_in(true, env))); - match$5 = [ - { - TAG: /* InitExpression */1, - _0: expr - }, - /* [] */0 - ]; - } - var init = match$5[0]; - var match$9 = Curry._2(Parser_env_Peek.token, undefined, env); - if (typeof match$9 === "number") { - if (match$9 !== 15) { - if (match$9 === 60) { - assert_can_be_forin_or_forof(env, /* InvalidLHSInForOf */17, init); - var left; - if (init !== undefined) { - left = init.TAG === /* InitDeclaration */0 ? ({ - TAG: /* LeftDeclaration */0, - _0: init._0 - }) : ({ - TAG: /* LeftExpression */1, - _0: init._0 - }); - } else { - throw { - RE_EXN_ID: "Assert_failure", - _1: [ - "parser_flow.ml", - 2573, - 22 - ], - Error: new Error() - }; - } - token$4(env, /* T_OF */60); - var right = Curry._1(Parse.assignment, env); - token$4(env, /* T_RPAREN */4); - var body$4 = Curry._1(Parse.statement, with_in_loop(true, env)); - return [ - btwn(start_loc$10, body$4[0]), - { - TAG: /* ForOf */16, - _0: { - left: left, - right: right, - body: body$4 - } - } - ]; - } - - } else { + } + } else { + exit$1 = 1; + } + if (exit$1 === 1) { + var expr = Curry._1(Parse.expression, with_no_let(true, with_no_in(true, env))); + match$5 = [ + { + TAG: /* InitExpression */1, + _0: expr + }, + /* [] */0 + ]; + } + var init = match$5[0]; + var match$9 = Curry._2(Parser_env_Peek.token, undefined, env); + if (/* tag */typeof match$9 === "number") { + switch (match$9) { + case /* T_IN */15 : assert_can_be_forin_or_forof(env, /* InvalidLHSInForIn */16, init); - var left$1; + var left; if (init !== undefined) { - left$1 = init.TAG === /* InitDeclaration */0 ? ({ + left = init.TAG === /* InitDeclaration */0 ? ({ TAG: /* LeftDeclaration */0, _0: init._0 }) : ({ @@ -13840,110 +13877,105 @@ function statement(env) { }; } token$4(env, /* T_IN */15); - var right$1 = Curry._1(Parse.expression, env); + var right = Curry._1(Parse.expression, env); + token$4(env, /* T_RPAREN */4); + var body$4 = Curry._1(Parse.statement, with_in_loop(true, env)); + return [ + btwn(start_loc$10, body$4[0]), + { + TAG: /* ForIn */15, + _0: { + left: left, + right: right, + body: body$4, + each: false + } + } + ]; + case /* T_OF */60 : + assert_can_be_forin_or_forof(env, /* InvalidLHSInForOf */17, init); + var left$1; + if (init !== undefined) { + left$1 = init.TAG === /* InitDeclaration */0 ? ({ + TAG: /* LeftDeclaration */0, + _0: init._0 + }) : ({ + TAG: /* LeftExpression */1, + _0: init._0 + }); + } else { + throw { + RE_EXN_ID: "Assert_failure", + _1: [ + "parser_flow.ml", + 2573, + 22 + ], + Error: new Error() + }; + } + token$4(env, /* T_OF */60); + var right$1 = Curry._1(Parse.assignment, env); token$4(env, /* T_RPAREN */4); var body$5 = Curry._1(Parse.statement, with_in_loop(true, env)); return [ btwn(start_loc$10, body$5[0]), { - TAG: /* ForIn */15, + TAG: /* ForOf */16, _0: { left: left$1, right: right$1, - body: body$5, - each: false + body: body$5 } } ]; - } - } - List.iter((function (param) { - return error_at(env, param); - }), match$5[1]); - token$4(env, /* T_SEMICOLON */7); - var match$10 = Curry._2(Parser_env_Peek.token, undefined, env); - var test$2 = match$10 === 7 ? undefined : Curry._1(Parse.expression, env); - token$4(env, /* T_SEMICOLON */7); - var match$11 = Curry._2(Parser_env_Peek.token, undefined, env); - var update = match$11 === 4 ? undefined : Curry._1(Parse.expression, env); - token$4(env, /* T_RPAREN */4); - var body$6 = Curry._1(Parse.statement, with_in_loop(true, env)); - return [ - btwn(start_loc$10, body$6[0]), - { - TAG: /* For */14, - _0: { - init: init, - test: test$2, - update: update, - body: body$6 - } - } - ]; - case /* T_IDENTIFIER */0 : - case /* T_RCURLY */2 : - case /* T_LPAREN */3 : - case /* T_RPAREN */4 : - case /* T_LBRACKET */5 : - case /* T_RBRACKET */6 : - case /* T_COMMA */8 : - case /* T_PERIOD */9 : - case /* T_ARROW */10 : - case /* T_ELLIPSIS */11 : - case /* T_AT */12 : - case /* T_FUNCTION */13 : - case /* T_IN */15 : - case /* T_INSTANCEOF */16 : - case /* T_THIS */19 : - case /* T_CONST */25 : - case /* T_LET */26 : - case /* T_NULL */27 : - case /* T_FALSE */28 : - case /* T_TRUE */29 : - case /* T_CASE */31 : - case /* T_CATCH */32 : - case /* T_DEFAULT */34 : - case /* T_FINALLY */36 : - case /* T_CLASS */38 : - case /* T_EXTENDS */39 : - case /* T_STATIC */40 : - case /* T_ELSE */41 : - case /* T_NEW */42 : - case /* T_DELETE */43 : - case /* T_TYPEOF */44 : - case /* T_VOID */45 : - case /* T_ENUM */46 : - case /* T_EXPORT */47 : - case /* T_IMPORT */48 : - case /* T_SUPER */49 : - case /* T_IMPLEMENTS */50 : - case /* T_INTERFACE */51 : - case /* T_PACKAGE */52 : - case /* T_PRIVATE */53 : - case /* T_PROTECTED */54 : - case /* T_PUBLIC */55 : - case /* T_YIELD */56 : - exit = 2; - break; - case /* T_DEBUGGER */57 : - var start_loc$11 = Curry._2(Parser_env_Peek.loc, undefined, env); - token$4(env, /* T_DEBUGGER */57); - var loc$10 = Curry._2(Parser_env_Peek.semicolon_loc, undefined, env); - var end_loc$8 = loc$10 !== undefined ? loc$10 : start_loc$11; - semicolon(env); - return [ - btwn(start_loc$11, end_loc$8), - /* Debugger */1 - ]; - - } - } - } else { - error_unexpected(env); - return [ - Curry._2(Parser_env_Peek.loc, undefined, env), - /* Empty */0 - ]; + default: + + } + } + List.iter((function (param) { + return error_at(env, param); + }), match$5[1]); + token$4(env, /* T_SEMICOLON */7); + var match$10 = Curry._2(Parser_env_Peek.token, undefined, env); + var test$2; + test$2 = /* tag */typeof match$10 === "number" && match$10 === /* T_SEMICOLON */7 ? undefined : Curry._1(Parse.expression, env); + token$4(env, /* T_SEMICOLON */7); + var match$11 = Curry._2(Parser_env_Peek.token, undefined, env); + var update; + update = /* tag */typeof match$11 === "number" && match$11 === /* T_RPAREN */4 ? undefined : Curry._1(Parse.expression, env); + token$4(env, /* T_RPAREN */4); + var body$6 = Curry._1(Parse.statement, with_in_loop(true, env)); + return [ + btwn(start_loc$10, body$6[0]), + { + TAG: /* For */14, + _0: { + init: init, + test: test$2, + update: update, + body: body$6 + } + } + ]; + case /* T_DEBUGGER */57 : + var start_loc$11 = Curry._2(Parser_env_Peek.loc, undefined, env); + token$4(env, /* T_DEBUGGER */57); + var loc$10 = Curry._2(Parser_env_Peek.semicolon_loc, undefined, env); + var end_loc$8 = loc$10 !== undefined ? loc$10 : start_loc$11; + semicolon(env); + return [ + btwn(start_loc$11, end_loc$8), + /* Debugger */1 + ]; + case /* T_EOF */105 : + error_unexpected(env); + return [ + Curry._2(Parser_env_Peek.loc, undefined, env), + /* Empty */0 + ]; + default: + exit = 2; } } else { exit = 2; @@ -13954,7 +13986,7 @@ function statement(env) { var match$12 = Curry._2(Parser_env_Peek.token, undefined, env); var label$4 = expr$1[1]; var loc$11 = expr$1[0]; - if (typeof label$4 !== "number" && label$4.TAG === /* Identifier */18 && match$12 === 77) { + if (/* tag */typeof label$4 !== "number" && label$4.TAG === /* Identifier */18 && /* tag */typeof match$12 === "number" && match$12 === /* T_COLON */77) { var label$5 = label$4._0; var match$13 = label$5[1]; var name$2 = match$13.name; @@ -13995,70 +14027,34 @@ function statement(env) { } ]; } - if (typeof match !== "number") { + if (/* tag */typeof match !== "number") { return expression(env); } - if (match !== 77) { - if (match >= 49) { + switch (match) { + case /* T_ELSE */41 : + return _if(env); + case /* T_RCURLY */2 : + case /* T_RPAREN */4 : + case /* T_RBRACKET */6 : + case /* T_COMMA */8 : + case /* T_PERIOD */9 : + case /* T_ARROW */10 : + case /* T_ELLIPSIS */11 : + case /* T_IN */15 : + case /* T_INSTANCEOF */16 : + case /* T_CASE */31 : + case /* T_CATCH */32 : + case /* T_DEFAULT */34 : + case /* T_FINALLY */36 : + case /* T_EXTENDS */39 : + case /* T_STATIC */40 : + case /* T_EXPORT */47 : + case /* T_IMPORT */48 : + case /* T_COLON */77 : + break; + default: return expression(env); - } - switch (match) { - case /* T_ELSE */41 : - return _if(env); - case /* T_IDENTIFIER */0 : - case /* T_LCURLY */1 : - case /* T_LPAREN */3 : - case /* T_LBRACKET */5 : - case /* T_SEMICOLON */7 : - case /* T_AT */12 : - case /* T_FUNCTION */13 : - case /* T_IF */14 : - case /* T_RETURN */17 : - case /* T_SWITCH */18 : - case /* T_THIS */19 : - case /* T_THROW */20 : - case /* T_TRY */21 : - case /* T_VAR */22 : - case /* T_WHILE */23 : - case /* T_WITH */24 : - case /* T_CONST */25 : - case /* T_LET */26 : - case /* T_NULL */27 : - case /* T_FALSE */28 : - case /* T_TRUE */29 : - case /* T_BREAK */30 : - case /* T_CONTINUE */33 : - case /* T_DO */35 : - case /* T_FOR */37 : - case /* T_CLASS */38 : - case /* T_NEW */42 : - case /* T_DELETE */43 : - case /* T_TYPEOF */44 : - case /* T_VOID */45 : - case /* T_ENUM */46 : - return expression(env); - case /* T_RCURLY */2 : - case /* T_RPAREN */4 : - case /* T_RBRACKET */6 : - case /* T_COMMA */8 : - case /* T_PERIOD */9 : - case /* T_ARROW */10 : - case /* T_ELLIPSIS */11 : - case /* T_IN */15 : - case /* T_INSTANCEOF */16 : - case /* T_CASE */31 : - case /* T_CATCH */32 : - case /* T_DEFAULT */34 : - case /* T_FINALLY */36 : - case /* T_EXTENDS */39 : - case /* T_STATIC */40 : - case /* T_EXPORT */47 : - case /* T_IMPORT */48 : - break; - - } } - } error_unexpected(env); token$3(env); @@ -14069,7 +14065,7 @@ function statement(env) { function module_item(env) { var decorators = decorator_list(env); var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (typeof match !== "number") { + if (/* tag */typeof match !== "number") { return statement_list_item(decorators, env); } switch (match) { @@ -14079,168 +14075,33 @@ function module_item(env) { token$4(env$1, /* T_EXPORT */47); var match$1 = Curry._2(Parser_env_Peek.token, undefined, env$1); var exit = 0; - if (typeof match$1 === "number") { - if (match$1 >= 51) { - if (match$1 !== 97) { - if (match$1 >= 62) { - exit = 1; - } else { - switch (match$1) { - case /* T_INTERFACE */51 : - if (!env$1.parse_options.types) { - error(env$1, /* UnexpectedTypeExport */9); - } - var $$interface$1 = $$interface(env$1); - var match$2 = $$interface$1[1]; - if (typeof match$2 === "number") { - throw { - RE_EXN_ID: "Failure", - _1: "Internal Flow Error! Parsed `export interface` into something other than an interface declaration!", - Error: new Error() - }; - } - if (match$2.TAG === /* InterfaceDeclaration */21) { - record_export(env$1, [ - $$interface$1[0], - extract_ident_name(match$2._0.id) - ]); - } else { - throw { - RE_EXN_ID: "Failure", - _1: "Internal Flow Error! Parsed `export interface` into something other than an interface declaration!", - Error: new Error() - }; - } - var end_loc = $$interface$1[0]; - return [ - btwn(start_loc, end_loc), - { - TAG: /* ExportDeclaration */28, - _0: { - default: false, - declaration: { - TAG: /* Declaration */0, - _0: $$interface$1 - }, - specifiers: undefined, - source: undefined, - exportKind: /* ExportType */0 - } - } - ]; - case /* T_TYPE */59 : - if (Curry._2(Parser_env_Peek.token, 1, env$1) !== /* T_LCURLY */1) { - if (!env$1.parse_options.types) { - error(env$1, /* UnexpectedTypeExport */9); - } - var type_alias$1 = type_alias(env$1); - var match$3 = type_alias$1[1]; - if (typeof match$3 === "number") { - throw { - RE_EXN_ID: "Failure", - _1: "Internal Flow Error! Parsed `export type` into something other than a type alias!", - Error: new Error() - }; - } - if (match$3.TAG === /* TypeAlias */7) { - record_export(env$1, [ - type_alias$1[0], - extract_ident_name(match$3._0.id) - ]); - } else { - throw { - RE_EXN_ID: "Failure", - _1: "Internal Flow Error! Parsed `export type` into something other than a type alias!", - Error: new Error() - }; - } - var end_loc$1 = type_alias$1[0]; - return [ - btwn(start_loc, end_loc$1), - { - TAG: /* ExportDeclaration */28, - _0: { - default: false, - declaration: { - TAG: /* Declaration */0, - _0: type_alias$1 - }, - specifiers: undefined, - source: undefined, - exportKind: /* ExportType */0 - } - } - ]; - } - exit = 1; - break; - case /* T_PACKAGE */52 : - case /* T_PRIVATE */53 : - case /* T_PROTECTED */54 : - case /* T_PUBLIC */55 : - case /* T_YIELD */56 : - case /* T_DEBUGGER */57 : - case /* T_DECLARE */58 : - case /* T_OF */60 : - exit = 1; - break; - case /* T_ASYNC */61 : - exit = 2; - break; - + if (/* tag */typeof match$1 === "number") { + switch (match$1) { + case /* T_DEFAULT */34 : + token$4(env$1, /* T_DEFAULT */34); + record_export(env$1, [ + btwn(start_loc, Curry._2(Parser_env_Peek.loc, undefined, env$1)), + "default" + ]); + var match$2 = Curry._2(Parser_env_Peek.token, undefined, env$1); + var match$3; + var exit$1 = 0; + if (/* tag */typeof match$2 === "number" && match$2 === /* T_FUNCTION */13) { + var fn = _function(env$1); + match$3 = [ + fn[0], + { + TAG: /* Declaration */0, + _0: fn + } + ]; + } else { + exit$1 = 3; } - } - } else { - var loc = Curry._2(Parser_env_Peek.loc, undefined, env$1); - token$4(env$1, /* T_MULT */97); - var parse_export_star_as = env$1.parse_options.esproposal_export_star_as; - var local_name = Curry._2(Parser_env_Peek.value, undefined, env$1) === "as" ? (contextual(env$1, "as"), parse_export_star_as ? Curry._2(Parse.identifier, undefined, env$1) : (error(env$1, /* UnexpectedTypeDeclaration */7), undefined)) : undefined; - var specifiers = { - TAG: /* ExportBatchSpecifier */1, - _0: loc, - _1: local_name - }; - var source$1 = export_source(env$1); - var loc$1 = Curry._2(Parser_env_Peek.semicolon_loc, undefined, env$1); - var end_loc$2 = loc$1 !== undefined ? loc$1 : source$1[0]; - var source$2 = source$1; - semicolon(env$1); - return [ - btwn(start_loc, end_loc$2), - { - TAG: /* ExportDeclaration */28, - _0: { - default: false, - declaration: undefined, - specifiers: specifiers, - source: source$2, - exportKind: /* ExportValue */1 - } - } - ]; - } - } else { - switch (match$1) { - case /* T_DEFAULT */34 : - token$4(env$1, /* T_DEFAULT */34); - record_export(env$1, [ - btwn(start_loc, Curry._2(Parser_env_Peek.loc, undefined, env$1)), - "default" - ]); - var match$4 = Curry._2(Parser_env_Peek.token, undefined, env$1); - var match$5; - if (match$4 === 13) { - var fn = _function(env$1); - match$5 = [ - fn[0], - { - TAG: /* Declaration */0, - _0: fn - } - ]; - } else if (Curry._2(Parser_env_Peek.is_class, undefined, env$1)) { + if (exit$1 === 3) { + if (Curry._2(Parser_env_Peek.is_class, undefined, env$1)) { var _class = class_declaration(env$1, decorators); - match$5 = [ + match$3 = [ _class[0], { TAG: /* Declaration */0, @@ -14249,63 +14110,158 @@ function module_item(env) { ]; } else { var expr = Curry._1(Parse.assignment, env$1); - var loc$2 = Curry._2(Parser_env_Peek.semicolon_loc, undefined, env$1); - var end_loc$3 = loc$2 !== undefined ? loc$2 : expr[0]; + var loc = Curry._2(Parser_env_Peek.semicolon_loc, undefined, env$1); + var end_loc = loc !== undefined ? loc : expr[0]; semicolon(env$1); - match$5 = [ - end_loc$3, + match$3 = [ + end_loc, { TAG: /* Expression */1, _0: expr } ]; } + } + return [ + btwn(start_loc, match$3[0]), + { + TAG: /* ExportDeclaration */28, + _0: { + default: true, + declaration: match$3[1], + specifiers: undefined, + source: undefined, + exportKind: /* ExportValue */1 + } + } + ]; + case /* T_INTERFACE */51 : + if (!env$1.parse_options.types) { + error(env$1, /* UnexpectedTypeExport */9); + } + var $$interface$1 = $$interface(env$1); + var match$4 = $$interface$1[1]; + if (/* tag */typeof match$4 === "number") { + throw { + RE_EXN_ID: "Failure", + _1: "Internal Flow Error! Parsed `export interface` into something other than an interface declaration!", + Error: new Error() + }; + } + if (match$4.TAG === /* InterfaceDeclaration */21) { + record_export(env$1, [ + $$interface$1[0], + extract_ident_name(match$4._0.id) + ]); + } else { + throw { + RE_EXN_ID: "Failure", + _1: "Internal Flow Error! Parsed `export interface` into something other than an interface declaration!", + Error: new Error() + }; + } + var end_loc$1 = $$interface$1[0]; + return [ + btwn(start_loc, end_loc$1), + { + TAG: /* ExportDeclaration */28, + _0: { + default: false, + declaration: { + TAG: /* Declaration */0, + _0: $$interface$1 + }, + specifiers: undefined, + source: undefined, + exportKind: /* ExportType */0 + } + } + ]; + case /* T_TYPE */59 : + if (Curry._2(Parser_env_Peek.token, 1, env$1) !== /* T_LCURLY */1) { + if (!env$1.parse_options.types) { + error(env$1, /* UnexpectedTypeExport */9); + } + var type_alias$1 = type_alias(env$1); + var match$5 = type_alias$1[1]; + if (/* tag */typeof match$5 === "number") { + throw { + RE_EXN_ID: "Failure", + _1: "Internal Flow Error! Parsed `export type` into something other than a type alias!", + Error: new Error() + }; + } + if (match$5.TAG === /* TypeAlias */7) { + record_export(env$1, [ + type_alias$1[0], + extract_ident_name(match$5._0.id) + ]); + } else { + throw { + RE_EXN_ID: "Failure", + _1: "Internal Flow Error! Parsed `export type` into something other than a type alias!", + Error: new Error() + }; + } + var end_loc$2 = type_alias$1[0]; return [ - btwn(start_loc, match$5[0]), + btwn(start_loc, end_loc$2), { TAG: /* ExportDeclaration */28, _0: { - default: true, - declaration: match$5[1], + default: false, + declaration: { + TAG: /* Declaration */0, + _0: type_alias$1 + }, specifiers: undefined, source: undefined, - exportKind: /* ExportValue */1 + exportKind: /* ExportType */0 } } ]; - case /* T_IF */14 : - case /* T_IN */15 : - case /* T_INSTANCEOF */16 : - case /* T_RETURN */17 : - case /* T_SWITCH */18 : - case /* T_THIS */19 : - case /* T_THROW */20 : - case /* T_TRY */21 : - case /* T_WHILE */23 : - case /* T_WITH */24 : - case /* T_NULL */27 : - case /* T_FALSE */28 : - case /* T_TRUE */29 : - case /* T_BREAK */30 : - case /* T_CASE */31 : - case /* T_CATCH */32 : - case /* T_CONTINUE */33 : - case /* T_DO */35 : - case /* T_FINALLY */36 : - case /* T_FOR */37 : - exit = 1; - break; - case /* T_AT */12 : - case /* T_FUNCTION */13 : - case /* T_VAR */22 : - case /* T_CONST */25 : - case /* T_LET */26 : - case /* T_CLASS */38 : - exit = 2; - break; - default: + } exit = 1; - } + break; + case /* T_AT */12 : + case /* T_FUNCTION */13 : + case /* T_VAR */22 : + case /* T_CONST */25 : + case /* T_LET */26 : + case /* T_CLASS */38 : + case /* T_ASYNC */61 : + exit = 2; + break; + case /* T_MULT */97 : + var loc$1 = Curry._2(Parser_env_Peek.loc, undefined, env$1); + token$4(env$1, /* T_MULT */97); + var parse_export_star_as = env$1.parse_options.esproposal_export_star_as; + var local_name = Curry._2(Parser_env_Peek.value, undefined, env$1) === "as" ? (contextual(env$1, "as"), parse_export_star_as ? Curry._2(Parse.identifier, undefined, env$1) : (error(env$1, /* UnexpectedTypeDeclaration */7), undefined)) : undefined; + var specifiers = { + TAG: /* ExportBatchSpecifier */1, + _0: loc$1, + _1: local_name + }; + var source$1 = export_source(env$1); + var loc$2 = Curry._2(Parser_env_Peek.semicolon_loc, undefined, env$1); + var end_loc$3 = loc$2 !== undefined ? loc$2 : source$1[0]; + var source$2 = source$1; + semicolon(env$1); + return [ + btwn(start_loc, end_loc$3), + { + TAG: /* ExportDeclaration */28, + _0: { + default: false, + declaration: undefined, + specifiers: specifiers, + source: source$2, + exportKind: /* ExportValue */1 + } + } + ]; + default: + exit = 1; } } else { exit = 1; @@ -14313,7 +14269,13 @@ function module_item(env) { switch (exit) { case 1 : var match$6 = Curry._2(Parser_env_Peek.token, undefined, env$1); - var exportKind = match$6 === 59 ? (token$3(env$1), /* ExportType */0) : /* ExportValue */1; + var exportKind; + if (/* tag */typeof match$6 === "number" && match$6 === /* T_TYPE */59) { + token$3(env$1); + exportKind = /* ExportType */0; + } else { + exportKind = /* ExportValue */1; + } token$4(env$1, /* T_LCURLY */1); var match$7 = export_specifiers_and_errs(env$1, /* [] */0, /* [] */0); var specifiers$1 = { @@ -14348,7 +14310,7 @@ function module_item(env) { var match$8 = stmt[1]; var loc$4 = stmt[0]; var names; - if (typeof match$8 === "number") { + if (/* tag */typeof match$8 === "number") { throw { RE_EXN_ID: "Failure", _1: "Internal Flow Error! Unexpected export statement declaration!", @@ -14437,34 +14399,51 @@ function module_item(env) { var start_loc$1 = Curry._2(Parser_env_Peek.loc, undefined, env$2); token$4(env$2, /* T_IMPORT */48); var match$9 = Curry._2(Parser_env_Peek.token, undefined, env$2); - var match$10 = typeof match$9 === "number" ? ( - match$9 !== 44 ? ( - match$9 !== 59 ? [ - /* ImportValue */2, - undefined - ] : (!env$2.parse_options.types ? error(env$2, /* UnexpectedTypeImport */8) : undefined, [ - /* ImportType */0, - Curry._2(Parse.identifier, undefined, env$2) - ]) - ) : (!env$2.parse_options.types ? error(env$2, /* UnexpectedTypeImport */8) : undefined, token$4(env$2, /* T_TYPEOF */44), [ + var match$10; + if (/* tag */typeof match$9 === "number") { + switch (match$9) { + case /* T_TYPEOF */44 : + if (!env$2.parse_options.types) { + error(env$2, /* UnexpectedTypeImport */8); + } + token$4(env$2, /* T_TYPEOF */44); + match$10 = [ /* ImportTypeof */1, undefined - ]) - ) : [ + ]; + break; + case /* T_TYPE */59 : + if (!env$2.parse_options.types) { + error(env$2, /* UnexpectedTypeImport */8); + } + match$10 = [ + /* ImportType */0, + Curry._2(Parse.identifier, undefined, env$2) + ]; + break; + default: + match$10 = [ + /* ImportValue */2, + undefined + ]; + } + } else { + match$10 = [ /* ImportValue */2, undefined ]; + } var type_ident = match$10[1]; var importKind = match$10[0]; var match$11 = Curry._2(Parser_env_Peek.token, undefined, env$2); var match$12 = Curry._2(Parser_env_Peek.is_identifier, undefined, env$2); - var exit$1 = 0; var exit$2 = 0; - if (typeof match$11 === "number") { + var exit$3 = 0; + if (/* tag */typeof match$11 === "number") { if (match$11 === /* T_COMMA */8) { - exit$1 = 1; + exit$2 = 1; } else { - exit$2 = 2; + exit$3 = 2; } } else if (match$11.TAG === /* T_STRING */1) { if (importKind === /* ImportValue */2) { @@ -14512,13 +14491,13 @@ function module_item(env) { } ]; } - exit$2 = 2; + exit$3 = 2; } else { - exit$2 = 2; + exit$3 = 2; } - if (exit$2 === 2) { + if (exit$3 === 2) { if (match$12) { - exit$1 = 1; + exit$2 = 1; } else { var specifiers$2 = named_or_namespace_specifier(env$2); var source$5 = source(env$2); @@ -14538,23 +14517,42 @@ function module_item(env) { ]; } } - if (exit$1 === 1) { + if (exit$2 === 1) { var match$14 = Curry._2(Parser_env_Peek.token, undefined, env$2); var match$15 = Curry._2(Parser_env_Peek.value, undefined, env$2); var match$16; - var exit$3 = 0; - if (type_ident !== undefined && typeof match$14 === "number" && !(match$14 !== 8 && (match$14 !== 0 || match$15 !== "from"))) { - match$16 = [ - /* ImportValue */2, - { - TAG: /* ImportDefaultSpecifier */1, - _0: type_ident - } - ]; + var exit$4 = 0; + if (type_ident !== undefined && /* tag */typeof match$14 === "number") { + switch (match$14) { + case /* T_IDENTIFIER */0 : + if (match$15 === "from") { + match$16 = [ + /* ImportValue */2, + { + TAG: /* ImportDefaultSpecifier */1, + _0: type_ident + } + ]; + } else { + exit$4 = 2; + } + break; + case /* T_COMMA */8 : + match$16 = [ + /* ImportValue */2, + { + TAG: /* ImportDefaultSpecifier */1, + _0: type_ident + } + ]; + break; + default: + exit$4 = 2; + } } else { - exit$3 = 2; + exit$4 = 2; } - if (exit$3 === 2) { + if (exit$4 === 2) { match$16 = [ importKind, { @@ -14564,7 +14562,13 @@ function module_item(env) { ]; } var match$17 = Curry._2(Parser_env_Peek.token, undefined, env$2); - var additional_specifiers = match$17 === 8 ? (token$4(env$2, /* T_COMMA */8), named_or_namespace_specifier(env$2)) : /* [] */0; + var additional_specifiers; + if (/* tag */typeof match$17 === "number" && match$17 === /* T_COMMA */8) { + token$4(env$2, /* T_COMMA */8); + additional_specifiers = named_or_namespace_specifier(env$2); + } else { + additional_specifiers = /* [] */0; + } var source$6 = source(env$2); var loc$7 = Curry._2(Parser_env_Peek.semicolon_loc, undefined, env$2); var end_loc$8 = loc$7 !== undefined ? loc$7 : source$6[0]; @@ -14584,17 +14588,7 @@ function module_item(env) { } ]; } - case /* T_SUPER */49 : - case /* T_IMPLEMENTS */50 : - case /* T_INTERFACE */51 : - case /* T_PACKAGE */52 : - case /* T_PRIVATE */53 : - case /* T_PROTECTED */54 : - case /* T_PUBLIC */55 : - case /* T_YIELD */56 : - case /* T_DEBUGGER */57 : - return statement_list_item(decorators, env); - case /* T_DECLARE */58 : + case /* T_DECLARE */58 : if (Curry._2(Parser_env_Peek.token, 1, env) === /* T_EXPORT */47) { error_on_decorators(env)(decorators); return declare_export_declaration(undefined, env); @@ -14612,62 +14606,63 @@ function statement_list_item(decoratorsOpt, env) { error_on_decorators(env)(decorators); } var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (typeof match === "number") { - if (match === 25) { - return var_or_const(env); - } - if (match === 26) { - var start_loc = Curry._2(Parser_env_Peek.loc, undefined, env); - token$4(env, /* T_LET */26); - if (Curry._2(Parser_env_Peek.token, undefined, env) === /* T_LPAREN */3) { - token$4(env, /* T_LPAREN */3); - var match$1 = helper(with_no_let(true, env), /* [] */0, /* [] */0); - var head = List.map((function (param) { - var match = param[1]; - return { - id: match.id, - init: match.init - }; - }), match$1[1]); - token$4(env, /* T_RPAREN */4); - var body = Curry._1(Parse.statement, env); - var end_loc = Curry._2(Parser_env_Peek.semicolon_loc, undefined, env); - var end_loc$1 = end_loc !== undefined ? end_loc : match$1[0]; - semicolon(env); - List.iter((function (param) { - return error_at(env, param); - }), match$1[2]); - return [ - btwn(start_loc, end_loc$1), - { - TAG: /* Let */17, - _0: { - head: head, - body: body - } - } - ]; - } - var match$2 = helper(with_no_let(true, env), /* [] */0, /* [] */0); - var declaration = { - TAG: /* VariableDeclaration */19, - _0: { - declarations: match$2[1], - kind: /* Let */1 - } - }; - var end_loc$2 = Curry._2(Parser_env_Peek.semicolon_loc, undefined, env); - var end_loc$3 = end_loc$2 !== undefined ? end_loc$2 : match$2[0]; - semicolon(env); - List.iter((function (param) { - return error_at(env, param); - }), match$2[2]); - return [ - btwn(start_loc, end_loc$3), - declaration - ]; + if (/* tag */typeof match === "number") { + switch (match) { + case /* T_CONST */25 : + return var_or_const(env); + case /* T_LET */26 : + var start_loc = Curry._2(Parser_env_Peek.loc, undefined, env); + token$4(env, /* T_LET */26); + if (Curry._2(Parser_env_Peek.token, undefined, env) === /* T_LPAREN */3) { + token$4(env, /* T_LPAREN */3); + var match$1 = helper(with_no_let(true, env), /* [] */0, /* [] */0); + var head = List.map((function (param) { + var match = param[1]; + return { + id: match.id, + init: match.init + }; + }), match$1[1]); + token$4(env, /* T_RPAREN */4); + var body = Curry._1(Parse.statement, env); + var end_loc = Curry._2(Parser_env_Peek.semicolon_loc, undefined, env); + var end_loc$1 = end_loc !== undefined ? end_loc : match$1[0]; + semicolon(env); + List.iter((function (param) { + return error_at(env, param); + }), match$1[2]); + return [ + btwn(start_loc, end_loc$1), + { + TAG: /* Let */17, + _0: { + head: head, + body: body + } + } + ]; + } + var match$2 = helper(with_no_let(true, env), /* [] */0, /* [] */0); + var declaration = { + TAG: /* VariableDeclaration */19, + _0: { + declarations: match$2[1], + kind: /* Let */1 + } + }; + var end_loc$2 = Curry._2(Parser_env_Peek.semicolon_loc, undefined, env); + var end_loc$3 = end_loc$2 !== undefined ? end_loc$2 : match$2[0]; + semicolon(env); + List.iter((function (param) { + return error_at(env, param); + }), match$2[2]); + return [ + btwn(start_loc, end_loc$3), + declaration + ]; + default: + } - } if (Curry._2(Parser_env_Peek.is_function, undefined, env)) { return _function(env); @@ -14675,19 +14670,12 @@ function statement_list_item(decoratorsOpt, env) { if (Curry._2(Parser_env_Peek.is_class, undefined, env)) { return class_declaration$1(env, decorators); } - if (typeof match !== "number") { + if (/* tag */typeof match !== "number") { return statement(env); } switch (match) { case /* T_INTERFACE */51 : return $$interface(env); - case /* T_PACKAGE */52 : - case /* T_PRIVATE */53 : - case /* T_PROTECTED */54 : - case /* T_PUBLIC */55 : - case /* T_YIELD */56 : - case /* T_DEBUGGER */57 : - return statement(env); case /* T_DECLARE */58 : return declare(undefined, env); case /* T_TYPE */59 : @@ -14706,7 +14694,7 @@ function statement_list(_env, term_fn, item_fn, _param) { var stmts = param[1]; var string_tokens = param[0]; var t = Curry._2(Parser_env_Peek.token, undefined, env); - if (t === 105) { + if (/* tag */typeof t === "number" && t === /* T_EOF */105) { return [ env, string_tokens, @@ -14732,7 +14720,7 @@ function statement_list(_env, term_fn, item_fn, _param) { tl: stmts }; var match = possible_directive[1]; - if (typeof match === "number") { + if (/* tag */typeof match === "number") { return [ env, string_tokens, @@ -14748,7 +14736,7 @@ function statement_list(_env, term_fn, item_fn, _param) { } var match$1 = match._0.expression; var match$2 = match$1[1]; - if (typeof match$2 === "number") { + if (/* tag */typeof match$2 === "number") { return [ env, string_tokens, @@ -14763,7 +14751,7 @@ function statement_list(_env, term_fn, item_fn, _param) { ]; } var str = match$2._0.value; - if (typeof str === "number") { + if (/* tag */typeof str === "number") { return [ env, string_tokens, @@ -14801,7 +14789,7 @@ function directives(env, term_fn, item_fn) { var env$1 = match[0]; List.iter((function (param) { var token = param[1]; - if (typeof token !== "number" && token.TAG === /* T_STRING */1) { + if (/* tag */typeof token !== "number" && token.TAG === /* T_STRING */1) { if (token._0[3]) { return strict_error_at(env$1, [ param[0], @@ -14829,7 +14817,7 @@ function module_body(term_fn, env) { while(true) { var acc = _acc; var t = Curry._2(Parser_env_Peek.token, undefined, env); - if (t === 105) { + if (/* tag */typeof t === "number" && t === /* T_EOF */105) { return List.rev(acc); } if (Curry._1(term_fn, t)) { @@ -14848,7 +14836,7 @@ function statement_list$1(term_fn, env) { while(true) { var acc = _acc; var t = Curry._2(Parser_env_Peek.token, undefined, env); - if (t === 105) { + if (/* tag */typeof t === "number" && t === /* T_EOF */105) { return List.rev(acc); } if (Curry._1(term_fn, t)) { @@ -14895,7 +14883,8 @@ function identifier$2(restricted_error, env) { var loc = Curry._2(Parser_env_Peek.loc, undefined, env); var name = Curry._2(Parser_env_Peek.value, undefined, env); var t = Curry._2(Parser_env_Peek.token, undefined, env); - if (t === 26) { + var exit = 0; + if (/* tag */typeof t === "number" && t === /* T_LET */26) { if (env.in_strict_mode) { strict_error(env, /* StrictReservedWord */39); } else if (env.no_let) { @@ -14905,13 +14894,28 @@ function identifier$2(restricted_error, env) { }); } token$3(env); - } else if (is_strict_reserved(name)) { - strict_error(env, /* StrictReservedWord */39); - token$3(env); - } else if (typeof t === "number" && !(t > 62 || t < 58)) { - token$4(env, t); } else { - token$4(env, /* T_IDENTIFIER */0); + exit = 1; + } + if (exit === 1) { + if (is_strict_reserved(name)) { + strict_error(env, /* StrictReservedWord */39); + token$3(env); + } else if (/* tag */typeof t === "number") { + switch (t) { + case /* T_DECLARE */58 : + case /* T_TYPE */59 : + case /* T_OF */60 : + case /* T_ASYNC */61 : + case /* T_AWAIT */62 : + token$4(env, t); + break; + default: + token$4(env, /* T_IDENTIFIER */0); + } + } else { + token$4(env, /* T_IDENTIFIER */0); + } } if (restricted_error !== undefined && is_restricted(name)) { strict_error_at(env, [ @@ -14947,7 +14951,7 @@ function program(env) { function expression$1(env) { var expr = Curry._1(assignment, env); var match = Curry._2(Parser_env_Peek.token, undefined, env); - if (match === 8) { + if (/* tag */typeof match === "number" && match === /* T_COMMA */8) { return sequence(env, { hd: expr, tl: /* [] */0 @@ -15271,7 +15275,7 @@ function parse(content, options) { var loc = function ($$location) { var match = $$location.source; var source = match !== undefined ? ( - typeof match === "number" ? string("(global)") : string(match._0) + /* tag */typeof match === "number" ? string("(global)") : string(match._0) ) : $$null; return obj([ [ @@ -15328,7 +15332,7 @@ function parse(content, options) { var _type = function (param) { var t = param[1]; var loc = param[0]; - if (typeof t === "number") { + if (/* tag */typeof t === "number") { switch (t) { case /* Any */0 : return node("AnyTypeAnnotation", loc, []); @@ -15558,7 +15562,7 @@ function parse(content, options) { var expression = function (param) { var arr = param[1]; var loc = param[0]; - if (typeof arr === "number") { + if (/* tag */typeof arr === "number") { return node("ThisExpression", loc, []); } switch (arr.TAG | 0) { @@ -15636,7 +15640,7 @@ function parse(content, options) { case /* Unary */5 : var unary = arr._0; var match = unary.operator; - if (match >= 7) { + if (match === /* Await */7) { return node("AwaitExpression", loc, [[ "argument", expression(unary.argument) @@ -16198,7 +16202,7 @@ function parse(content, options) { var statement = function (param) { var b = param[1]; var loc = param[0]; - if (typeof b === "number") { + if (/* tag */typeof b === "number") { if (b === /* Empty */0) { return node("EmptyStatement", loc, []); } else { @@ -16842,7 +16846,7 @@ function parse(content, options) { var value = lit.value; var loc = param[0]; var value_; - if (typeof value === "number") { + if (/* tag */typeof value === "number") { value_ = $$null; } else { switch (value.TAG | 0) { @@ -16864,7 +16868,7 @@ function parse(content, options) { } var props; var exit = 0; - if (typeof value === "number" || value.TAG !== /* RegExp */3) { + if (/* tag */typeof value === "number" || value.TAG !== /* RegExp */3) { exit = 1; } else { var match$1 = value._0; diff --git a/jscomp/test/fun_pattern_match.js b/jscomp/test/fun_pattern_match.js index be00d13676..fd289f57b7 100644 --- a/jscomp/test/fun_pattern_match.js +++ b/jscomp/test/fun_pattern_match.js @@ -15,29 +15,23 @@ function f3(param) { var lhs = param.rank; return function (param) { var rhs = param.rank; - if (typeof lhs === "number") { - throw { - RE_EXN_ID: "Assert_failure", - _1: [ - "fun_pattern_match.ml", - 44, - 9 - ], - Error: new Error() - }; + if (/* tag */typeof lhs === "number") { + lhs === /* Uninitialized */0; + } else { + if (/* tag */typeof rhs !== "number") { + return Caml.int_compare(lhs._0, rhs._0); + } + rhs === /* Uninitialized */0; } - if (typeof rhs === "number") { - throw { - RE_EXN_ID: "Assert_failure", - _1: [ - "fun_pattern_match.ml", - 44, - 9 - ], - Error: new Error() - }; - } - return Caml.int_compare(lhs._0, rhs._0); + throw { + RE_EXN_ID: "Assert_failure", + _1: [ + "fun_pattern_match.ml", + 44, + 9 + ], + Error: new Error() + }; }; } @@ -45,29 +39,23 @@ function f4(param) { var lhs = param.rank; return function (param) { var rhs = param.rank; - if (typeof lhs === "number") { - throw { - RE_EXN_ID: "Assert_failure", - _1: [ - "fun_pattern_match.ml", - 52, - 9 - ], - Error: new Error() - }; - } - if (typeof rhs === "number") { - throw { - RE_EXN_ID: "Assert_failure", - _1: [ - "fun_pattern_match.ml", - 52, - 9 - ], - Error: new Error() - }; + if (/* tag */typeof lhs === "number") { + lhs === /* Uninitialized */0; + } else { + if (/* tag */typeof rhs !== "number") { + return Caml.int_compare(lhs._0, rhs._0); + } + rhs === /* Uninitialized */0; } - return Caml.int_compare(lhs._0, rhs._0); + throw { + RE_EXN_ID: "Assert_failure", + _1: [ + "fun_pattern_match.ml", + 52, + 9 + ], + Error: new Error() + }; }; } diff --git a/jscomp/test/gpr_1658_test.js b/jscomp/test/gpr_1658_test.js index 66b09303d4..a0c151cfef 100644 --- a/jscomp/test/gpr_1658_test.js +++ b/jscomp/test/gpr_1658_test.js @@ -32,7 +32,7 @@ eq("File \"gpr_1658_test.ml\", line 11, characters 7-14", null, null); var match = Js_types.classify(null); -if (match === 2) { +if (/* tag */typeof match === "number" && match === /* JSNull */2) { eq("File \"gpr_1658_test.ml\", line 14, characters 11-18", true, true); } else { eq("File \"gpr_1658_test.ml\", line 16, characters 11-18", true, false); diff --git a/jscomp/test/gpr_3209_test.js b/jscomp/test/gpr_3209_test.js index ccdb340145..fec8f3e920 100644 --- a/jscomp/test/gpr_3209_test.js +++ b/jscomp/test/gpr_3209_test.js @@ -2,7 +2,7 @@ function f9(param) { - if (typeof param === "number") { + if (/* tag */typeof param === "number") { switch (param) { case /* T60 */0 : case /* T61 */1 : diff --git a/jscomp/test/gpr_3609_test.js b/jscomp/test/gpr_3609_test.js index 410908db55..7cb88b2676 100644 --- a/jscomp/test/gpr_3609_test.js +++ b/jscomp/test/gpr_3609_test.js @@ -2,7 +2,7 @@ function func(state) { - if (typeof state === "number") { + if (/* tag */typeof state === "number") { return 0; } else { return 0 + state._0 | 0; diff --git a/jscomp/test/gpr_4900_test.js b/jscomp/test/gpr_4900_test.js index 5512ae1a9f..74ae3021a2 100644 --- a/jscomp/test/gpr_4900_test.js +++ b/jscomp/test/gpr_4900_test.js @@ -11,16 +11,18 @@ var test_id = { }; function showToJs(x) { - return x !== 0; + if (/* tag */typeof x === "number" && x === /* No */0) { + return false; + } else { + return true; + } } -Mt.eq_suites(test_id, suites, "File \"gpr_4900_test.ml\", line 15, characters 30-37", showToJs(/* Yes */1), true); +Mt.eq_suites(test_id, suites, "File \"gpr_4900_test.ml\", line 15, characters 30-37", true, true); -Mt.eq_suites(test_id, suites, "File \"gpr_4900_test.ml\", line 16, characters 30-37", showToJs(/* No */0), false); +Mt.eq_suites(test_id, suites, "File \"gpr_4900_test.ml\", line 16, characters 30-37", false, false); -Mt.eq_suites(test_id, suites, "File \"gpr_4900_test.ml\", line 17, characters 30-37", showToJs(/* After */{ - _0: 3 - }), true); +Mt.eq_suites(test_id, suites, "File \"gpr_4900_test.ml\", line 17, characters 30-37", true, true); Mt.from_pair_suites("File \"gpr_4900_test.ml\", line 19, characters 20-27", suites.contents); diff --git a/jscomp/test/gpr_4924_test.js b/jscomp/test/gpr_4924_test.js index ccd700b381..3ba99c54b6 100644 --- a/jscomp/test/gpr_4924_test.js +++ b/jscomp/test/gpr_4924_test.js @@ -11,7 +11,7 @@ var test_id = { }; function u(b) { - if (b === 0) { + if (/* tag */typeof b === "number" && b === /* A */0) { return 0; } else { return 1; @@ -19,23 +19,29 @@ function u(b) { } function u1(b) { - return b === 0; + if (/* tag */typeof b === "number" && b === /* A */0) { + return true; + } else { + return false; + } } function u2(b) { - return b !== 0; + if (/* tag */typeof b === "number" && b === /* A */0) { + return false; + } else { + return true; + } } -Mt.eq_suites(test_id, suites, "File \"gpr_4924_test.ml\", line 25, characters 30-37", u2(/* A */0), false); +Mt.eq_suites(test_id, suites, "File \"gpr_4924_test.ml\", line 25, characters 30-37", false, false); -Mt.eq_suites(test_id, suites, "File \"gpr_4924_test.ml\", line 26, characters 30-37", u2(/* B */1), true); +Mt.eq_suites(test_id, suites, "File \"gpr_4924_test.ml\", line 26, characters 30-37", true, true); -Mt.eq_suites(test_id, suites, "File \"gpr_4924_test.ml\", line 27, characters 30-37", u2(/* C */{ - _0: 2 - }), true); +Mt.eq_suites(test_id, suites, "File \"gpr_4924_test.ml\", line 27, characters 30-37", true, true); function u3(b) { - if (b === 0) { + if (/* tag */typeof b === "number" && b === /* A */0) { return 3; } else { return 4; @@ -43,7 +49,7 @@ function u3(b) { } function u4(b) { - if (b === 0) { + if (/* tag */typeof b === "number" && b === /* A */0) { return 3; } else { return 4; @@ -51,11 +57,19 @@ function u4(b) { } function u5(b) { - return b !== 0; + if (/* tag */typeof b === "number" && b === /* A */0) { + return false; + } else { + return true; + } } function u6(b) { - return b === 0; + if (/* tag */typeof b === "number" && b === /* A */0) { + return true; + } else { + return false; + } } Mt.from_pair_suites("File \"gpr_4924_test.ml\", line 49, characters 20-27", suites.contents); diff --git a/jscomp/test/gpr_5280_optimize_test.js b/jscomp/test/gpr_5280_optimize_test.js index 77e3062ad2..bfe97c2249 100644 --- a/jscomp/test/gpr_5280_optimize_test.js +++ b/jscomp/test/gpr_5280_optimize_test.js @@ -5,8 +5,10 @@ var a = /* Color */{ _0: "#ffff" }; -var c = "white"; +var c; + +c = /* tag */typeof a === "number" ? "orange" : "white"; exports.a = a; exports.c = c; -/* No side effect */ +/* c Not a pure module */ diff --git a/jscomp/test/inline_map2_test.js b/jscomp/test/inline_map2_test.js index d6d3320072..e750e8824b 100644 --- a/jscomp/test/inline_map2_test.js +++ b/jscomp/test/inline_map2_test.js @@ -8,10 +8,10 @@ var Caml_option = require("../../lib/js/caml_option.js"); function Make(Ord) { var height = function (param) { - if (param) { - return param._4; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return param._4; } }; var create = function (l, x, d, r) { @@ -35,26 +35,28 @@ function Make(Ord) { }; }; var bal = function (l, x, d, r) { - var hl = l ? l._4 : 0; - var hr = r ? r._4 : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l._4; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r._4; if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l._3; - var ld = l._2; - var lv = l._1; - var ll = l._0; - if (height(ll) >= height(lr)) { - return create(ll, lv, ld, create(lr, x, d, r)); - } - if (lr) { - return create(create(ll, lv, ld, lr._0), lr._1, lr._2, create(lr._3, x, d, r)); - } + if (/* tag */typeof l === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var lr = l._3; + var ld = l._2; + var lv = l._1; + var ll = l._0; + if (height(ll) >= height(lr)) { + return create(ll, lv, ld, create(lr, x, d, r)); + } + if (/* tag */typeof lr !== "number") { + return create(create(ll, lv, ld, lr._0), lr._1, lr._2, create(lr._3, x, d, r)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -70,23 +72,23 @@ function Make(Ord) { _4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0 }; } - if (r) { - var rr = r._3; - var rd = r._2; - var rv = r._1; - var rl = r._0; - if (height(rr) >= height(rl)) { - return create(create(l, x, d, rl), rv, rd, rr); - } - if (rl) { - return create(create(l, x, d, rl._0), rl._1, rl._2, create(rl._3, rv, rd, rr)); - } + if (/* tag */typeof r === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var rr = r._3; + var rd = r._2; + var rv = r._1; + var rl = r._0; + if (height(rr) >= height(rl)) { + return create(create(l, x, d, rl), rv, rd, rr); + } + if (/* tag */typeof rl !== "number") { + return create(create(l, x, d, rl._0), rl._1, rl._2, create(rl._3, rv, rd, rr)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -94,14 +96,14 @@ function Make(Ord) { }; }; var is_empty = function (param) { - if (param) { - return false; - } else { + if (/* tag */typeof param === "number") { return true; + } else { + return false; } }; var add = function (x, data, param) { - if (!param) { + if (/* tag */typeof param === "number") { return /* Node */{ _0: /* Empty */0, _1: x, @@ -132,24 +134,24 @@ function Make(Ord) { var find = function (x, _param) { while(true) { var param = _param; - if (param) { - var c = Curry._2(Ord.compare, x, param._1); - if (c === 0) { - return param._2; - } - _param = c < 0 ? param._0 : param._3; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var c = Curry._2(Ord.compare, x, param._1); + if (c === 0) { + return param._2; + } + _param = c < 0 ? param._0 : param._3; + continue ; }; }; var mem = function (x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } var c = Curry._2(Ord.compare, x, param._1); @@ -163,60 +165,60 @@ function Make(Ord) { var min_binding = function (_param) { while(true) { var param = _param; - if (param) { - var l = param._0; - if (!l) { - return [ - param._1, - param._2 - ]; - } - _param = l; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var l = param._0; + if (/* tag */typeof l === "number") { + return [ + param._1, + param._2 + ]; + } + _param = l; + continue ; }; }; var max_binding = function (_param) { while(true) { var param = _param; - if (param) { - var r = param._3; - if (!r) { - return [ - param._1, - param._2 - ]; - } - _param = r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var r = param._3; + if (/* tag */typeof r === "number") { + return [ + param._1, + param._2 + ]; + } + _param = r; + continue ; }; }; var remove_min_binding = function (param) { - if (param) { - var l = param._0; - if (l) { - return bal(remove_min_binding(l), param._1, param._2, param._3); - } else { - return param._3; - } + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Invalid_argument", + _1: "Map.remove_min_elt", + Error: new Error() + }; + } + var l = param._0; + if (/* tag */typeof l === "number") { + return param._3; + } else { + return bal(remove_min_binding(l), param._1, param._2, param._3); } - throw { - RE_EXN_ID: "Invalid_argument", - _1: "Map.remove_min_elt", - Error: new Error() - }; }; var remove = function (x, param) { - if (!param) { + if (/* tag */typeof param === "number") { return /* Empty */0; } var r = param._3; @@ -225,10 +227,10 @@ function Make(Ord) { var l = param._0; var c = Curry._2(Ord.compare, x, v); if (c === 0) { - if (!l) { + if (/* tag */typeof l === "number") { return r; } - if (!r) { + if (/* tag */typeof r === "number") { return l; } var match = min_binding(r); @@ -242,7 +244,7 @@ function Make(Ord) { var iter = function (f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } iter(f, param._0); @@ -252,7 +254,7 @@ function Make(Ord) { }; }; var map = function (f, param) { - if (!param) { + if (/* tag */typeof param === "number") { return /* Empty */0; } var l$p = map(f, param._0); @@ -267,7 +269,7 @@ function Make(Ord) { }; }; var mapi = function (f, param) { - if (!param) { + if (/* tag */typeof param === "number") { return /* Empty */0; } var v = param._1; @@ -286,7 +288,7 @@ function Make(Ord) { while(true) { var accu = _accu; var m = _m; - if (!m) { + if (/* tag */typeof m === "number") { return accu; } _accu = Curry._3(f, m._1, m._2, fold(f, m._0, accu)); @@ -297,7 +299,7 @@ function Make(Ord) { var for_all = function (p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return true; } if (!Curry._2(p, param._1, param._2)) { @@ -313,7 +315,7 @@ function Make(Ord) { var exists = function (p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } if (Curry._2(p, param._1, param._2)) { @@ -327,28 +329,28 @@ function Make(Ord) { }; }; var add_min_binding = function (k, v, param) { - if (param) { - return bal(add_min_binding(k, v, param._0), param._1, param._2, param._3); - } else { + if (/* tag */typeof param === "number") { return singleton(k, v); + } else { + return bal(add_min_binding(k, v, param._0), param._1, param._2, param._3); } }; var add_max_binding = function (k, v, param) { - if (param) { - return bal(param._0, param._1, param._2, add_max_binding(k, v, param._3)); - } else { + if (/* tag */typeof param === "number") { return singleton(k, v); + } else { + return bal(param._0, param._1, param._2, add_max_binding(k, v, param._3)); } }; var join = function (l, v, d, r) { - if (!l) { + if (/* tag */typeof l === "number") { return add_min_binding(v, d, r); } - if (!r) { + var lh = l._4; + if (/* tag */typeof r === "number") { return add_max_binding(v, d, l); } var rh = r._4; - var lh = l._4; if (lh > (rh + 2 | 0)) { return bal(l._0, l._1, l._2, join(l._3, v, d, r)); } else if (rh > (lh + 2 | 0)) { @@ -358,10 +360,10 @@ function Make(Ord) { } }; var concat = function (t1, t2) { - if (!t1) { + if (/* tag */typeof t1 === "number") { return t2; } - if (!t2) { + if (/* tag */typeof t2 === "number") { return t1; } var match = min_binding(t2); @@ -375,7 +377,7 @@ function Make(Ord) { } }; var split = function (x, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, undefined, @@ -410,33 +412,36 @@ function Make(Ord) { ]; }; var merge = function (f, s1, s2) { - if (s1) { + if (/* tag */typeof s1 === "number") { + if (/* tag */typeof s2 === "number") { + return /* Empty */0; + } + + } else { var v1 = s1._1; if (s1._4 >= height(s2)) { var match = split(v1, s2); return concat_or_join(merge(f, s1._0, match[0]), v1, Curry._3(f, v1, Caml_option.some(s1._2), match[1]), merge(f, s1._3, match[2])); } - } else if (!s2) { - return /* Empty */0; } - if (s2) { - var v2 = s2._1; - var match$1 = split(v2, s1); - return concat_or_join(merge(f, match$1[0], s2._0), v2, Curry._3(f, v2, match$1[1], Caml_option.some(s2._2)), merge(f, match$1[2], s2._3)); + if (/* tag */typeof s2 === "number") { + throw { + RE_EXN_ID: "Assert_failure", + _1: [ + "inline_map2_test.ml", + 270, + 10 + ], + Error: new Error() + }; } - throw { - RE_EXN_ID: "Assert_failure", - _1: [ - "inline_map2_test.ml", - 270, - 10 - ], - Error: new Error() - }; + var v2 = s2._1; + var match$1 = split(v2, s1); + return concat_or_join(merge(f, match$1[0], s2._0), v2, Curry._3(f, v2, match$1[1], Caml_option.some(s2._2)), merge(f, match$1[2], s2._3)); }; var filter = function (p, param) { - if (!param) { + if (/* tag */typeof param === "number") { return /* Empty */0; } var d = param._2; @@ -451,7 +456,7 @@ function Make(Ord) { } }; var partition = function (p, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, /* Empty */0 @@ -482,7 +487,7 @@ function Make(Ord) { while(true) { var e = _e; var m = _m; - if (!m) { + if (/* tag */typeof m === "number") { return e; } _e = /* More */{ @@ -501,14 +506,14 @@ function Make(Ord) { while(true) { var e2 = _e2; var e1 = _e1; - if (!e1) { - if (e2) { - return -1; - } else { + if (/* tag */typeof e1 === "number") { + if (/* tag */typeof e2 === "number") { return 0; + } else { + return -1; } } - if (!e2) { + if (/* tag */typeof e2 === "number") { return 1; } var c = Curry._2(Ord.compare, e1._0, e2._0); @@ -530,14 +535,14 @@ function Make(Ord) { while(true) { var e2 = _e2; var e1 = _e1; - if (!e1) { - if (e2) { - return false; - } else { + if (/* tag */typeof e1 === "number") { + if (/* tag */typeof e2 === "number") { return true; + } else { + return false; } } - if (!e2) { + if (/* tag */typeof e2 === "number") { return false; } if (Curry._2(Ord.compare, e1._0, e2._0) !== 0) { @@ -552,17 +557,17 @@ function Make(Ord) { }; }; var cardinal = function (param) { - if (param) { - return (cardinal(param._0) + 1 | 0) + cardinal(param._3) | 0; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return (cardinal(param._0) + 1 | 0) + cardinal(param._3) | 0; } }; var bindings_aux = function (_accu, _param) { while(true) { var param = _param; var accu = _accu; - if (!param) { + if (/* tag */typeof param === "number") { return accu; } _param = param._0; @@ -619,10 +624,10 @@ function Make(Ord) { } function height(param) { - if (param) { - return param._4; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return param._4; } } @@ -649,26 +654,28 @@ function singleton(x, d) { } function bal(l, x, d, r) { - var hl = l ? l._4 : 0; - var hr = r ? r._4 : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l._4; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r._4; if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l._3; - var ld = l._2; - var lv = l._1; - var ll = l._0; - if (height(ll) >= height(lr)) { - return create(ll, lv, ld, create(lr, x, d, r)); - } - if (lr) { - return create(create(ll, lv, ld, lr._0), lr._1, lr._2, create(lr._3, x, d, r)); - } + if (/* tag */typeof l === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var lr = l._3; + var ld = l._2; + var lv = l._1; + var ll = l._0; + if (height(ll) >= height(lr)) { + return create(ll, lv, ld, create(lr, x, d, r)); + } + if (/* tag */typeof lr !== "number") { + return create(create(ll, lv, ld, lr._0), lr._1, lr._2, create(lr._3, x, d, r)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -684,23 +691,23 @@ function bal(l, x, d, r) { _4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0 }; } - if (r) { - var rr = r._3; - var rd = r._2; - var rv = r._1; - var rl = r._0; - if (height(rr) >= height(rl)) { - return create(create(l, x, d, rl), rv, rd, rr); - } - if (rl) { - return create(create(l, x, d, rl._0), rl._1, rl._2, create(rl._3, rv, rd, rr)); - } + if (/* tag */typeof r === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var rr = r._3; + var rd = r._2; + var rv = r._1; + var rl = r._0; + if (height(rr) >= height(rl)) { + return create(create(l, x, d, rl), rv, rd, rr); + } + if (/* tag */typeof rl !== "number") { + return create(create(l, x, d, rl._0), rl._1, rl._2, create(rl._3, rv, rd, rr)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -709,15 +716,15 @@ function bal(l, x, d, r) { } function is_empty(param) { - if (param) { - return false; - } else { + if (/* tag */typeof param === "number") { return true; + } else { + return false; } } function add(x, data, param) { - if (!param) { + if (/* tag */typeof param === "number") { return /* Node */{ _0: /* Empty */0, _1: x, @@ -749,25 +756,25 @@ function add(x, data, param) { function find(x, _param) { while(true) { var param = _param; - if (param) { - var c = Caml.int_compare(x, param._1); - if (c === 0) { - return param._2; - } - _param = c < 0 ? param._0 : param._3; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var c = Caml.int_compare(x, param._1); + if (c === 0) { + return param._2; + } + _param = c < 0 ? param._0 : param._3; + continue ; }; } function mem(x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } var c = Caml.int_compare(x, param._1); @@ -782,63 +789,63 @@ function mem(x, _param) { function min_binding(_param) { while(true) { var param = _param; - if (param) { - var l = param._0; - if (!l) { - return [ - param._1, - param._2 - ]; - } - _param = l; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var l = param._0; + if (/* tag */typeof l === "number") { + return [ + param._1, + param._2 + ]; + } + _param = l; + continue ; }; } function max_binding(_param) { while(true) { var param = _param; - if (param) { - var r = param._3; - if (!r) { - return [ - param._1, - param._2 - ]; - } - _param = r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var r = param._3; + if (/* tag */typeof r === "number") { + return [ + param._1, + param._2 + ]; + } + _param = r; + continue ; }; } function remove_min_binding(param) { - if (param) { - var l = param._0; - if (l) { - return bal(remove_min_binding(l), param._1, param._2, param._3); - } else { - return param._3; - } + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Invalid_argument", + _1: "Map.remove_min_elt", + Error: new Error() + }; + } + var l = param._0; + if (/* tag */typeof l === "number") { + return param._3; + } else { + return bal(remove_min_binding(l), param._1, param._2, param._3); } - throw { - RE_EXN_ID: "Invalid_argument", - _1: "Map.remove_min_elt", - Error: new Error() - }; } function remove(x, param) { - if (!param) { + if (/* tag */typeof param === "number") { return /* Empty */0; } var r = param._3; @@ -847,10 +854,10 @@ function remove(x, param) { var l = param._0; var c = Caml.int_compare(x, v); if (c === 0) { - if (!l) { + if (/* tag */typeof l === "number") { return r; } - if (!r) { + if (/* tag */typeof r === "number") { return l; } var match = min_binding(r); @@ -865,7 +872,7 @@ function remove(x, param) { function iter(f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } iter(f, param._0); @@ -876,7 +883,7 @@ function iter(f, _param) { } function map(f, param) { - if (!param) { + if (/* tag */typeof param === "number") { return /* Empty */0; } var l$p = map(f, param._0); @@ -892,7 +899,7 @@ function map(f, param) { } function mapi(f, param) { - if (!param) { + if (/* tag */typeof param === "number") { return /* Empty */0; } var v = param._1; @@ -912,7 +919,7 @@ function fold(f, _m, _accu) { while(true) { var accu = _accu; var m = _m; - if (!m) { + if (/* tag */typeof m === "number") { return accu; } _accu = Curry._3(f, m._1, m._2, fold(f, m._0, accu)); @@ -924,7 +931,7 @@ function fold(f, _m, _accu) { function for_all(p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return true; } if (!Curry._2(p, param._1, param._2)) { @@ -941,7 +948,7 @@ function for_all(p, _param) { function exists(p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } if (Curry._2(p, param._1, param._2)) { @@ -956,30 +963,30 @@ function exists(p, _param) { } function add_min_binding(k, v, param) { - if (param) { - return bal(add_min_binding(k, v, param._0), param._1, param._2, param._3); - } else { + if (/* tag */typeof param === "number") { return singleton(k, v); + } else { + return bal(add_min_binding(k, v, param._0), param._1, param._2, param._3); } } function add_max_binding(k, v, param) { - if (param) { - return bal(param._0, param._1, param._2, add_max_binding(k, v, param._3)); - } else { + if (/* tag */typeof param === "number") { return singleton(k, v); + } else { + return bal(param._0, param._1, param._2, add_max_binding(k, v, param._3)); } } function join(l, v, d, r) { - if (!l) { + if (/* tag */typeof l === "number") { return add_min_binding(v, d, r); } - if (!r) { + var lh = l._4; + if (/* tag */typeof r === "number") { return add_max_binding(v, d, l); } var rh = r._4; - var lh = l._4; if (lh > (rh + 2 | 0)) { return bal(l._0, l._1, l._2, join(l._3, v, d, r)); } else if (rh > (lh + 2 | 0)) { @@ -990,10 +997,10 @@ function join(l, v, d, r) { } function concat(t1, t2) { - if (!t1) { + if (/* tag */typeof t1 === "number") { return t2; } - if (!t2) { + if (/* tag */typeof t2 === "number") { return t1; } var match = min_binding(t2); @@ -1009,7 +1016,7 @@ function concat_or_join(t1, v, d, t2) { } function split(x, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, undefined, @@ -1045,34 +1052,37 @@ function split(x, param) { } function merge(f, s1, s2) { - if (s1) { + if (/* tag */typeof s1 === "number") { + if (/* tag */typeof s2 === "number") { + return /* Empty */0; + } + + } else { var v1 = s1._1; if (s1._4 >= height(s2)) { var match = split(v1, s2); return concat_or_join(merge(f, s1._0, match[0]), v1, Curry._3(f, v1, Caml_option.some(s1._2), match[1]), merge(f, s1._3, match[2])); } - } else if (!s2) { - return /* Empty */0; } - if (s2) { - var v2 = s2._1; - var match$1 = split(v2, s1); - return concat_or_join(merge(f, match$1[0], s2._0), v2, Curry._3(f, v2, match$1[1], Caml_option.some(s2._2)), merge(f, match$1[2], s2._3)); + if (/* tag */typeof s2 === "number") { + throw { + RE_EXN_ID: "Assert_failure", + _1: [ + "inline_map2_test.ml", + 270, + 10 + ], + Error: new Error() + }; } - throw { - RE_EXN_ID: "Assert_failure", - _1: [ - "inline_map2_test.ml", - 270, - 10 - ], - Error: new Error() - }; + var v2 = s2._1; + var match$1 = split(v2, s1); + return concat_or_join(merge(f, match$1[0], s2._0), v2, Curry._3(f, v2, match$1[1], Caml_option.some(s2._2)), merge(f, match$1[2], s2._3)); } function filter(p, param) { - if (!param) { + if (/* tag */typeof param === "number") { return /* Empty */0; } var d = param._2; @@ -1088,7 +1098,7 @@ function filter(p, param) { } function partition(p, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, /* Empty */0 @@ -1120,7 +1130,7 @@ function cons_enum(_m, _e) { while(true) { var e = _e; var m = _m; - if (!m) { + if (/* tag */typeof m === "number") { return e; } _e = /* More */{ @@ -1140,14 +1150,14 @@ function compare(cmp, m1, m2) { while(true) { var e2 = _e2; var e1 = _e1; - if (!e1) { - if (e2) { - return -1; - } else { + if (/* tag */typeof e1 === "number") { + if (/* tag */typeof e2 === "number") { return 0; + } else { + return -1; } } - if (!e2) { + if (/* tag */typeof e2 === "number") { return 1; } var c = Caml.int_compare(e1._0, e2._0); @@ -1170,14 +1180,14 @@ function equal(cmp, m1, m2) { while(true) { var e2 = _e2; var e1 = _e1; - if (!e1) { - if (e2) { - return false; - } else { + if (/* tag */typeof e1 === "number") { + if (/* tag */typeof e2 === "number") { return true; + } else { + return false; } } - if (!e2) { + if (/* tag */typeof e2 === "number") { return false; } if (e1._0 !== e2._0) { @@ -1193,10 +1203,10 @@ function equal(cmp, m1, m2) { } function cardinal(param) { - if (param) { - return (cardinal(param._0) + 1 | 0) + cardinal(param._3) | 0; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return (cardinal(param._0) + 1 | 0) + cardinal(param._3) | 0; } } @@ -1204,7 +1214,7 @@ function bindings_aux(_accu, _param) { while(true) { var param = _param; var accu = _accu; - if (!param) { + if (/* tag */typeof param === "number") { return accu; } _param = param._0; @@ -1290,10 +1300,10 @@ var m = List.fold_left((function (acc, param) { }); function height$1(param) { - if (param) { - return param._4; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return param._4; } } @@ -1320,26 +1330,28 @@ function singleton$1(x, d) { } function bal$1(l, x, d, r) { - var hl = l ? l._4 : 0; - var hr = r ? r._4 : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l._4; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r._4; if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l._3; - var ld = l._2; - var lv = l._1; - var ll = l._0; - if (height$1(ll) >= height$1(lr)) { - return create$1(ll, lv, ld, create$1(lr, x, d, r)); - } - if (lr) { - return create$1(create$1(ll, lv, ld, lr._0), lr._1, lr._2, create$1(lr._3, x, d, r)); - } + if (/* tag */typeof l === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var lr = l._3; + var ld = l._2; + var lv = l._1; + var ll = l._0; + if (height$1(ll) >= height$1(lr)) { + return create$1(ll, lv, ld, create$1(lr, x, d, r)); + } + if (/* tag */typeof lr !== "number") { + return create$1(create$1(ll, lv, ld, lr._0), lr._1, lr._2, create$1(lr._3, x, d, r)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -1355,23 +1367,23 @@ function bal$1(l, x, d, r) { _4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0 }; } - if (r) { - var rr = r._3; - var rd = r._2; - var rv = r._1; - var rl = r._0; - if (height$1(rr) >= height$1(rl)) { - return create$1(create$1(l, x, d, rl), rv, rd, rr); - } - if (rl) { - return create$1(create$1(l, x, d, rl._0), rl._1, rl._2, create$1(rl._3, rv, rd, rr)); - } + if (/* tag */typeof r === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var rr = r._3; + var rd = r._2; + var rv = r._1; + var rl = r._0; + if (height$1(rr) >= height$1(rl)) { + return create$1(create$1(l, x, d, rl), rv, rd, rr); + } + if (/* tag */typeof rl !== "number") { + return create$1(create$1(l, x, d, rl._0), rl._1, rl._2, create$1(rl._3, rv, rd, rr)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -1380,15 +1392,15 @@ function bal$1(l, x, d, r) { } function is_empty$1(param) { - if (param) { - return false; - } else { + if (/* tag */typeof param === "number") { return true; + } else { + return false; } } function add$1(x, data, param) { - if (!param) { + if (/* tag */typeof param === "number") { return /* Node */{ _0: /* Empty */0, _1: x, @@ -1420,25 +1432,25 @@ function add$1(x, data, param) { function find$1(x, _param) { while(true) { var param = _param; - if (param) { - var c = Caml.string_compare(x, param._1); - if (c === 0) { - return param._2; - } - _param = c < 0 ? param._0 : param._3; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var c = Caml.string_compare(x, param._1); + if (c === 0) { + return param._2; + } + _param = c < 0 ? param._0 : param._3; + continue ; }; } function mem$1(x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } var c = Caml.string_compare(x, param._1); @@ -1453,63 +1465,63 @@ function mem$1(x, _param) { function min_binding$1(_param) { while(true) { var param = _param; - if (param) { - var l = param._0; - if (!l) { - return [ - param._1, - param._2 - ]; - } - _param = l; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var l = param._0; + if (/* tag */typeof l === "number") { + return [ + param._1, + param._2 + ]; + } + _param = l; + continue ; }; } function max_binding$1(_param) { while(true) { var param = _param; - if (param) { - var r = param._3; - if (!r) { - return [ - param._1, - param._2 - ]; - } - _param = r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var r = param._3; + if (/* tag */typeof r === "number") { + return [ + param._1, + param._2 + ]; + } + _param = r; + continue ; }; } function remove_min_binding$1(param) { - if (param) { - var l = param._0; - if (l) { - return bal$1(remove_min_binding$1(l), param._1, param._2, param._3); - } else { - return param._3; - } + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Invalid_argument", + _1: "Map.remove_min_elt", + Error: new Error() + }; + } + var l = param._0; + if (/* tag */typeof l === "number") { + return param._3; + } else { + return bal$1(remove_min_binding$1(l), param._1, param._2, param._3); } - throw { - RE_EXN_ID: "Invalid_argument", - _1: "Map.remove_min_elt", - Error: new Error() - }; } function remove$1(x, param) { - if (!param) { + if (/* tag */typeof param === "number") { return /* Empty */0; } var r = param._3; @@ -1518,10 +1530,10 @@ function remove$1(x, param) { var l = param._0; var c = Caml.string_compare(x, v); if (c === 0) { - if (!l) { + if (/* tag */typeof l === "number") { return r; } - if (!r) { + if (/* tag */typeof r === "number") { return l; } var match = min_binding$1(r); @@ -1536,7 +1548,7 @@ function remove$1(x, param) { function iter$1(f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } iter$1(f, param._0); @@ -1547,7 +1559,7 @@ function iter$1(f, _param) { } function map$1(f, param) { - if (!param) { + if (/* tag */typeof param === "number") { return /* Empty */0; } var l$p = map$1(f, param._0); @@ -1563,7 +1575,7 @@ function map$1(f, param) { } function mapi$1(f, param) { - if (!param) { + if (/* tag */typeof param === "number") { return /* Empty */0; } var v = param._1; @@ -1583,7 +1595,7 @@ function fold$1(f, _m, _accu) { while(true) { var accu = _accu; var m = _m; - if (!m) { + if (/* tag */typeof m === "number") { return accu; } _accu = Curry._3(f, m._1, m._2, fold$1(f, m._0, accu)); @@ -1595,7 +1607,7 @@ function fold$1(f, _m, _accu) { function for_all$1(p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return true; } if (!Curry._2(p, param._1, param._2)) { @@ -1612,7 +1624,7 @@ function for_all$1(p, _param) { function exists$1(p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } if (Curry._2(p, param._1, param._2)) { @@ -1627,30 +1639,30 @@ function exists$1(p, _param) { } function add_min_binding$1(k, v, param) { - if (param) { - return bal$1(add_min_binding$1(k, v, param._0), param._1, param._2, param._3); - } else { + if (/* tag */typeof param === "number") { return singleton$1(k, v); + } else { + return bal$1(add_min_binding$1(k, v, param._0), param._1, param._2, param._3); } } function add_max_binding$1(k, v, param) { - if (param) { - return bal$1(param._0, param._1, param._2, add_max_binding$1(k, v, param._3)); - } else { + if (/* tag */typeof param === "number") { return singleton$1(k, v); + } else { + return bal$1(param._0, param._1, param._2, add_max_binding$1(k, v, param._3)); } } function join$1(l, v, d, r) { - if (!l) { + if (/* tag */typeof l === "number") { return add_min_binding$1(v, d, r); } - if (!r) { + var lh = l._4; + if (/* tag */typeof r === "number") { return add_max_binding$1(v, d, l); } var rh = r._4; - var lh = l._4; if (lh > (rh + 2 | 0)) { return bal$1(l._0, l._1, l._2, join$1(l._3, v, d, r)); } else if (rh > (lh + 2 | 0)) { @@ -1661,10 +1673,10 @@ function join$1(l, v, d, r) { } function concat$1(t1, t2) { - if (!t1) { + if (/* tag */typeof t1 === "number") { return t2; } - if (!t2) { + if (/* tag */typeof t2 === "number") { return t1; } var match = min_binding$1(t2); @@ -1680,7 +1692,7 @@ function concat_or_join$1(t1, v, d, t2) { } function split$1(x, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, undefined, @@ -1716,34 +1728,37 @@ function split$1(x, param) { } function merge$1(f, s1, s2) { - if (s1) { + if (/* tag */typeof s1 === "number") { + if (/* tag */typeof s2 === "number") { + return /* Empty */0; + } + + } else { var v1 = s1._1; if (s1._4 >= height$1(s2)) { var match = split$1(v1, s2); return concat_or_join$1(merge$1(f, s1._0, match[0]), v1, Curry._3(f, v1, Caml_option.some(s1._2), match[1]), merge$1(f, s1._3, match[2])); } - } else if (!s2) { - return /* Empty */0; } - if (s2) { - var v2 = s2._1; - var match$1 = split$1(v2, s1); - return concat_or_join$1(merge$1(f, match$1[0], s2._0), v2, Curry._3(f, v2, match$1[1], Caml_option.some(s2._2)), merge$1(f, match$1[2], s2._3)); + if (/* tag */typeof s2 === "number") { + throw { + RE_EXN_ID: "Assert_failure", + _1: [ + "inline_map2_test.ml", + 270, + 10 + ], + Error: new Error() + }; } - throw { - RE_EXN_ID: "Assert_failure", - _1: [ - "inline_map2_test.ml", - 270, - 10 - ], - Error: new Error() - }; + var v2 = s2._1; + var match$1 = split$1(v2, s1); + return concat_or_join$1(merge$1(f, match$1[0], s2._0), v2, Curry._3(f, v2, match$1[1], Caml_option.some(s2._2)), merge$1(f, match$1[2], s2._3)); } function filter$1(p, param) { - if (!param) { + if (/* tag */typeof param === "number") { return /* Empty */0; } var d = param._2; @@ -1759,7 +1774,7 @@ function filter$1(p, param) { } function partition$1(p, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, /* Empty */0 @@ -1791,7 +1806,7 @@ function cons_enum$1(_m, _e) { while(true) { var e = _e; var m = _m; - if (!m) { + if (/* tag */typeof m === "number") { return e; } _e = /* More */{ @@ -1811,14 +1826,14 @@ function compare$1(cmp, m1, m2) { while(true) { var e2 = _e2; var e1 = _e1; - if (!e1) { - if (e2) { - return -1; - } else { + if (/* tag */typeof e1 === "number") { + if (/* tag */typeof e2 === "number") { return 0; + } else { + return -1; } } - if (!e2) { + if (/* tag */typeof e2 === "number") { return 1; } var c = Caml.string_compare(e1._0, e2._0); @@ -1841,14 +1856,14 @@ function equal$1(cmp, m1, m2) { while(true) { var e2 = _e2; var e1 = _e1; - if (!e1) { - if (e2) { - return false; - } else { + if (/* tag */typeof e1 === "number") { + if (/* tag */typeof e2 === "number") { return true; + } else { + return false; } } - if (!e2) { + if (/* tag */typeof e2 === "number") { return false; } if (Caml.string_compare(e1._0, e2._0) !== 0) { @@ -1864,10 +1879,10 @@ function equal$1(cmp, m1, m2) { } function cardinal$1(param) { - if (param) { - return (cardinal$1(param._0) + 1 | 0) + cardinal$1(param._3) | 0; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return (cardinal$1(param._0) + 1 | 0) + cardinal$1(param._3) | 0; } } @@ -1875,7 +1890,7 @@ function bindings_aux$1(_accu, _param) { while(true) { var param = _param; var accu = _accu; - if (!param) { + if (/* tag */typeof param === "number") { return accu; } _param = param._0; diff --git a/jscomp/test/inline_map_demo.js b/jscomp/test/inline_map_demo.js index 2846e9c70e..c141f7d250 100644 --- a/jscomp/test/inline_map_demo.js +++ b/jscomp/test/inline_map_demo.js @@ -5,10 +5,10 @@ var Caml = require("../../lib/js/caml.js"); var List = require("../../lib/js/list.js"); function height(x) { - if (x) { - return x._4; - } else { + if (/* tag */typeof x === "number") { return 0; + } else { + return x._4; } } @@ -25,36 +25,38 @@ function create(l, x, d, r) { } function bal(l, x, d, r) { - var hl = l ? l._4 : 0; - var hr = r ? r._4 : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l._4; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r._4; if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l._3; - var ld = l._2; - var lv = l._1; - var ll = l._0; - if (height(ll) >= height(lr)) { - return create(ll, lv, ld, create(lr, x, d, r)); - } - if (lr) { - return create(create(ll, lv, ld, lr._0), lr._1, lr._2, create(lr._3, x, d, r)); - } + if (/* tag */typeof l === "number") { throw { RE_EXN_ID: "Assert_failure", _1: [ "inline_map_demo.res", - 47, - 19 + 41, + 15 ], Error: new Error() }; } + var lr = l._3; + var ld = l._2; + var lv = l._1; + var ll = l._0; + if (height(ll) >= height(lr)) { + return create(ll, lv, ld, create(lr, x, d, r)); + } + if (/* tag */typeof lr !== "number") { + return create(create(ll, lv, ld, lr._0), lr._1, lr._2, create(lr._3, x, d, r)); + } throw { RE_EXN_ID: "Assert_failure", _1: [ "inline_map_demo.res", - 41, - 15 + 47, + 19 ], Error: new Error() }; @@ -68,40 +70,40 @@ function bal(l, x, d, r) { _4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0 }; } - if (r) { - var rr = r._3; - var rd = r._2; - var rv = r._1; - var rl = r._0; - if (height(rr) >= height(rl)) { - return create(create(l, x, d, rl), rv, rd, rr); - } - if (rl) { - return create(create(l, x, d, rl._0), rl._1, rl._2, create(rl._3, rv, rd, rr)); - } + if (/* tag */typeof r === "number") { throw { RE_EXN_ID: "Assert_failure", _1: [ "inline_map_demo.res", - 61, - 19 + 55, + 15 ], Error: new Error() }; } + var rr = r._3; + var rd = r._2; + var rv = r._1; + var rl = r._0; + if (height(rr) >= height(rl)) { + return create(create(l, x, d, rl), rv, rd, rr); + } + if (/* tag */typeof rl !== "number") { + return create(create(l, x, d, rl._0), rl._1, rl._2, create(rl._3, rv, rd, rr)); + } throw { RE_EXN_ID: "Assert_failure", _1: [ "inline_map_demo.res", - 55, - 15 + 61, + 19 ], Error: new Error() }; } function add(x, data, tree) { - if (!tree) { + if (/* tag */typeof tree === "number") { return /* Node */{ _0: /* Empty */0, _1: x, @@ -161,18 +163,18 @@ var m = List.fold_left((function (acc, param) { function find(px, _x) { while(true) { var x = _x; - if (x) { - var c = Caml.int_compare(px, x._1); - if (c === 0) { - return x._2; - } - _x = c < 0 ? x._0 : x._3; - continue ; + if (/* tag */typeof x === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var c = Caml.int_compare(px, x._1); + if (c === 0) { + return x._2; + } + _x = c < 0 ? x._0 : x._3; + continue ; }; } diff --git a/jscomp/test/inline_map_test.js b/jscomp/test/inline_map_test.js index 4c4186d72f..538a70d250 100644 --- a/jscomp/test/inline_map_test.js +++ b/jscomp/test/inline_map_test.js @@ -5,10 +5,10 @@ var Caml = require("../../lib/js/caml.js"); var List = require("../../lib/js/list.js"); function height(param) { - if (param) { - return param._4; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return param._4; } } @@ -25,26 +25,28 @@ function create(l, x, d, r) { } function bal(l, x, d, r) { - var hl = l ? l._4 : 0; - var hr = r ? r._4 : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l._4; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r._4; if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l._3; - var ld = l._2; - var lv = l._1; - var ll = l._0; - if (height(ll) >= height(lr)) { - return create(ll, lv, ld, create(lr, x, d, r)); - } - if (lr) { - return create(create(ll, lv, ld, lr._0), lr._1, lr._2, create(lr._3, x, d, r)); - } + if (/* tag */typeof l === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var lr = l._3; + var ld = l._2; + var lv = l._1; + var ll = l._0; + if (height(ll) >= height(lr)) { + return create(ll, lv, ld, create(lr, x, d, r)); + } + if (/* tag */typeof lr !== "number") { + return create(create(ll, lv, ld, lr._0), lr._1, lr._2, create(lr._3, x, d, r)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -60,23 +62,23 @@ function bal(l, x, d, r) { _4: hl >= hr ? hl + 1 | 0 : hr + 1 | 0 }; } - if (r) { - var rr = r._3; - var rd = r._2; - var rv = r._1; - var rl = r._0; - if (height(rr) >= height(rl)) { - return create(create(l, x, d, rl), rv, rd, rr); - } - if (rl) { - return create(create(l, x, d, rl._0), rl._1, rl._2, create(rl._3, rv, rd, rr)); - } + if (/* tag */typeof r === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var rr = r._3; + var rd = r._2; + var rv = r._1; + var rl = r._0; + if (height(rr) >= height(rl)) { + return create(create(l, x, d, rl), rv, rd, rr); + } + if (/* tag */typeof rl !== "number") { + return create(create(l, x, d, rl._0), rl._1, rl._2, create(rl._3, rv, rd, rr)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -85,7 +87,7 @@ function bal(l, x, d, r) { } function add(x, data, param) { - if (!param) { + if (/* tag */typeof param === "number") { return /* Node */{ _0: /* Empty */0, _1: x, @@ -117,18 +119,18 @@ function add(x, data, param) { function find(x, _param) { while(true) { var param = _param; - if (param) { - var c = Caml.int_compare(x, param._1); - if (c === 0) { - return param._2; - } - _param = c < 0 ? param._0 : param._3; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var c = Caml.int_compare(x, param._1); + if (c === 0) { + return param._2; + } + _param = c < 0 ? param._0 : param._3; + continue ; }; } diff --git a/jscomp/test/inline_record_test.js b/jscomp/test/inline_record_test.js index 43cb890ec9..6b0674f355 100644 --- a/jscomp/test/inline_record_test.js +++ b/jscomp/test/inline_record_test.js @@ -181,13 +181,13 @@ if (v6.RE_EXN_ID === A4) { eq("File \"inline_record_test.ml\", line 87, characters 6-13", tmp$3, 11); function ff1(x) { - if (x) { + if (/* tag */typeof x === "number") { + return /* A1 */0; + } else { return /* A0 */{ lbl: x.lbl + 1 | 0, more: x.more }; - } else { - return /* A1 */0; } } diff --git a/jscomp/test/int64_test.js b/jscomp/test/int64_test.js index 989c15230c..59f6d3a7ef 100644 --- a/jscomp/test/int64_test.js +++ b/jscomp/test/int64_test.js @@ -2147,7 +2147,7 @@ function eq(loc, x, y) { function id(loc, x) { var float_value = Caml_int64.float_of_bits(x); var match = Pervasives.classify_float(float_value); - if (match >= 4) { + if (match === /* FP_nan */4) { return ; } else { return eq(loc, Caml_int64.bits_of_float(float_value), x); diff --git a/jscomp/test/int_map.js b/jscomp/test/int_map.js index 623f9c2d63..fe3b276233 100644 --- a/jscomp/test/int_map.js +++ b/jscomp/test/int_map.js @@ -5,10 +5,10 @@ var Curry = require("../../lib/js/curry.js"); var Caml_option = require("../../lib/js/caml_option.js"); function height(param) { - if (param) { - return param.h; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return param.h; } } @@ -35,26 +35,28 @@ function singleton(x, d) { } function bal(l, x, d, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l.r; - var ld = l.d; - var lv = l.v; - var ll = l.l; - if (height(ll) >= height(lr)) { - return create(ll, lv, ld, create(lr, x, d, r)); - } - if (lr) { - return create(create(ll, lv, ld, lr.l), lr.v, lr.d, create(lr.r, x, d, r)); - } + if (/* tag */typeof l === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var lr = l.r; + var ld = l.d; + var lv = l.v; + var ll = l.l; + if (height(ll) >= height(lr)) { + return create(ll, lv, ld, create(lr, x, d, r)); + } + if (/* tag */typeof lr !== "number") { + return create(create(ll, lv, ld, lr.l), lr.v, lr.d, create(lr.r, x, d, r)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -70,23 +72,23 @@ function bal(l, x, d, r) { h: hl >= hr ? hl + 1 | 0 : hr + 1 | 0 }; } - if (r) { - var rr = r.r; - var rd = r.d; - var rv = r.v; - var rl = r.l; - if (height(rr) >= height(rl)) { - return create(create(l, x, d, rl), rv, rd, rr); - } - if (rl) { - return create(create(l, x, d, rl.l), rl.v, rl.d, create(rl.r, rv, rd, rr)); - } + if (/* tag */typeof r === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var rr = r.r; + var rd = r.d; + var rv = r.v; + var rl = r.l; + if (height(rr) >= height(rl)) { + return create(create(l, x, d, rl), rv, rd, rr); + } + if (/* tag */typeof rl !== "number") { + return create(create(l, x, d, rl.l), rl.v, rl.d, create(rl.r, rv, rd, rr)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -95,15 +97,15 @@ function bal(l, x, d, r) { } function is_empty(param) { - if (param) { - return false; - } else { + if (/* tag */typeof param === "number") { return true; + } else { + return false; } } function add(x, data, m) { - if (!m) { + if (/* tag */typeof m === "number") { return /* Node */{ l: /* Empty */0, v: x, @@ -149,65 +151,65 @@ function add(x, data, m) { function find(x, _param) { while(true) { var param = _param; - if (param) { - var c = Caml.int_compare(x, param.v); - if (c === 0) { - return param.d; - } - _param = c < 0 ? param.l : param.r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var c = Caml.int_compare(x, param.v); + if (c === 0) { + return param.d; + } + _param = c < 0 ? param.l : param.r; + continue ; }; } function find_first(f, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - if (Curry._1(f, v)) { - var _v0 = v; - var _d0 = param.d; - var _param$1 = param.l; - while(true) { - var param$1 = _param$1; - var d0 = _d0; - var v0 = _v0; - if (!param$1) { - return [ - v0, - d0 - ]; - } - var v$1 = param$1.v; - if (Curry._1(f, v$1)) { - _param$1 = param$1.l; - _d0 = param$1.d; - _v0 = v$1; - continue ; - } - _param$1 = param$1.r; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + var v = param.v; + if (Curry._1(f, v)) { + var _v0 = v; + var _d0 = param.d; + var _param$1 = param.l; + while(true) { + var param$1 = _param$1; + var d0 = _d0; + var v0 = _v0; + if (/* tag */typeof param$1 === "number") { + return [ + v0, + d0 + ]; + } + var v$1 = param$1.v; + if (Curry._1(f, v$1)) { + _param$1 = param$1.l; + _d0 = param$1.d; + _v0 = v$1; continue ; - }; - } - _param = param.r; - continue ; + } + _param$1 = param$1.r; + continue ; + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + _param = param.r; + continue ; }; } function find_first_opt(f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -219,7 +221,7 @@ function find_first_opt(f, _param) { var param$1 = _param$1; var d0 = _d0; var v0 = _v0; - if (!param$1) { + if (/* tag */typeof param$1 === "number") { return [ v0, d0 @@ -244,47 +246,47 @@ function find_first_opt(f, _param) { function find_last(f, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - if (Curry._1(f, v)) { - var _v0 = v; - var _d0 = param.d; - var _param$1 = param.r; - while(true) { - var param$1 = _param$1; - var d0 = _d0; - var v0 = _v0; - if (!param$1) { - return [ - v0, - d0 - ]; - } - var v$1 = param$1.v; - if (Curry._1(f, v$1)) { - _param$1 = param$1.r; - _d0 = param$1.d; - _v0 = v$1; - continue ; - } - _param$1 = param$1.l; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + var v = param.v; + if (Curry._1(f, v)) { + var _v0 = v; + var _d0 = param.d; + var _param$1 = param.r; + while(true) { + var param$1 = _param$1; + var d0 = _d0; + var v0 = _v0; + if (/* tag */typeof param$1 === "number") { + return [ + v0, + d0 + ]; + } + var v$1 = param$1.v; + if (Curry._1(f, v$1)) { + _param$1 = param$1.r; + _d0 = param$1.d; + _v0 = v$1; continue ; - }; - } - _param = param.l; - continue ; + } + _param$1 = param$1.l; + continue ; + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + _param = param.l; + continue ; }; } function find_last_opt(f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -296,7 +298,7 @@ function find_last_opt(f, _param) { var param$1 = _param$1; var d0 = _d0; var v0 = _v0; - if (!param$1) { + if (/* tag */typeof param$1 === "number") { return [ v0, d0 @@ -321,7 +323,7 @@ function find_last_opt(f, _param) { function find_opt(x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var c = Caml.int_compare(x, param.v); @@ -336,7 +338,7 @@ function find_opt(x, _param) { function mem(x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } var c = Caml.int_compare(x, param.v); @@ -351,32 +353,32 @@ function mem(x, _param) { function min_binding(_param) { while(true) { var param = _param; - if (param) { - var l = param.l; - if (!l) { - return [ - param.v, - param.d - ]; - } - _param = l; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var l = param.l; + if (/* tag */typeof l === "number") { + return [ + param.v, + param.d + ]; + } + _param = l; + continue ; }; } function min_binding_opt(_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var l = param.l; - if (!l) { + if (/* tag */typeof l === "number") { return [ param.v, param.d @@ -390,32 +392,32 @@ function min_binding_opt(_param) { function max_binding(_param) { while(true) { var param = _param; - if (param) { - var r = param.r; - if (!r) { - return [ - param.v, - param.d - ]; - } - _param = r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var r = param.r; + if (/* tag */typeof r === "number") { + return [ + param.v, + param.d + ]; + } + _param = r; + continue ; }; } function max_binding_opt(_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var r = param.r; - if (!r) { + if (/* tag */typeof r === "number") { return [ param.v, param.d @@ -427,26 +429,26 @@ function max_binding_opt(_param) { } function remove_min_binding(param) { - if (param) { - var l = param.l; - if (l) { - return bal(remove_min_binding(l), param.v, param.d, param.r); - } else { - return param.r; - } + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Invalid_argument", + _1: "Map.remove_min_elt", + Error: new Error() + }; + } + var l = param.l; + if (/* tag */typeof l === "number") { + return param.r; + } else { + return bal(remove_min_binding(l), param.v, param.d, param.r); } - throw { - RE_EXN_ID: "Invalid_argument", - _1: "Map.remove_min_elt", - Error: new Error() - }; } function merge(t1, t2) { - if (!t1) { + if (/* tag */typeof t1 === "number") { return t2; } - if (!t2) { + if (/* tag */typeof t2 === "number") { return t1; } var match = min_binding(t2); @@ -454,7 +456,7 @@ function merge(t1, t2) { } function remove(x, m) { - if (!m) { + if (/* tag */typeof m === "number") { return /* Empty */0; } var r = m.r; @@ -482,63 +484,63 @@ function remove(x, m) { } function update(x, f, m) { - if (m) { - var r = m.r; - var d = m.d; - var v = m.v; - var l = m.l; - var c = Caml.int_compare(x, v); - if (c === 0) { - var data = Curry._1(f, Caml_option.some(d)); - if (data === undefined) { - return merge(l, r); - } - var data$1 = Caml_option.valFromOption(data); - if (d === data$1) { - return m; - } else { - return /* Node */{ - l: l, - v: x, - d: data$1, - r: r, - h: m.h - }; - } + if (/* tag */typeof m === "number") { + var data = Curry._1(f, undefined); + if (data !== undefined) { + return /* Node */{ + l: /* Empty */0, + v: x, + d: Caml_option.valFromOption(data), + r: /* Empty */0, + h: 1 + }; + } else { + return /* Empty */0; } - if (c < 0) { - var ll = update(x, f, l); - if (l === ll) { - return m; - } else { - return bal(ll, v, d, r); - } + } + var r = m.r; + var d = m.d; + var v = m.v; + var l = m.l; + var c = Caml.int_compare(x, v); + if (c === 0) { + var data$1 = Curry._1(f, Caml_option.some(d)); + if (data$1 === undefined) { + return merge(l, r); + } + var data$2 = Caml_option.valFromOption(data$1); + if (d === data$2) { + return m; + } else { + return /* Node */{ + l: l, + v: x, + d: data$2, + r: r, + h: m.h + }; } - var rr = update(x, f, r); - if (r === rr) { + } + if (c < 0) { + var ll = update(x, f, l); + if (l === ll) { return m; } else { - return bal(l, v, d, rr); + return bal(ll, v, d, r); } } - var data$2 = Curry._1(f, undefined); - if (data$2 !== undefined) { - return /* Node */{ - l: /* Empty */0, - v: x, - d: Caml_option.valFromOption(data$2), - r: /* Empty */0, - h: 1 - }; + var rr = update(x, f, r); + if (r === rr) { + return m; } else { - return /* Empty */0; + return bal(l, v, d, rr); } } function iter(f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } iter(f, param.l); @@ -549,7 +551,7 @@ function iter(f, _param) { } function map(f, param) { - if (!param) { + if (/* tag */typeof param === "number") { return /* Empty */0; } var l$p = map(f, param.l); @@ -565,7 +567,7 @@ function map(f, param) { } function mapi(f, param) { - if (!param) { + if (/* tag */typeof param === "number") { return /* Empty */0; } var v = param.v; @@ -585,7 +587,7 @@ function fold(f, _m, _accu) { while(true) { var accu = _accu; var m = _m; - if (!m) { + if (/* tag */typeof m === "number") { return accu; } _accu = Curry._3(f, m.v, m.d, fold(f, m.l, accu)); @@ -597,7 +599,7 @@ function fold(f, _m, _accu) { function for_all(p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return true; } if (!Curry._2(p, param.v, param.d)) { @@ -614,7 +616,7 @@ function for_all(p, _param) { function exists(p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } if (Curry._2(p, param.v, param.d)) { @@ -629,30 +631,30 @@ function exists(p, _param) { } function add_min_binding(k, x, param) { - if (param) { - return bal(add_min_binding(k, x, param.l), param.v, param.d, param.r); - } else { + if (/* tag */typeof param === "number") { return singleton(k, x); + } else { + return bal(add_min_binding(k, x, param.l), param.v, param.d, param.r); } } function add_max_binding(k, x, param) { - if (param) { - return bal(param.l, param.v, param.d, add_max_binding(k, x, param.r)); - } else { + if (/* tag */typeof param === "number") { return singleton(k, x); + } else { + return bal(param.l, param.v, param.d, add_max_binding(k, x, param.r)); } } function join(l, v, d, r) { - if (!l) { + if (/* tag */typeof l === "number") { return add_min_binding(v, d, r); } - if (!r) { + var lh = l.h; + if (/* tag */typeof r === "number") { return add_max_binding(v, d, l); } var rh = r.h; - var lh = l.h; if (lh > (rh + 2 | 0)) { return bal(l.l, l.v, l.d, join(l.r, v, d, r)); } else if (rh > (lh + 2 | 0)) { @@ -663,10 +665,10 @@ function join(l, v, d, r) { } function concat(t1, t2) { - if (!t1) { + if (/* tag */typeof t1 === "number") { return t2; } - if (!t2) { + if (/* tag */typeof t2 === "number") { return t1; } var match = min_binding(t2); @@ -682,7 +684,7 @@ function concat_or_join(t1, v, d, t2) { } function split(x, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, undefined, @@ -718,43 +720,46 @@ function split(x, param) { } function merge$1(f, s1, s2) { - if (s1) { + if (/* tag */typeof s1 === "number") { + if (/* tag */typeof s2 === "number") { + return /* Empty */0; + } + + } else { var v1 = s1.v; if (s1.h >= height(s2)) { var match = split(v1, s2); return concat_or_join(merge$1(f, s1.l, match[0]), v1, Curry._3(f, v1, Caml_option.some(s1.d), match[1]), merge$1(f, s1.r, match[2])); } - } else if (!s2) { - return /* Empty */0; } - if (s2) { - var v2 = s2.v; - var match$1 = split(v2, s1); - return concat_or_join(merge$1(f, match$1[0], s2.l), v2, Curry._3(f, v2, match$1[1], Caml_option.some(s2.d)), merge$1(f, match$1[2], s2.r)); + if (/* tag */typeof s2 === "number") { + throw { + RE_EXN_ID: "Assert_failure", + _1: [ + "map.ml", + 393, + 10 + ], + Error: new Error() + }; } - throw { - RE_EXN_ID: "Assert_failure", - _1: [ - "map.ml", - 393, - 10 - ], - Error: new Error() - }; + var v2 = s2.v; + var match$1 = split(v2, s1); + return concat_or_join(merge$1(f, match$1[0], s2.l), v2, Curry._3(f, v2, match$1[1], Caml_option.some(s2.d)), merge$1(f, match$1[2], s2.r)); } function union(f, s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return s2; } - if (!s2) { + var d1 = s1.d; + var v1 = s1.v; + if (/* tag */typeof s2 === "number") { return s1; } var d2 = s2.d; var v2 = s2.v; - var d1 = s1.d; - var v1 = s1.v; if (s1.h >= s2.h) { var match = split(v1, s2); var d2$1 = match[1]; @@ -778,7 +783,7 @@ function union(f, s1, s2) { } function filter(p, m) { - if (!m) { + if (/* tag */typeof m === "number") { return /* Empty */0; } var r = m.r; @@ -800,7 +805,7 @@ function filter(p, m) { } function partition(p, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, /* Empty */0 @@ -832,7 +837,7 @@ function cons_enum(_m, _e) { while(true) { var e = _e; var m = _m; - if (!m) { + if (/* tag */typeof m === "number") { return e; } _e = /* More */{ @@ -852,14 +857,14 @@ function compare(cmp, m1, m2) { while(true) { var e2 = _e2; var e1 = _e1; - if (!e1) { - if (e2) { - return -1; - } else { + if (/* tag */typeof e1 === "number") { + if (/* tag */typeof e2 === "number") { return 0; + } else { + return -1; } } - if (!e2) { + if (/* tag */typeof e2 === "number") { return 1; } var c = Caml.int_compare(e1._0, e2._0); @@ -882,14 +887,14 @@ function equal(cmp, m1, m2) { while(true) { var e2 = _e2; var e1 = _e1; - if (!e1) { - if (e2) { - return false; - } else { + if (/* tag */typeof e1 === "number") { + if (/* tag */typeof e2 === "number") { return true; + } else { + return false; } } - if (!e2) { + if (/* tag */typeof e2 === "number") { return false; } if (e1._0 !== e2._0) { @@ -905,10 +910,10 @@ function equal(cmp, m1, m2) { } function cardinal(param) { - if (param) { - return (cardinal(param.l) + 1 | 0) + cardinal(param.r) | 0; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return (cardinal(param.l) + 1 | 0) + cardinal(param.r) | 0; } } @@ -916,7 +921,7 @@ function bindings_aux(_accu, _param) { while(true) { var param = _param; var accu = _accu; - if (!param) { + if (/* tag */typeof param === "number") { return accu; } _param = param.l; diff --git a/jscomp/test/js_json_test.js b/jscomp/test/js_json_test.js index e9722028f1..64359ede10 100644 --- a/jscomp/test/js_json_test.js +++ b/jscomp/test/js_json_test.js @@ -61,7 +61,7 @@ var v = JSON.parse(" { \"x\" : [1, 2, 3 ] } "); add_test("File \"js_json_test.ml\", line 24, characters 11-18", (function (param) { var ty = Js_json.classify(v); - if (typeof ty === "number") { + if (/* tag */typeof ty === "number") { return { TAG: /* Ok */4, _0: false @@ -81,7 +81,7 @@ add_test("File \"js_json_test.ml\", line 24, characters 11-18", (function (param }; } var ty2 = Js_json.classify(Caml_option.valFromOption(v$1)); - if (typeof ty2 === "number") { + if (/* tag */typeof ty2 === "number") { return { TAG: /* Ok */4, _0: false @@ -95,7 +95,7 @@ add_test("File \"js_json_test.ml\", line 24, characters 11-18", (function (param } ty2._0.forEach(function (x) { var ty3 = Js_json.classify(x); - if (typeof ty3 === "number") { + if (/* tag */typeof ty3 === "number") { throw { RE_EXN_ID: "Assert_failure", _1: [ @@ -131,8 +131,8 @@ var json = JSON.parse(JSON.stringify(null)); var ty = Js_json.classify(json); -if (typeof ty === "number") { - if (ty >= 2) { +if (/* tag */typeof ty === "number") { + if (ty === /* JSONNull */2) { add_test("File \"js_json_test.ml\", line 55, characters 24-31", (function (param) { return { TAG: /* Ok */4, @@ -162,7 +162,7 @@ var json$1 = JSON.parse(JSON.stringify("test string")); var ty$1 = Js_json.classify(json$1); -if (typeof ty$1 === "number") { +if (/* tag */typeof ty$1 === "number") { add_test("File \"js_json_test.ml\", line 66, characters 16-23", (function (param) { return { TAG: /* Ok */4, @@ -186,7 +186,7 @@ var ty$2 = Js_json.classify(json$2); var exit = 0; -if (typeof ty$2 === "number" || ty$2.TAG !== /* JSONNumber */1) { +if (/* tag */typeof ty$2 === "number" || ty$2.TAG !== /* JSONNumber */1) { exit = 1; } else { eq("File \"js_json_test.ml\", line 75, characters 25-32", ty$2._0, 1.23456789); @@ -207,7 +207,7 @@ var ty$3 = Js_json.classify(json$3); var exit$1 = 0; -if (typeof ty$3 === "number" || ty$3.TAG !== /* JSONNumber */1) { +if (/* tag */typeof ty$3 === "number" || ty$3.TAG !== /* JSONNumber */1) { exit$1 = 1; } else { eq("File \"js_json_test.ml\", line 85, characters 25-32", ty$3._0 | 0, -1347440721); @@ -225,7 +225,7 @@ if (exit$1 === 1) { function test(v) { var json = JSON.parse(JSON.stringify(v)); var ty = Js_json.classify(json); - if (typeof ty !== "number") { + if (/* tag */typeof ty !== "number") { return add_test("File \"js_json_test.ml\", line 97, characters 18-25", (function (param) { return { TAG: /* Ok */4, @@ -238,14 +238,13 @@ function test(v) { return eq("File \"js_json_test.ml\", line 96, characters 25-32", false, v); case /* JSONTrue */1 : return eq("File \"js_json_test.ml\", line 95, characters 24-31", true, v); - case /* JSONNull */2 : - return add_test("File \"js_json_test.ml\", line 97, characters 18-25", (function (param) { - return { - TAG: /* Ok */4, - _0: false - }; - })); - + default: + return add_test("File \"js_json_test.ml\", line 97, characters 18-25", (function (param) { + return { + TAG: /* Ok */4, + _0: false + }; + })); } } @@ -278,7 +277,7 @@ var json$4 = JSON.parse(JSON.stringify(dict)); var ty$4 = Js_json.classify(json$4); -if (typeof ty$4 === "number") { +if (/* tag */typeof ty$4 === "number") { add_test("File \"js_json_test.ml\", line 135, characters 16-23", (function (param) { return { TAG: /* Ok */4, @@ -288,7 +287,7 @@ if (typeof ty$4 === "number") { } else if (ty$4.TAG === /* JSONObject */2) { var x = ty$4._0; var ta = Js_json.classify(option_get(Js_dict.get(x, "a"))); - if (typeof ta === "number") { + if (/* tag */typeof ta === "number") { add_test("File \"js_json_test.ml\", line 133, characters 18-25", (function (param) { return { TAG: /* Ok */4, @@ -305,7 +304,7 @@ if (typeof ty$4 === "number") { })); } else { var ty$5 = Js_json.classify(option_get(Js_dict.get(x, "b"))); - if (typeof ty$5 === "number") { + if (/* tag */typeof ty$5 === "number") { add_test("File \"js_json_test.ml\", line 131, characters 22-29", (function (param) { return { TAG: /* Ok */4, @@ -349,7 +348,7 @@ if (typeof ty$4 === "number") { function eq_at_i(loc, json, i, kind, expected) { var ty = Js_json.classify(json); - if (typeof ty === "number") { + if (/* tag */typeof ty === "number") { return add_test(loc, (function (param) { return { TAG: /* Ok */4, @@ -368,7 +367,7 @@ function eq_at_i(loc, json, i, kind, expected) { var ty$1 = Js_json.classify(Caml_array.get(ty._0, i)); switch (kind) { case /* String */0 : - if (typeof ty$1 === "number") { + if (/* tag */typeof ty$1 === "number") { return add_test(loc, (function (param) { return { TAG: /* Ok */4, @@ -386,7 +385,7 @@ function eq_at_i(loc, json, i, kind, expected) { })); } case /* Number */1 : - if (typeof ty$1 === "number") { + if (/* tag */typeof ty$1 === "number") { return add_test(loc, (function (param) { return { TAG: /* Ok */4, @@ -404,7 +403,7 @@ function eq_at_i(loc, json, i, kind, expected) { })); } case /* Object */2 : - if (typeof ty$1 === "number") { + if (/* tag */typeof ty$1 === "number") { return add_test(loc, (function (param) { return { TAG: /* Ok */4, @@ -422,7 +421,7 @@ function eq_at_i(loc, json, i, kind, expected) { })); } case /* Array */3 : - if (typeof ty$1 === "number") { + if (/* tag */typeof ty$1 === "number") { return add_test(loc, (function (param) { return { TAG: /* Ok */4, @@ -440,7 +439,7 @@ function eq_at_i(loc, json, i, kind, expected) { })); } case /* Boolean */4 : - if (typeof ty$1 !== "number") { + if (/* tag */typeof ty$1 !== "number") { return add_test(loc, (function (param) { return { TAG: /* Ok */4, @@ -453,18 +452,17 @@ function eq_at_i(loc, json, i, kind, expected) { return eq(loc, false, expected); case /* JSONTrue */1 : return eq(loc, true, expected); - case /* JSONNull */2 : - return add_test(loc, (function (param) { - return { - TAG: /* Ok */4, - _0: false - }; - })); - + default: + return add_test(loc, (function (param) { + return { + TAG: /* Ok */4, + _0: false + }; + })); } case /* Null */5 : - if (typeof ty$1 === "number") { - if (ty$1 >= 2) { + if (/* tag */typeof ty$1 === "number") { + if (ty$1 === /* JSONNull */2) { return add_test(loc, (function (param) { return { TAG: /* Ok */4, @@ -577,7 +575,7 @@ var json$10 = JSON.parse(JSON.stringify(a$3)); var ty$6 = Js_json.classify(json$10); -if (typeof ty$6 === "number") { +if (/* tag */typeof ty$6 === "number") { add_test("File \"js_json_test.ml\", line 283, characters 16-23", (function (param) { return { TAG: /* Ok */4, @@ -586,7 +584,7 @@ if (typeof ty$6 === "number") { })); } else if (ty$6.TAG === /* JSONArray */3) { var ty$7 = Js_json.classify(Caml_array.get(ty$6._0, 1)); - if (typeof ty$7 === "number") { + if (/* tag */typeof ty$7 === "number") { add_test("File \"js_json_test.ml\", line 281, characters 18-25", (function (param) { return { TAG: /* Ok */4, @@ -595,7 +593,7 @@ if (typeof ty$6 === "number") { })); } else if (ty$7.TAG === /* JSONObject */2) { var ty$8 = Js_json.classify(option_get(Js_dict.get(ty$7._0, "a"))); - if (typeof ty$8 === "number") { + if (/* tag */typeof ty$8 === "number") { add_test("File \"js_json_test.ml\", line 279, characters 20-27", (function (param) { return { TAG: /* Ok */4, diff --git a/jscomp/test/large_record_duplication_test.js b/jscomp/test/large_record_duplication_test.js index 71f8aceb68..b29c79ec92 100644 --- a/jscomp/test/large_record_duplication_test.js +++ b/jscomp/test/large_record_duplication_test.js @@ -83,14 +83,15 @@ var v1 = /* A0 */{ }; function get_x0(x) { - if (x) { + if (/* tag */typeof x === "number") { + return ; + } else { return x.x0; } - } function f1(x) { - if (!x) { + if (/* tag */typeof x === "number") { return /* A1 */0; } var newrecord = Caml_obj.obj_dup(x); diff --git a/jscomp/test/map_find_test.js b/jscomp/test/map_find_test.js index 63c2e566d3..0eb6f50d36 100644 --- a/jscomp/test/map_find_test.js +++ b/jscomp/test/map_find_test.js @@ -5,10 +5,10 @@ var Caml = require("../../lib/js/caml.js"); var List = require("../../lib/js/list.js"); function height(param) { - if (param) { - return param.h; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return param.h; } } @@ -25,26 +25,28 @@ function create(l, x, d, r) { } function bal(l, x, d, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l.r; - var ld = l.d; - var lv = l.v; - var ll = l.l; - if (height(ll) >= height(lr)) { - return create(ll, lv, ld, create(lr, x, d, r)); - } - if (lr) { - return create(create(ll, lv, ld, lr.l), lr.v, lr.d, create(lr.r, x, d, r)); - } + if (/* tag */typeof l === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var lr = l.r; + var ld = l.d; + var lv = l.v; + var ll = l.l; + if (height(ll) >= height(lr)) { + return create(ll, lv, ld, create(lr, x, d, r)); + } + if (/* tag */typeof lr !== "number") { + return create(create(ll, lv, ld, lr.l), lr.v, lr.d, create(lr.r, x, d, r)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -60,23 +62,23 @@ function bal(l, x, d, r) { h: hl >= hr ? hl + 1 | 0 : hr + 1 | 0 }; } - if (r) { - var rr = r.r; - var rd = r.d; - var rv = r.v; - var rl = r.l; - if (height(rr) >= height(rl)) { - return create(create(l, x, d, rl), rv, rd, rr); - } - if (rl) { - return create(create(l, x, d, rl.l), rl.v, rl.d, create(rl.r, rv, rd, rr)); - } + if (/* tag */typeof r === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var rr = r.r; + var rd = r.d; + var rv = r.v; + var rl = r.l; + if (height(rr) >= height(rl)) { + return create(create(l, x, d, rl), rv, rd, rr); + } + if (/* tag */typeof rl !== "number") { + return create(create(l, x, d, rl.l), rl.v, rl.d, create(rl.r, rv, rd, rr)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -85,7 +87,7 @@ function bal(l, x, d, r) { } function add(x, data, m) { - if (!m) { + if (/* tag */typeof m === "number") { return /* Node */{ l: /* Empty */0, v: x, @@ -131,18 +133,18 @@ function add(x, data, m) { function find(x, _param) { while(true) { var param = _param; - if (param) { - var c = Caml.int_compare(x, param.v); - if (c === 0) { - return param.d; - } - _param = c < 0 ? param.l : param.r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var c = Caml.int_compare(x, param.v); + if (c === 0) { + return param.d; + } + _param = c < 0 ? param.l : param.r; + continue ; }; } @@ -175,10 +177,10 @@ var m = List.fold_left((function (acc, param) { }); function height$1(param) { - if (param) { - return param.h; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return param.h; } } @@ -195,26 +197,28 @@ function create$1(l, x, d, r) { } function bal$1(l, x, d, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l.r; - var ld = l.d; - var lv = l.v; - var ll = l.l; - if (height$1(ll) >= height$1(lr)) { - return create$1(ll, lv, ld, create$1(lr, x, d, r)); - } - if (lr) { - return create$1(create$1(ll, lv, ld, lr.l), lr.v, lr.d, create$1(lr.r, x, d, r)); - } + if (/* tag */typeof l === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var lr = l.r; + var ld = l.d; + var lv = l.v; + var ll = l.l; + if (height$1(ll) >= height$1(lr)) { + return create$1(ll, lv, ld, create$1(lr, x, d, r)); + } + if (/* tag */typeof lr !== "number") { + return create$1(create$1(ll, lv, ld, lr.l), lr.v, lr.d, create$1(lr.r, x, d, r)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -230,23 +234,23 @@ function bal$1(l, x, d, r) { h: hl >= hr ? hl + 1 | 0 : hr + 1 | 0 }; } - if (r) { - var rr = r.r; - var rd = r.d; - var rv = r.v; - var rl = r.l; - if (height$1(rr) >= height$1(rl)) { - return create$1(create$1(l, x, d, rl), rv, rd, rr); - } - if (rl) { - return create$1(create$1(l, x, d, rl.l), rl.v, rl.d, create$1(rl.r, rv, rd, rr)); - } + if (/* tag */typeof r === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var rr = r.r; + var rd = r.d; + var rv = r.v; + var rl = r.l; + if (height$1(rr) >= height$1(rl)) { + return create$1(create$1(l, x, d, rl), rv, rd, rr); + } + if (/* tag */typeof rl !== "number") { + return create$1(create$1(l, x, d, rl.l), rl.v, rl.d, create$1(rl.r, rv, rd, rr)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -255,7 +259,7 @@ function bal$1(l, x, d, r) { } function add$1(x, data, m) { - if (!m) { + if (/* tag */typeof m === "number") { return /* Node */{ l: /* Empty */0, v: x, @@ -301,18 +305,18 @@ function add$1(x, data, m) { function find$1(x, _param) { while(true) { var param = _param; - if (param) { - var c = Caml.string_compare(x, param.v); - if (c === 0) { - return param.d; - } - _param = c < 0 ? param.l : param.r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var c = Caml.string_compare(x, param.v); + if (c === 0) { + return param.d; + } + _param = c < 0 ? param.l : param.r; + continue ; }; } diff --git a/jscomp/test/map_test.js b/jscomp/test/map_test.js index 2e76cb009b..34d7017603 100644 --- a/jscomp/test/map_test.js +++ b/jscomp/test/map_test.js @@ -6,10 +6,10 @@ var List = require("../../lib/js/list.js"); var Curry = require("../../lib/js/curry.js"); function height(param) { - if (param) { - return param.h; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return param.h; } } @@ -26,26 +26,28 @@ function create(l, x, d, r) { } function bal(l, x, d, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l.r; - var ld = l.d; - var lv = l.v; - var ll = l.l; - if (height(ll) >= height(lr)) { - return create(ll, lv, ld, create(lr, x, d, r)); - } - if (lr) { - return create(create(ll, lv, ld, lr.l), lr.v, lr.d, create(lr.r, x, d, r)); - } + if (/* tag */typeof l === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var lr = l.r; + var ld = l.d; + var lv = l.v; + var ll = l.l; + if (height(ll) >= height(lr)) { + return create(ll, lv, ld, create(lr, x, d, r)); + } + if (/* tag */typeof lr !== "number") { + return create(create(ll, lv, ld, lr.l), lr.v, lr.d, create(lr.r, x, d, r)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -61,23 +63,23 @@ function bal(l, x, d, r) { h: hl >= hr ? hl + 1 | 0 : hr + 1 | 0 }; } - if (r) { - var rr = r.r; - var rd = r.d; - var rv = r.v; - var rl = r.l; - if (height(rr) >= height(rl)) { - return create(create(l, x, d, rl), rv, rd, rr); - } - if (rl) { - return create(create(l, x, d, rl.l), rl.v, rl.d, create(rl.r, rv, rd, rr)); - } + if (/* tag */typeof r === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var rr = r.r; + var rd = r.d; + var rv = r.v; + var rl = r.l; + if (height(rr) >= height(rl)) { + return create(create(l, x, d, rl), rv, rd, rr); + } + if (/* tag */typeof rl !== "number") { + return create(create(l, x, d, rl.l), rl.v, rl.d, create(rl.r, rv, rd, rr)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -86,7 +88,7 @@ function bal(l, x, d, r) { } function add(x, data, m) { - if (!m) { + if (/* tag */typeof m === "number") { return /* Node */{ l: /* Empty */0, v: x, @@ -133,7 +135,7 @@ function cons_enum(_m, _e) { while(true) { var e = _e; var m = _m; - if (!m) { + if (/* tag */typeof m === "number") { return e; } _e = /* More */{ @@ -153,14 +155,14 @@ function compare(cmp, m1, m2) { while(true) { var e2 = _e2; var e1 = _e1; - if (!e1) { - if (e2) { - return -1; - } else { + if (/* tag */typeof e1 === "number") { + if (/* tag */typeof e2 === "number") { return 0; + } else { + return -1; } } - if (!e2) { + if (/* tag */typeof e2 === "number") { return 1; } var c = Caml.int_compare(e1._0, e2._0); @@ -183,14 +185,14 @@ function equal(cmp, m1, m2) { while(true) { var e2 = _e2; var e1 = _e1; - if (!e1) { - if (e2) { - return false; - } else { + if (/* tag */typeof e1 === "number") { + if (/* tag */typeof e2 === "number") { return true; + } else { + return false; } } - if (!e2) { + if (/* tag */typeof e2 === "number") { return false; } if (e1._0 !== e2._0) { @@ -206,18 +208,18 @@ function equal(cmp, m1, m2) { } function cardinal(param) { - if (param) { - return (cardinal(param.l) + 1 | 0) + cardinal(param.r) | 0; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return (cardinal(param.l) + 1 | 0) + cardinal(param.r) | 0; } } function height$1(param) { - if (param) { - return param.h; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return param.h; } } @@ -234,26 +236,28 @@ function create$1(l, x, d, r) { } function bal$1(l, x, d, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l.r; - var ld = l.d; - var lv = l.v; - var ll = l.l; - if (height$1(ll) >= height$1(lr)) { - return create$1(ll, lv, ld, create$1(lr, x, d, r)); - } - if (lr) { - return create$1(create$1(ll, lv, ld, lr.l), lr.v, lr.d, create$1(lr.r, x, d, r)); - } + if (/* tag */typeof l === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var lr = l.r; + var ld = l.d; + var lv = l.v; + var ll = l.l; + if (height$1(ll) >= height$1(lr)) { + return create$1(ll, lv, ld, create$1(lr, x, d, r)); + } + if (/* tag */typeof lr !== "number") { + return create$1(create$1(ll, lv, ld, lr.l), lr.v, lr.d, create$1(lr.r, x, d, r)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -269,23 +273,23 @@ function bal$1(l, x, d, r) { h: hl >= hr ? hl + 1 | 0 : hr + 1 | 0 }; } - if (r) { - var rr = r.r; - var rd = r.d; - var rv = r.v; - var rl = r.l; - if (height$1(rr) >= height$1(rl)) { - return create$1(create$1(l, x, d, rl), rv, rd, rr); - } - if (rl) { - return create$1(create$1(l, x, d, rl.l), rl.v, rl.d, create$1(rl.r, rv, rd, rr)); - } + if (/* tag */typeof r === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var rr = r.r; + var rd = r.d; + var rv = r.v; + var rl = r.l; + if (height$1(rr) >= height$1(rl)) { + return create$1(create$1(l, x, d, rl), rv, rd, rr); + } + if (/* tag */typeof rl !== "number") { + return create$1(create$1(l, x, d, rl.l), rl.v, rl.d, create$1(rl.r, rv, rd, rr)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -294,7 +298,7 @@ function bal$1(l, x, d, r) { } function add$1(x, data, m) { - if (!m) { + if (/* tag */typeof m === "number") { return /* Node */{ l: /* Empty */0, v: x, @@ -340,18 +344,18 @@ function add$1(x, data, m) { function find(x, _param) { while(true) { var param = _param; - if (param) { - var c = Caml.string_compare(x, param.v); - if (c === 0) { - return param.d; - } - _param = c < 0 ? param.l : param.r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var c = Caml.string_compare(x, param.v); + if (c === 0) { + return param.d; + } + _param = c < 0 ? param.l : param.r; + continue ; }; } diff --git a/jscomp/test/mario_game.js b/jscomp/test/mario_game.js index d9c6052b01..4b2195e92c 100644 --- a/jscomp/test/mario_game.js +++ b/jscomp/test/mario_game.js @@ -554,7 +554,7 @@ function make_type(typ, dir) { } case /* SBlock */3 : var x$1 = typ._0; - if (typeof x$1 !== "number") { + if (/* tag */typeof x$1 !== "number") { return setup_sprite(undefined, undefined, undefined, "blocks.png", 4, 15, [ 16, 16 @@ -699,18 +699,20 @@ function pair_to_xy(pair) { } function make_type$1(typ, ctx) { - if (typ === 2 || typ === 1) { - return { - sprite: make_particle$1(typ, ctx), - rot: 0, - lifetime: 300 - }; - } else { - return { - sprite: make_particle$1(typ, ctx), - rot: 0, - lifetime: 30 - }; + switch (typ) { + case /* BrickChunkL */1 : + case /* BrickChunkR */2 : + return { + sprite: make_particle$1(typ, ctx), + rot: 0, + lifetime: 300 + }; + default: + return { + sprite: make_particle$1(typ, ctx), + rot: 0, + lifetime: 30 + }; } } @@ -814,14 +816,16 @@ function make_type$2(x) { return setup_obj(undefined, 2.8, undefined); case /* SEnemy */1 : var x$1 = x._0; - if (x$1 >= 3) { - return setup_obj(undefined, 3, undefined); - } else { - return setup_obj(undefined, undefined, undefined); + switch (x$1) { + case /* GKoopaShell */3 : + case /* RKoopaShell */4 : + return setup_obj(undefined, 3, undefined); + default: + return setup_obj(undefined, undefined, undefined); } case /* SItem */2 : var x$2 = x._0; - if (x$2 >= 3) { + if (x$2 === /* Coin */3) { return setup_obj(false, undefined, undefined); } else { return setup_obj(undefined, undefined, undefined); @@ -1088,29 +1092,38 @@ function normalize_origin(pos, spr) { function collide_block(check_xOpt, dir, obj) { var check_x = check_xOpt !== undefined ? check_xOpt : true; - if (dir !== 1) { - if (dir !== 0) { - if (check_x) { - obj.vel.x = 0; + switch (dir) { + case /* North */0 : + obj.vel.y = -0.001; return ; - } else { + case /* South */1 : + obj.vel.y = 0; + obj.grounded = true; + obj.jumping = false; return ; - } - } else { - obj.vel.y = -0.001; - return ; - } - } else { - obj.vel.y = 0; - obj.grounded = true; - obj.jumping = false; + case /* East */2 : + case /* West */3 : + break; + + } + if (check_x) { + obj.vel.x = 0; return ; } + +} + +function opposite_dir(dir) { + if (dir === /* Left */0) { + return /* Right */1; + } else { + return /* Left */0; + } } function reverse_left_right(obj) { obj.vel.x = - obj.vel.x; - obj.dir = obj.dir ? /* Left */0 : /* Right */1; + obj.dir = opposite_dir(obj.dir); } function evolve_enemy(player_dir, typ, spr, obj, context) { @@ -1212,7 +1225,7 @@ function spawn_above(player_dir, obj, typ, context) { ]); var item_obj = item._2; item_obj.pos.y = item_obj.pos.y - item._1.params.frame_size[1]; - item_obj.dir = player_dir ? /* Left */0 : /* Right */1; + item_obj.dir = opposite_dir(player_dir); set_vel_to_speed(item_obj); return item; } @@ -1323,16 +1336,15 @@ function kill(collid, ctx) { hd: make_score(o.score, pos, ctx), tl: /* [] */0 }) : /* [] */0; - var remains = collid._0 !== 0 ? /* [] */0 : ({ + var remains; + remains = collid._0 === /* Goomba */0 ? ({ hd: make$1(undefined, undefined, /* GoombaSquish */0, pos, ctx), tl: /* [] */0 - }); + }) : /* [] */0; return Pervasives.$at(score, remains); case /* Item */2 : var o$1 = collid._2; - if (collid._0 !== 0) { - return /* [] */0; - } else { + if (collid._0 === /* Mushroom */0) { return { hd: make_score(o$1.score, [ o$1.pos.x, @@ -1340,10 +1352,16 @@ function kill(collid, ctx) { ], ctx), tl: /* [] */0 }; + } else { + return /* [] */0; } case /* Block */3 : var o$2 = collid._2; - if (collid._0 !== 1) { + var tmp = collid._0; + if (/* tag */typeof tmp !== "number") { + return /* [] */0; + } + if (tmp !== /* Brick */1) { return /* [] */0; } var pos_0$1 = o$2.pos.x; @@ -1651,20 +1669,20 @@ function process_collision(dir, c1, c2, state) { var o2$3 = c2._2; var s2$2 = c2._1; var typ$1 = c2._0; - if (dir !== 1) { - s1$1 = s1$2; - o1$1 = o1$3; - t2 = typ$1; - s2$1 = s2$2; - o2$1 = o2$3; - exit = 2; - } else { + if (dir === /* South */1) { s1 = s1$2; o1 = o1$3; typ = typ$1; s2 = s2$2; o2 = o2$3; exit = 1; + } else { + s1$1 = s1$2; + o1$1 = o1$3; + t2 = typ$1; + s2$1 = s2$2; + o2$1 = o2$3; + exit = 2; } break; case /* Item */2 : @@ -1676,65 +1694,78 @@ function process_collision(dir, c1, c2, state) { case /* Block */3 : var o2$4 = c2._2; var t = c2._0; - if (dir !== 0) { - if (t === 4) { - game_win(state.ctx); - return [ - undefined, - undefined - ]; - } else if (dir !== 1) { - collide_block(undefined, dir, o1$3); - return [ - undefined, - undefined - ]; + if (dir === /* North */0) { + if (/* tag */typeof t === "number") { + switch (t) { + case /* Brick */1 : + if (c1._0 === /* BigM */0) { + collide_block(undefined, dir, o1$3); + dec_health(o2$4); + return [ + undefined, + undefined + ]; + } else { + collide_block(undefined, dir, o1$3); + return [ + undefined, + undefined + ]; + } + case /* Panel */4 : + game_win(state.ctx); + return [ + undefined, + undefined + ]; + default: + collide_block(undefined, dir, o1$3); + return [ + undefined, + undefined + ]; + } } else { - state.multiplier = 1; + var updated_block = evolve_block(o2$4, context); + var spawned_item = spawn_above(o1$3.dir, o2$4, t._0, context); collide_block(undefined, dir, o1$3); return [ - undefined, - undefined + spawned_item, + updated_block ]; } - } - if (typeof t === "number") { - if (t !== 1) { - if (t !== 4) { - collide_block(undefined, dir, o1$3); + } else { + var exit$1 = 0; + if (/* tag */typeof t === "number") { + if (t === /* Panel */4) { + game_win(state.ctx); return [ undefined, undefined ]; - } else { - game_win(state.ctx); + } + exit$1 = 4; + } else { + exit$1 = 4; + } + if (exit$1 === 4) { + if (dir === /* South */1) { + state.multiplier = 1; + collide_block(undefined, dir, o1$3); return [ undefined, undefined ]; } - } else if (c1._0 === /* BigM */0) { - collide_block(undefined, dir, o1$3); - dec_health(o2$4); - return [ - undefined, - undefined - ]; - } else { collide_block(undefined, dir, o1$3); return [ undefined, undefined ]; } + } - var updated_block = evolve_block(o2$4, context); - var spawned_item = spawn_above(o1$3.dir, o2$4, t._0, context); - collide_block(undefined, dir, o1$3); - return [ - spawned_item, - updated_block - ]; + break; } break; @@ -1746,29 +1777,103 @@ function process_collision(dir, c1, c2, state) { case /* Player */0 : var o1$5 = c2._2; var s1$4 = c2._1; - if (dir !== 0) { - s1$1 = s1$4; - o1$1 = o1$5; - t2 = t1; - s2$1 = s1$3; - o2$1 = o1$4; - exit = 2; - } else { + if (dir === /* North */0) { s1 = s1$4; o1 = o1$5; typ = t1; s2 = s1$3; o2 = o1$4; exit = 1; + } else { + s1$1 = s1$4; + o1$1 = o1$5; + t2 = t1; + s2$1 = s1$3; + o2$1 = o1$4; + exit = 2; } break; case /* Enemy */1 : var t2$2 = c2._0; var s2$3 = c2._1; var o2$5 = c2._2; - if (t1 !== 3) { - if (t1 < 4) { - if (t2$2 >= 3) { + var exit$2 = 0; + switch (t1) { + case /* GKoopaShell */3 : + switch (t2$2) { + case /* GKoopaShell */3 : + case /* RKoopaShell */4 : + exit$2 = 1; + break; + default: + exit$2 = 2; + } + break; + case /* RKoopaShell */4 : + switch (t2$2) { + case /* GKoopaShell */3 : + case /* RKoopaShell */4 : + exit$2 = 1; + break; + default: + exit$2 = 2; + } + break; + default: + switch (t2$2) { + case /* GKoopaShell */3 : + case /* RKoopaShell */4 : + exit$2 = 3; + break; + default: + var exit$3 = 0; + switch (dir) { + case /* North */0 : + case /* South */1 : + return [ + undefined, + undefined + ]; + case /* East */2 : + case /* West */3 : + exit$3 = 4; + break; + + } + if (exit$3 === 4) { + rev_dir(o1$4, t1, s1$3); + rev_dir(o2$5, t2$2, s2$3); + return [ + undefined, + undefined + ]; + } + + } + } + switch (exit$2) { + case 1 : + dec_health(o1$4); + dec_health(o2$5); + return [ + undefined, + undefined + ]; + case 2 : + if (o1$4.vel.x === 0) { + rev_dir(o2$5, t2$2, s2$3); + return [ + undefined, + undefined + ]; + } else { + dec_health(o2$5); + return [ + undefined, + undefined + ]; + } + case 3 : if (o2$5.vel.x === 0) { rev_dir(o1$4, t1, s1$3); return [ @@ -1782,49 +1887,7 @@ function process_collision(dir, c1, c2, state) { undefined ]; } - } else if (dir >= 2) { - rev_dir(o1$4, t1, s1$3); - rev_dir(o2$5, t2$2, s2$3); - return [ - undefined, - undefined - ]; - } else { - return [ - undefined, - undefined - ]; - } - } - if (t2$2 >= 3) { - dec_health(o1$4); - dec_health(o2$5); - return [ - undefined, - undefined - ]; - } - } else if (t2$2 >= 3) { - dec_health(o1$4); - dec_health(o2$5); - return [ - undefined, - undefined - ]; - } - if (o1$4.vel.x === 0) { - rev_dir(o2$5, t2$2, s2$3); - return [ - undefined, - undefined - ]; - } else { - dec_health(o2$5); - return [ - undefined, - undefined - ]; } case /* Item */2 : return [ @@ -1834,43 +1897,79 @@ function process_collision(dir, c1, c2, state) { case /* Block */3 : var o2$6 = c2._2; var t2$3 = c2._0; - if (dir >= 2) { - if (t1 >= 3) { - if (typeof t2$3 === "number") { - if (t2$3 !== 1) { + var exit$4 = 0; + switch (dir) { + case /* North */0 : + case /* South */1 : + collide_block(undefined, dir, o1$4); + return [ + undefined, + undefined + ]; + case /* East */2 : + case /* West */3 : + exit$4 = 4; + break; + + } + if (exit$4 === 4) { + var exit$5 = 0; + var typ$2; + switch (t1) { + case /* GKoopaShell */3 : + if (/* tag */typeof t2$3 === "number") { + if (t2$3 === /* Brick */1) { + dec_health(o2$6); + reverse_left_right(o1$4); + return [ + undefined, + undefined + ]; + } + exit$5 = 5; + } else { + typ$2 = t2$3._0; + exit$5 = 6; + } + break; + case /* RKoopaShell */4 : + if (/* tag */typeof t2$3 === "number") { + if (t2$3 === /* Brick */1) { + dec_health(o2$6); + reverse_left_right(o1$4); + return [ + undefined, + undefined + ]; + } + exit$5 = 5; + } else { + typ$2 = t2$3._0; + exit$5 = 6; + } + break; + default: + exit$5 = 5; + } + switch (exit$5) { + case 5 : rev_dir(o1$4, t1, s1$3); return [ undefined, undefined ]; - } else { - dec_health(o2$6); - reverse_left_right(o1$4); + case 6 : + var updated_block$1 = evolve_block(o2$6, context); + var spawned_item$1 = spawn_above(o1$4.dir, o2$6, typ$2, context); + rev_dir(o1$4, t1, s1$3); return [ - undefined, - undefined + updated_block$1, + spawned_item$1 ]; - } - } - var updated_block$1 = evolve_block(o2$6, context); - var spawned_item$1 = spawn_above(o1$4.dir, o2$6, t2$3._0, context); - rev_dir(o1$4, t1, s1$3); - return [ - updated_block$1, - spawned_item$1 - ]; + } - rev_dir(o1$4, t1, s1$3); - return [ - undefined, - undefined - ]; } - collide_block(undefined, dir, o1$4); - return [ - undefined, - undefined - ]; + break; } break; @@ -1890,18 +1989,22 @@ function process_collision(dir, c1, c2, state) { undefined ]; case /* Block */3 : - if (dir >= 2) { - reverse_left_right(o2$7); - return [ - undefined, - undefined - ]; - } else { - collide_block(undefined, dir, o2$7); - return [ - undefined, - undefined - ]; + switch (dir) { + case /* North */0 : + case /* South */1 : + collide_block(undefined, dir, o2$7); + return [ + undefined, + undefined + ]; + case /* East */2 : + case /* West */3 : + reverse_left_right(o2$7); + return [ + undefined, + undefined + ]; + } } @@ -1918,81 +2021,96 @@ function process_collision(dir, c1, c2, state) { o1.invuln = 10; o1.jumping = false; o1.grounded = true; - if (typ >= 3) { - var r2 = evolve_enemy(o1.dir, typ, s2, o2, context); - o1.vel.y = - 4; - o1.pos.y = o1.pos.y - 5; - return [ - undefined, - r2 - ]; + switch (typ) { + case /* GKoopaShell */3 : + case /* RKoopaShell */4 : + break; + default: + dec_health(o2); + o1.vel.y = - 4; + if (state.multiplier === 8) { + update_score(state, 800); + o2.score = 800; + return [ + undefined, + evolve_enemy(o1.dir, typ, s2, o2, context) + ]; + } + var score = Math.imul(100, state.multiplier); + update_score(state, score); + o2.score = score; + state.multiplier = (state.multiplier << 1); + return [ + undefined, + evolve_enemy(o1.dir, typ, s2, o2, context) + ]; } - dec_health(o2); + var r2 = evolve_enemy(o1.dir, typ, s2, o2, context); o1.vel.y = - 4; - if (state.multiplier === 8) { - update_score(state, 800); - o2.score = 800; - return [ - undefined, - evolve_enemy(o1.dir, typ, s2, o2, context) - ]; - } - var score = Math.imul(100, state.multiplier); - update_score(state, score); - o2.score = score; - state.multiplier = (state.multiplier << 1); + o1.pos.y = o1.pos.y - 5; return [ undefined, - evolve_enemy(o1.dir, typ, s2, o2, context) + r2 ]; case 2 : - if (t2 >= 3) { - var r2$1 = o2$1.vel.x === 0 ? evolve_enemy(o1$1.dir, t2, s2$1, o2$1, context) : (dec_health(o1$1), o1$1.invuln = 60, undefined); - return [ - undefined, - r2$1 - ]; + switch (t2) { + case /* GKoopaShell */3 : + case /* RKoopaShell */4 : + break; + default: + dec_health(o1$1); + o1$1.invuln = 60; + return [ + undefined, + undefined + ]; } - dec_health(o1$1); - o1$1.invuln = 60; + var r2$1 = o2$1.vel.x === 0 ? evolve_enemy(o1$1.dir, t2, s2$1, o2$1, context) : (dec_health(o1$1), o1$1.invuln = 60, undefined); return [ undefined, - undefined + r2$1 ]; case 3 : - if (t2$1 !== 0) { - if (t2$1 >= 3) { - state.coins = state.coins + 1 | 0; - dec_health(o2$2); - update_score(state, 100); - return [ - undefined, - undefined - ]; - } else { - dec_health(o2$2); - update_score(state, 1000); - return [ - undefined, - undefined - ]; - } - } else { + var exit$6 = 0; + switch (t2$1) { + case /* Mushroom */0 : + dec_health(o2$2); + if (o1$2.health === 2) { + + } else { + o1$2.health = o1$2.health + 1 | 0; + } + o1$2.vel.x = 0; + o1$2.vel.y = 0; + update_score(state, 1000); + o2$2.score = 1000; + return [ + undefined, + undefined + ]; + case /* FireFlower */1 : + case /* Star */2 : + exit$6 = 4; + break; + case /* Coin */3 : + state.coins = state.coins + 1 | 0; + dec_health(o2$2); + update_score(state, 100); + return [ + undefined, + undefined + ]; + + } + if (exit$6 === 4) { dec_health(o2$2); - if (o1$2.health === 2) { - - } else { - o1$2.health = o1$2.health + 1 | 0; - } - o1$2.vel.x = 0; - o1$2.vel.y = 0; update_score(state, 1000); - o2$2.score = 1000; return [ undefined, undefined ]; } + break; } } diff --git a/jscomp/test/ocaml_re_test.js b/jscomp/test/ocaml_re_test.js index ac6b046708..78a774aab5 100644 --- a/jscomp/test/ocaml_re_test.js +++ b/jscomp/test/ocaml_re_test.js @@ -293,10 +293,10 @@ function compare(param, param$1) { } function height(param) { - if (param) { - return param.h; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return param.h; } } @@ -313,26 +313,28 @@ function create(l, x, d, r) { } function bal(l, x, d, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l.r; - var ld = l.d; - var lv = l.v; - var ll = l.l; - if (height(ll) >= height(lr)) { - return create(ll, lv, ld, create(lr, x, d, r)); - } - if (lr) { - return create(create(ll, lv, ld, lr.l), lr.v, lr.d, create(lr.r, x, d, r)); - } + if (/* tag */typeof l === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var lr = l.r; + var ld = l.d; + var lv = l.v; + var ll = l.l; + if (height(ll) >= height(lr)) { + return create(ll, lv, ld, create(lr, x, d, r)); + } + if (/* tag */typeof lr !== "number") { + return create(create(ll, lv, ld, lr.l), lr.v, lr.d, create(lr.r, x, d, r)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -348,23 +350,23 @@ function bal(l, x, d, r) { h: hl >= hr ? hl + 1 | 0 : hr + 1 | 0 }; } - if (r) { - var rr = r.r; - var rd = r.d; - var rv = r.v; - var rl = r.l; - if (height(rr) >= height(rl)) { - return create(create(l, x, d, rl), rv, rd, rr); - } - if (rl) { - return create(create(l, x, d, rl.l), rl.v, rl.d, create(rl.r, rv, rd, rr)); - } + if (/* tag */typeof r === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var rr = r.r; + var rd = r.d; + var rv = r.v; + var rl = r.l; + if (height(rr) >= height(rl)) { + return create(create(l, x, d, rl), rv, rd, rr); + } + if (/* tag */typeof rl !== "number") { + return create(create(l, x, d, rl.l), rl.v, rl.d, create(rl.r, rv, rd, rr)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -373,7 +375,7 @@ function bal(l, x, d, r) { } function add(x, data, m) { - if (!m) { + if (/* tag */typeof m === "number") { return /* Node */{ l: /* Empty */0, v: x, @@ -483,16 +485,18 @@ function from_char(param) { } function height$1(param) { - if (param) { - return param.h; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return param.h; } } function create$1(l, v, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; return /* Node */{ l: l, v: v, @@ -502,25 +506,27 @@ function create$1(l, v, r) { } function bal$1(l, v, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l.r; - var lv = l.v; - var ll = l.l; - if (height$1(ll) >= height$1(lr)) { - return create$1(ll, lv, create$1(lr, v, r)); - } - if (lr) { - return create$1(create$1(ll, lv, lr.l), lr.v, create$1(lr.r, v, r)); - } + if (/* tag */typeof l === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", Error: new Error() }; } + var lr = l.r; + var lv = l.v; + var ll = l.l; + if (height$1(ll) >= height$1(lr)) { + return create$1(ll, lv, create$1(lr, v, r)); + } + if (/* tag */typeof lr !== "number") { + return create$1(create$1(ll, lv, lr.l), lr.v, create$1(lr.r, v, r)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", @@ -535,22 +541,22 @@ function bal$1(l, v, r) { h: hl >= hr ? hl + 1 | 0 : hr + 1 | 0 }; } - if (r) { - var rr = r.r; - var rv = r.v; - var rl = r.l; - if (height$1(rr) >= height$1(rl)) { - return create$1(create$1(l, v, rl), rv, rr); - } - if (rl) { - return create$1(create$1(l, v, rl.l), rl.v, create$1(rl.r, rv, rr)); - } + if (/* tag */typeof r === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", Error: new Error() }; } + var rr = r.r; + var rv = r.v; + var rl = r.l; + if (height$1(rr) >= height$1(rl)) { + return create$1(create$1(l, v, rl), rv, rr); + } + if (/* tag */typeof rl !== "number") { + return create$1(create$1(l, v, rl.l), rl.v, create$1(rl.r, rv, rr)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", @@ -559,7 +565,7 @@ function bal$1(l, v, r) { } function add$1(x, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Node */{ l: /* Empty */0, v: x, @@ -704,7 +710,7 @@ function seq$1(ids, kind, x, y) { var match = x.def; var match$1 = y.def; var exit = 0; - if (typeof match === "number") { + if (/* tag */typeof match === "number") { return y; } if (match.TAG === /* Alt */1) { @@ -716,7 +722,7 @@ function seq$1(ids, kind, x, y) { exit = 2; } if (exit === 2) { - if (typeof match$1 === "number") { + if (/* tag */typeof match$1 === "number") { if (kind === "First") { return x; } @@ -736,7 +742,7 @@ function seq$1(ids, kind, x, y) { function is_eps(expr) { var match = expr.def; - if (typeof match === "number") { + if (/* tag */typeof match === "number") { return true; } else { return false; @@ -762,7 +768,7 @@ function erase(ids, m, m$p) { function rename(ids, x) { var l = x.def; - if (typeof l === "number") { + if (/* tag */typeof l === "number") { return mk_expr(ids, x.def); } switch (l.TAG | 0) { @@ -903,7 +909,8 @@ function tseq(kind, x, y, rem) { var match = x.hd; switch (match.TAG | 0) { case /* TExp */1 : - if (typeof match._1.def === "number" && !x.tl) { + var tmp = match._1.def; + if (/* tag */typeof tmp === "number" && !x.tl) { return { hd: { TAG: /* TExp */1, @@ -1097,7 +1104,8 @@ function remove_duplicates(prev, _l, y) { ]; case /* TExp */1 : var x$2 = x._1; - if (typeof x$2.def === "number") { + var tmp = x$2.def; + if (/* tag */typeof tmp === "number") { var r = l.tl; if (List.memq(y.id, prev)) { _l = r; @@ -1197,7 +1205,7 @@ function filter_marks(b, e, marks) { function delta_1(marks, c, next_cat, prev_cat, x, rem) { var s = x.def; - if (typeof s === "number") { + if (/* tag */typeof s === "number") { return { hd: { TAG: /* TMatch */2, @@ -1490,7 +1498,8 @@ var unknown_state = { function mk_state(ncol, desc) { var match = status(desc); - var break_state = typeof match === "number" ? match === 0 : true; + var break_state; + break_state = /* tag */typeof match === "number" && match !== /* Failed */0 ? false : true; return { idx: break_state ? -3 : desc.idx, real_idx: desc.idx, @@ -1715,18 +1724,18 @@ function trans_set(cache, cm, s) { var _param = cache.contents; while(true) { var param = _param; - if (param) { - var c = compare(v, param.v); - if (c === 0) { - return param.d; - } - _param = c < 0 ? param.l : param.r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var c = compare(v, param.v); + if (c === 0) { + return param.d; + } + _param = c < 0 ? param.l : param.r; + continue ; }; } catch (raw_exn){ @@ -1745,7 +1754,7 @@ function trans_set(cache, cm, s) { function is_charset(_param) { while(true) { var param = _param; - if (typeof param === "number") { + if (/* tag */typeof param === "number") { return false; } switch (param.TAG | 0) { @@ -1834,7 +1843,7 @@ function colorize(c, regexp) { var colorize$1 = function (_regexp) { while(true) { var regexp = _regexp; - if (typeof regexp === "number") { + if (/* tag */typeof regexp === "number") { switch (regexp) { case /* Beg_of_line */0 : case /* End_of_line */1 : @@ -1919,29 +1928,65 @@ function equal$2(_x1, _x2) { while(true) { var x2 = _x2; var x1 = _x1; - if (typeof x1 === "number") { + if (/* tag */typeof x1 === "number") { switch (x1) { case /* Beg_of_line */0 : - return x2 === 0; + if (/* tag */typeof x2 === "number" && x2 === /* Beg_of_line */0) { + return true; + } else { + return false; + } case /* End_of_line */1 : - return x2 === 1; + if (/* tag */typeof x2 === "number" && x2 === /* End_of_line */1) { + return true; + } else { + return false; + } case /* Beg_of_word */2 : - return x2 === 2; + if (/* tag */typeof x2 === "number" && x2 === /* Beg_of_word */2) { + return true; + } else { + return false; + } case /* End_of_word */3 : - return x2 === 3; + if (/* tag */typeof x2 === "number" && x2 === /* End_of_word */3) { + return true; + } else { + return false; + } case /* Not_bound */4 : - return x2 === 4; + if (/* tag */typeof x2 === "number" && x2 === /* Not_bound */4) { + return true; + } else { + return false; + } case /* Beg_of_str */5 : - return x2 === 5; + if (/* tag */typeof x2 === "number" && x2 === /* Beg_of_str */5) { + return true; + } else { + return false; + } case /* End_of_str */6 : - return x2 === 6; + if (/* tag */typeof x2 === "number" && x2 === /* End_of_str */6) { + return true; + } else { + return false; + } case /* Last_end_of_line */7 : - return x2 === 7; + if (/* tag */typeof x2 === "number" && x2 === /* Last_end_of_line */7) { + return true; + } else { + return false; + } case /* Start */8 : - return x2 === 8; + if (/* tag */typeof x2 === "number" && x2 === /* Start */8) { + return true; + } else { + return false; + } case /* Stop */9 : - if (typeof x2 === "number") { - return x2 >= 9; + if (/* tag */typeof x2 === "number" && x2 === /* Stop */9) { + return true; } else { return false; } @@ -1950,25 +1995,25 @@ function equal$2(_x1, _x2) { } else { switch (x1.TAG | 0) { case /* Set */0 : - if (typeof x2 === "number" || x2.TAG !== /* Set */0) { + if (/* tag */typeof x2 === "number" || x2.TAG !== /* Set */0) { return false; } else { return Caml_obj.equal(x1._0, x2._0); } case /* Sequence */1 : - if (typeof x2 === "number" || x2.TAG !== /* Sequence */1) { + if (/* tag */typeof x2 === "number" || x2.TAG !== /* Sequence */1) { return false; } else { return eq_list(x1._0, x2._0); } case /* Alternative */2 : - if (typeof x2 === "number" || x2.TAG !== /* Alternative */2) { + if (/* tag */typeof x2 === "number" || x2.TAG !== /* Alternative */2) { return false; } else { return eq_list(x1._0, x2._0); } case /* Repeat */3 : - if (typeof x2 === "number") { + if (/* tag */typeof x2 === "number") { return false; } if (x2.TAG !== /* Repeat */3) { @@ -1984,7 +2029,7 @@ function equal$2(_x1, _x2) { _x1 = x1._0; continue ; case /* Sem */4 : - if (typeof x2 === "number") { + if (/* tag */typeof x2 === "number") { return false; } if (x2.TAG !== /* Sem */4) { @@ -1997,7 +2042,7 @@ function equal$2(_x1, _x2) { _x1 = x1._1; continue ; case /* Sem_greedy */5 : - if (typeof x2 === "number") { + if (/* tag */typeof x2 === "number") { return false; } if (x2.TAG !== /* Sem_greedy */5) { @@ -2012,7 +2057,7 @@ function equal$2(_x1, _x2) { case /* Group */6 : return false; case /* No_group */7 : - if (typeof x2 === "number") { + if (/* tag */typeof x2 === "number") { return false; } if (x2.TAG !== /* No_group */7) { @@ -2022,7 +2067,7 @@ function equal$2(_x1, _x2) { _x1 = x1._0; continue ; case /* Nest */8 : - if (typeof x2 === "number") { + if (/* tag */typeof x2 === "number") { return false; } if (x2.TAG !== /* Nest */8) { @@ -2032,7 +2077,7 @@ function equal$2(_x1, _x2) { _x1 = x1._0; continue ; case /* Case */9 : - if (typeof x2 === "number") { + if (/* tag */typeof x2 === "number") { return false; } if (x2.TAG !== /* Case */9) { @@ -2042,7 +2087,7 @@ function equal$2(_x1, _x2) { _x1 = x1._0; continue ; case /* No_case */10 : - if (typeof x2 === "number") { + if (/* tag */typeof x2 === "number") { return false; } if (x2.TAG !== /* No_case */10) { @@ -2052,19 +2097,19 @@ function equal$2(_x1, _x2) { _x1 = x1._0; continue ; case /* Intersection */11 : - if (typeof x2 === "number" || x2.TAG !== /* Intersection */11) { + if (/* tag */typeof x2 === "number" || x2.TAG !== /* Intersection */11) { return false; } else { return eq_list(x1._0, x2._0); } case /* Complement */12 : - if (typeof x2 === "number" || x2.TAG !== /* Complement */12) { + if (/* tag */typeof x2 === "number" || x2.TAG !== /* Complement */12) { return false; } else { return eq_list(x1._0, x2._0); } case /* Difference */13 : - if (typeof x2 === "number") { + if (/* tag */typeof x2 === "number") { return false; } if (x2.TAG !== /* Difference */13) { @@ -2077,7 +2122,7 @@ function equal$2(_x1, _x2) { _x1 = x1._1; continue ; case /* Pmark */14 : - if (typeof x2 === "number") { + if (/* tag */typeof x2 === "number") { return false; } if (x2.TAG !== /* Pmark */14) { @@ -2136,7 +2181,7 @@ function merge_sequences(_param) { return /* [] */0; } var l$p = param.hd; - if (typeof l$p !== "number") { + if (/* tag */typeof l$p !== "number") { switch (l$p.TAG | 0) { case /* Sequence */1 : var match = l$p._0; @@ -2147,7 +2192,7 @@ function merge_sequences(_param) { var exit = 0; if (r$p) { var match$1 = r$p.hd; - if (typeof match$1 === "number" || match$1.TAG !== /* Sequence */1) { + if (/* tag */typeof match$1 === "number" || match$1.TAG !== /* Sequence */1) { exit = 2; } else { var match$2 = match$1._0; @@ -2226,7 +2271,7 @@ function translate(ids, kind, _ign_group, ign_case, _greedy, pos, cache, c, _s) var s = _s; var greedy = _greedy; var ign_group = _ign_group; - if (typeof s === "number") { + if (/* tag */typeof s === "number") { switch (s) { case /* Beg_of_line */0 : var c$1 = Curry._2(Re_automata_Category.$plus$plus, Re_automata_Category.inexistant, Re_automata_Category.newline); @@ -2511,7 +2556,7 @@ function case_insens(s) { } function as_set(s) { - if (typeof s === "number") { + if (/* tag */typeof s === "number") { throw { RE_EXN_ID: "Assert_failure", _1: [ @@ -2540,7 +2585,7 @@ function handle_case(_ign_case, _s) { while(true) { var s = _s; var ign_case = _ign_case; - if (typeof s === "number") { + if (/* tag */typeof s === "number") { return s; } switch (s.TAG | 0) { @@ -2686,7 +2731,7 @@ function handle_case(_ign_case, _s) { function anchored(_l) { while(true) { var l = _l; - if (typeof l === "number") { + if (/* tag */typeof l === "number") { switch (l) { case /* Beg_of_str */5 : case /* Start */8 : @@ -3196,11 +3241,11 @@ function exec_internal(name, posOpt, lenOpt, groups, re, s) { } res = match[1]; } - if (typeof res === "number") { - if (res !== 0) { - return /* Running */1; - } else { + if (/* tag */typeof res === "number") { + if (res === /* Failed */0) { return /* Failed */0; + } else { + return /* Running */1; } } else { return /* Match */{ @@ -4149,13 +4194,19 @@ function re(flagsOpt, pat) { function exec(rex, pos, s) { var len; var substr = exec_internal("Re.exec", pos, len, true, rex, s); - if (typeof substr === "number") { + if (/* tag */typeof substr !== "number") { + return substr._0; + } + if (substr === /* Failed */0) { throw { RE_EXN_ID: "Not_found", Error: new Error() }; } - return substr._0; + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } var s = "a".repeat(1048575) + "b"; diff --git a/jscomp/test/offset.js b/jscomp/test/offset.js index df5f481168..ad1a539c54 100644 --- a/jscomp/test/offset.js +++ b/jscomp/test/offset.js @@ -7,16 +7,18 @@ var $$String = require("../../lib/js/string.js"); var Caml_option = require("../../lib/js/caml_option.js"); function height(param) { - if (param) { - return param.h; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return param.h; } } function create(l, v, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; return /* Node */{ l: l, v: v, @@ -26,25 +28,27 @@ function create(l, v, r) { } function bal(l, v, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l.r; - var lv = l.v; - var ll = l.l; - if (height(ll) >= height(lr)) { - return create(ll, lv, create(lr, v, r)); - } - if (lr) { - return create(create(ll, lv, lr.l), lr.v, create(lr.r, v, r)); - } + if (/* tag */typeof l === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", Error: new Error() }; } + var lr = l.r; + var lv = l.v; + var ll = l.l; + if (height(ll) >= height(lr)) { + return create(ll, lv, create(lr, v, r)); + } + if (/* tag */typeof lr !== "number") { + return create(create(ll, lv, lr.l), lr.v, create(lr.r, v, r)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", @@ -59,22 +63,22 @@ function bal(l, v, r) { h: hl >= hr ? hl + 1 | 0 : hr + 1 | 0 }; } - if (r) { - var rr = r.r; - var rv = r.v; - var rl = r.l; - if (height(rr) >= height(rl)) { - return create(create(l, v, rl), rv, rr); - } - if (rl) { - return create(create(l, v, rl.l), rl.v, create(rl.r, rv, rr)); - } + if (/* tag */typeof r === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", Error: new Error() }; } + var rr = r.r; + var rv = r.v; + var rl = r.l; + if (height(rr) >= height(rl)) { + return create(create(l, v, rl), rv, rr); + } + if (/* tag */typeof rl !== "number") { + return create(create(l, v, rl.l), rl.v, create(rl.r, rv, rr)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", @@ -83,7 +87,7 @@ function bal(l, v, r) { } function add(x, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Node */{ l: /* Empty */0, v: x, @@ -124,30 +128,30 @@ function singleton(x) { } function add_min_element(x, param) { - if (param) { - return bal(add_min_element(x, param.l), param.v, param.r); - } else { + if (/* tag */typeof param === "number") { return singleton(x); + } else { + return bal(add_min_element(x, param.l), param.v, param.r); } } function add_max_element(x, param) { - if (param) { - return bal(param.l, param.v, add_max_element(x, param.r)); - } else { + if (/* tag */typeof param === "number") { return singleton(x); + } else { + return bal(param.l, param.v, add_max_element(x, param.r)); } } function join(l, v, r) { - if (!l) { + if (/* tag */typeof l === "number") { return add_min_element(v, r); } - if (!r) { + var lh = l.h; + if (/* tag */typeof r === "number") { return add_max_element(v, l); } var rh = r.h; - var lh = l.h; if (lh > (rh + 2 | 0)) { return bal(l.l, l.v, join(l.r, v, r)); } else if (rh > (lh + 2 | 0)) { @@ -160,29 +164,29 @@ function join(l, v, r) { function min_elt(_param) { while(true) { var param = _param; - if (param) { - var l = param.l; - if (!l) { - return param.v; - } - _param = l; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var l = param.l; + if (/* tag */typeof l === "number") { + return param.v; + } + _param = l; + continue ; }; } function min_elt_opt(_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var l = param.l; - if (!l) { + if (/* tag */typeof l === "number") { return Caml_option.some(param.v); } _param = l; @@ -193,29 +197,29 @@ function min_elt_opt(_param) { function max_elt(_param) { while(true) { var param = _param; - if (param) { - var r = param.r; - if (!r) { - return param.v; - } - _param = r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var r = param.r; + if (/* tag */typeof r === "number") { + return param.v; + } + _param = r; + continue ; }; } function max_elt_opt(_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var r = param.r; - if (!r) { + if (/* tag */typeof r === "number") { return Caml_option.some(param.v); } _param = r; @@ -224,35 +228,33 @@ function max_elt_opt(_param) { } function remove_min_elt(param) { - if (param) { - var l = param.l; - if (l) { - return bal(remove_min_elt(l), param.v, param.r); - } else { - return param.r; - } + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Invalid_argument", + _1: "Set.remove_min_elt", + Error: new Error() + }; + } + var l = param.l; + if (/* tag */typeof l === "number") { + return param.r; + } else { + return bal(remove_min_elt(l), param.v, param.r); } - throw { - RE_EXN_ID: "Invalid_argument", - _1: "Set.remove_min_elt", - Error: new Error() - }; } function concat(t1, t2) { - if (t1) { - if (t2) { - return join(t1, min_elt(t2), remove_min_elt(t2)); - } else { - return t1; - } - } else { + if (/* tag */typeof t1 === "number") { return t2; + } else if (/* tag */typeof t2 === "number") { + return t1; + } else { + return join(t1, min_elt(t2), remove_min_elt(t2)); } } function split(x, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, false, @@ -287,17 +289,17 @@ function split(x, param) { } function is_empty(param) { - if (param) { - return false; - } else { + if (/* tag */typeof param === "number") { return true; + } else { + return false; } } function mem(x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } var c = Caml.string_compare(x, param.v); @@ -310,7 +312,7 @@ function mem(x, _param) { } function remove(x, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Empty */0; } var r = t.r; @@ -318,14 +320,12 @@ function remove(x, t) { var l = t.l; var c = Caml.string_compare(x, v); if (c === 0) { - if (l) { - if (r) { - return bal(l, min_elt(r), remove_min_elt(r)); - } else { - return l; - } - } else { + if (/* tag */typeof l === "number") { return r; + } else if (/* tag */typeof r === "number") { + return l; + } else { + return bal(l, min_elt(r), remove_min_elt(r)); } } if (c < 0) { @@ -345,16 +345,16 @@ function remove(x, t) { } function union(s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return s2; } - if (!s2) { + var h1 = s1.h; + var v1 = s1.v; + if (/* tag */typeof s2 === "number") { return s1; } var h2 = s2.h; var v2 = s2.v; - var h1 = s1.h; - var v1 = s1.v; if (h1 >= h2) { if (h2 === 1) { return add(v2, s1); @@ -370,10 +370,10 @@ function union(s1, s2) { } function inter(s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return /* Empty */0; } - if (!s2) { + if (/* tag */typeof s2 === "number") { return /* Empty */0; } var r1 = s1.r; @@ -389,10 +389,10 @@ function inter(s1, s2) { } function diff(s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return /* Empty */0; } - if (!s2) { + if (/* tag */typeof s2 === "number") { return s1; } var r1 = s1.r; @@ -411,7 +411,7 @@ function cons_enum(_s, _e) { while(true) { var e = _e; var s = _s; - if (!s) { + if (/* tag */typeof s === "number") { return e; } _e = /* More */{ @@ -430,14 +430,14 @@ function compare(s1, s2) { while(true) { var e2 = _e2; var e1 = _e1; - if (!e1) { - if (e2) { - return -1; - } else { + if (/* tag */typeof e1 === "number") { + if (/* tag */typeof e2 === "number") { return 0; + } else { + return -1; } } - if (!e2) { + if (/* tag */typeof e2 === "number") { return 1; } var c = Caml.string_compare(e1._0, e2._0); @@ -458,17 +458,17 @@ function subset(_s1, _s2) { while(true) { var s2 = _s2; var s1 = _s1; - if (!s1) { + if (/* tag */typeof s1 === "number") { return true; } - if (!s2) { + var r1 = s1.r; + var v1 = s1.v; + var l1 = s1.l; + if (/* tag */typeof s2 === "number") { return false; } var r2 = s2.r; var l2 = s2.l; - var r1 = s1.r; - var v1 = s1.v; - var l1 = s1.l; var c = Caml.string_compare(v1, s2.v); if (c === 0) { if (!subset(l1, l2)) { @@ -506,7 +506,7 @@ function subset(_s1, _s2) { function iter(f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } iter(f, param.l); @@ -520,7 +520,7 @@ function fold(f, _s, _accu) { while(true) { var accu = _accu; var s = _s; - if (!s) { + if (/* tag */typeof s === "number") { return accu; } _accu = Curry._2(f, s.v, fold(f, s.l, accu)); @@ -532,7 +532,7 @@ function fold(f, _s, _accu) { function for_all(p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return true; } if (!Curry._1(p, param.v)) { @@ -549,7 +549,7 @@ function for_all(p, _param) { function exists(p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } if (Curry._1(p, param.v)) { @@ -564,7 +564,7 @@ function exists(p, _param) { } function filter(p, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Empty */0; } var r = t.r; @@ -585,7 +585,7 @@ function filter(p, t) { } function partition(p, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, /* Empty */0 @@ -613,10 +613,10 @@ function partition(p, param) { } function cardinal(param) { - if (param) { - return (cardinal(param.l) + 1 | 0) + cardinal(param.r) | 0; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return (cardinal(param.l) + 1 | 0) + cardinal(param.r) | 0; } } @@ -624,7 +624,7 @@ function elements_aux(_accu, _param) { while(true) { var param = _param; var accu = _accu; - if (!param) { + if (/* tag */typeof param === "number") { return accu; } _param = param.l; @@ -643,60 +643,60 @@ function elements(s) { function find(x, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - var c = Caml.string_compare(x, v); - if (c === 0) { - return v; - } - _param = c < 0 ? param.l : param.r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var v = param.v; + var c = Caml.string_compare(x, v); + if (c === 0) { + return v; + } + _param = c < 0 ? param.l : param.r; + continue ; }; } function find_first(f, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - if (Curry._1(f, v)) { - var _v0 = v; - var _param$1 = param.l; - while(true) { - var param$1 = _param$1; - var v0 = _v0; - if (!param$1) { - return v0; - } - var v$1 = param$1.v; - if (Curry._1(f, v$1)) { - _param$1 = param$1.l; - _v0 = v$1; - continue ; - } - _param$1 = param$1.r; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + var v = param.v; + if (Curry._1(f, v)) { + var _v0 = v; + var _param$1 = param.l; + while(true) { + var param$1 = _param$1; + var v0 = _v0; + if (/* tag */typeof param$1 === "number") { + return v0; + } + var v$1 = param$1.v; + if (Curry._1(f, v$1)) { + _param$1 = param$1.l; + _v0 = v$1; continue ; - }; - } - _param = param.r; - continue ; + } + _param$1 = param$1.r; + continue ; + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + _param = param.r; + continue ; }; } function find_first_opt(f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -706,7 +706,7 @@ function find_first_opt(f, _param) { while(true) { var param$1 = _param$1; var v0 = _v0; - if (!param$1) { + if (/* tag */typeof param$1 === "number") { return Caml_option.some(v0); } var v$1 = param$1.v; @@ -727,41 +727,41 @@ function find_first_opt(f, _param) { function find_last(f, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - if (Curry._1(f, v)) { - var _v0 = v; - var _param$1 = param.r; - while(true) { - var param$1 = _param$1; - var v0 = _v0; - if (!param$1) { - return v0; - } - var v$1 = param$1.v; - if (Curry._1(f, v$1)) { - _param$1 = param$1.r; - _v0 = v$1; - continue ; - } - _param$1 = param$1.l; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + var v = param.v; + if (Curry._1(f, v)) { + var _v0 = v; + var _param$1 = param.r; + while(true) { + var param$1 = _param$1; + var v0 = _v0; + if (/* tag */typeof param$1 === "number") { + return v0; + } + var v$1 = param$1.v; + if (Curry._1(f, v$1)) { + _param$1 = param$1.r; + _v0 = v$1; continue ; - }; - } - _param = param.l; - continue ; + } + _param$1 = param$1.l; + continue ; + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + _param = param.l; + continue ; }; } function find_last_opt(f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -771,7 +771,7 @@ function find_last_opt(f, _param) { while(true) { var param$1 = _param$1; var v0 = _v0; - if (!param$1) { + if (/* tag */typeof param$1 === "number") { return Caml_option.some(v0); } var v$1 = param$1.v; @@ -792,7 +792,7 @@ function find_last_opt(f, _param) { function find_opt(x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -806,7 +806,7 @@ function find_opt(x, _param) { } function map(f, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Empty */0; } var r = t.r; diff --git a/jscomp/test/option_repr_test.js b/jscomp/test/option_repr_test.js index 2bf9c4b47e..0f0510be1c 100644 --- a/jscomp/test/option_repr_test.js +++ b/jscomp/test/option_repr_test.js @@ -31,10 +31,10 @@ function f0(x) { } function f1(u) { - if (u) { - return 0; - } else { + if (/* tag */typeof u === "number") { return 1; + } else { + return 0; } } diff --git a/jscomp/test/pq_test.js b/jscomp/test/pq_test.js index 0da4bdfadb..7306823b14 100644 --- a/jscomp/test/pq_test.js +++ b/jscomp/test/pq_test.js @@ -3,7 +3,7 @@ var Caml_exceptions = require("../../lib/js/caml_exceptions.js"); function insert(queue, prio, elt) { - if (!queue) { + if (/* tag */typeof queue === "number") { return /* Node */{ _0: prio, _1: elt, @@ -35,41 +35,42 @@ function insert(queue, prio, elt) { var Queue_is_empty = /* @__PURE__ */Caml_exceptions.create("Pq_test.PrioQueue.Queue_is_empty"); function remove_top(param) { - if (param) { - var left = param._2; - if (!param._3) { - return left; - } - if (!left) { - return param._3; - } - var right = param._3; - var rprio = right._0; - var lprio = left._0; - if (lprio <= rprio) { - return /* Node */{ - _0: lprio, - _1: left._1, - _2: remove_top(left), - _3: right - }; - } else { - return /* Node */{ - _0: rprio, - _1: right._1, - _2: left, - _3: remove_top(right) - }; - } + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: Queue_is_empty, + Error: new Error() + }; + } + var left = param._2; + var tmp = param._3; + if (/* tag */typeof tmp === "number") { + return left; + } + if (/* tag */typeof left === "number") { + return param._3; + } + var right = param._3; + var rprio = right._0; + var lprio = left._0; + if (lprio <= rprio) { + return /* Node */{ + _0: lprio, + _1: left._1, + _2: remove_top(left), + _3: right + }; + } else { + return /* Node */{ + _0: rprio, + _1: right._1, + _2: left, + _3: remove_top(right) + }; } - throw { - RE_EXN_ID: Queue_is_empty, - Error: new Error() - }; } function extract(queue) { - if (queue) { + if (/* tag */typeof queue !== "number") { return [ queue._0, queue._1, diff --git a/jscomp/test/rbset.js b/jscomp/test/rbset.js index dc4cb0e87b..dff06c4c50 100644 --- a/jscomp/test/rbset.js +++ b/jscomp/test/rbset.js @@ -2,7 +2,12 @@ function blackify(s) { - if (s && s._0) { + if (/* tag */typeof s === "number" || !s._0) { + return [ + s, + true + ]; + } else { return [ /* Node */{ _0: /* Black */0, @@ -12,26 +17,21 @@ function blackify(s) { }, false ]; - } else { - return [ - s, - true - ]; } } function is_empty(param) { - if (param) { - return false; - } else { + if (/* tag */typeof param === "number") { return true; + } else { + return false; } } function mem(x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } var y = param._2; @@ -56,10 +56,14 @@ function balance_left(l, x, r) { var c; var z; var d; - if (l && l._0) { + if (/* tag */typeof l === "number" || !l._0) { + exit = 1; + } else { var a$1 = l._1; var exit$1 = 0; - if (a$1 && a$1._0) { + if (/* tag */typeof a$1 === "number" || !a$1._0) { + exit$1 = 3; + } else { a = a$1._1; x$1 = a$1._2; b = a$1._3; @@ -68,12 +72,12 @@ function balance_left(l, x, r) { z = x; d = r; exit = 2; - } else { - exit$1 = 3; } if (exit$1 === 3) { var match = l._3; - if (match && match._0) { + if (/* tag */typeof match === "number" || !match._0) { + exit = 1; + } else { a = a$1; x$1 = l._2; b = match._1; @@ -82,13 +86,9 @@ function balance_left(l, x, r) { z = x; d = r; exit = 2; - } else { - exit = 1; } } - } else { - exit = 1; } switch (exit) { case 1 : @@ -128,10 +128,14 @@ function balance_right(l, x, r) { var c; var z; var d; - if (r && r._0) { + if (/* tag */typeof r === "number" || !r._0) { + exit = 1; + } else { var b$1 = r._1; var exit$1 = 0; - if (b$1 && b$1._0) { + if (/* tag */typeof b$1 === "number" || !b$1._0) { + exit$1 = 3; + } else { a = l; x$1 = x; b = b$1._1; @@ -140,12 +144,12 @@ function balance_right(l, x, r) { z = r._2; d = r._3; exit = 2; - } else { - exit$1 = 3; } if (exit$1 === 3) { var match = r._3; - if (match && match._0) { + if (/* tag */typeof match === "number" || !match._0) { + exit = 1; + } else { a = l; x$1 = x; b = b$1; @@ -154,13 +158,9 @@ function balance_right(l, x, r) { z = match._2; d = match._3; exit = 2; - } else { - exit = 1; } } - } else { - exit = 1; } switch (exit) { case 1 : @@ -201,10 +201,10 @@ function singleton(x) { } function unbalanced_left(param) { - if (param) { + if (/* tag */typeof param !== "number") { if (param._0) { var match = param._1; - if (match && !match._0) { + if (/* tag */typeof match !== "number" && !match._0) { return [ balance_left(/* Node */{ _0: /* Red */1, @@ -218,7 +218,7 @@ function unbalanced_left(param) { } else { var match$1 = param._1; - if (match$1) { + if (/* tag */typeof match$1 !== "number") { if (!match$1._0) { return [ balance_left(/* Node */{ @@ -231,7 +231,7 @@ function unbalanced_left(param) { ]; } var match$2 = match$1._3; - if (match$2 && !match$2._0) { + if (/* tag */typeof match$2 !== "number" && !match$2._0) { return [ /* Node */{ _0: /* Black */0, @@ -264,10 +264,10 @@ function unbalanced_left(param) { } function unbalanced_right(param) { - if (param) { + if (/* tag */typeof param !== "number") { if (param._0) { var match = param._3; - if (match && !match._0) { + if (/* tag */typeof match !== "number" && !match._0) { return [ balance_right(param._1, param._2, /* Node */{ _0: /* Red */1, @@ -281,9 +281,9 @@ function unbalanced_right(param) { } else { var match$1 = param._3; - if (match$1) { - var x = param._2; - var a = param._1; + var x = param._2; + var a = param._1; + if (/* tag */typeof match$1 !== "number") { if (!match$1._0) { return [ balance_right(a, x, /* Node */{ @@ -296,7 +296,7 @@ function unbalanced_right(param) { ]; } var match$2 = match$1._1; - if (match$2 && !match$2._0) { + if (/* tag */typeof match$2 !== "number" && !match$2._0) { return [ /* Node */{ _0: /* Black */0, @@ -329,7 +329,7 @@ function unbalanced_right(param) { } function lbalance(x1, x2, x3) { - if (!x1) { + if (/* tag */typeof x1 === "number") { return /* Node */{ _0: /* Black */0, _1: x1, @@ -347,7 +347,7 @@ function lbalance(x1, x2, x3) { } var r = x1._3; var l = x1._1; - if (l && l._0) { + if (/* tag */typeof l !== "number" && l._0) { return /* Node */{ _0: /* Red */1, _1: /* Node */{ @@ -365,7 +365,7 @@ function lbalance(x1, x2, x3) { } }; } - if (!r) { + if (/* tag */typeof r === "number") { return /* Node */{ _0: /* Black */0, _1: x1, @@ -401,10 +401,12 @@ function lbalance(x1, x2, x3) { } function rbalance(x1, x2, x3) { - if (x3 && x3._0) { + if (/* tag */typeof x3 !== "number" && x3._0) { var b = x3._1; var exit = 0; - if (b) { + if (/* tag */typeof b === "number") { + exit = 2; + } else { if (b._0) { return /* Node */{ _0: /* Red */1, @@ -424,12 +426,10 @@ function rbalance(x1, x2, x3) { }; } exit = 2; - } else { - exit = 2; } if (exit === 2) { var match = x3._3; - if (match && match._0) { + if (/* tag */typeof match !== "number" && match._0) { return /* Node */{ _0: /* Red */1, _1: /* Node */{ @@ -460,7 +460,7 @@ function rbalance(x1, x2, x3) { } function ins(x, s) { - if (!s) { + if (/* tag */typeof s === "number") { return /* Node */{ _0: /* Red */1, _1: /* Empty */0, @@ -506,34 +506,47 @@ function ins(x, s) { function add(x, s) { var s$1 = ins(x, s); - if (s$1 && s$1._0) { + if (/* tag */typeof s$1 === "number" || !s$1._0) { + return s$1; + } else { return /* Node */{ _0: /* Black */0, _1: s$1._1, _2: s$1._2, _3: s$1._3 }; - } else { - return s$1; } } function remove_min(param) { - if (param) { - var c = param._0; - if (c) { - if (!param._1) { - return [ - param._3, - param._2, - false - ]; - } - - } else if (!param._1) { + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Assert_failure", + _1: [ + "rbset.ml", + 115, + 4 + ], + Error: new Error() + }; + } + var c = param._0; + if (c) { + var tmp = param._1; + if (/* tag */typeof tmp === "number") { + return [ + param._3, + param._2, + false + ]; + } + + } else { + var tmp$1 = param._1; + if (/* tag */typeof tmp$1 === "number") { var match = param._3; var x = param._2; - if (!match) { + if (/* tag */typeof match === "number") { return [ /* Empty */0, x, @@ -562,44 +575,36 @@ function remove_min(param) { Error: new Error() }; } - var match$1 = remove_min(param._1); - var y = match$1[1]; - var s_1 = match$1[0]; - var s_2 = param._2; - var s_3 = param._3; - var s = /* Node */{ - _0: c, - _1: s_1, - _2: s_2, - _3: s_3 - }; - if (!match$1[2]) { - return [ - s, - y, - false - ]; - } - var match$2 = unbalanced_right(s); + + } + var match$1 = remove_min(param._1); + var y = match$1[1]; + var s_1 = match$1[0]; + var s_2 = param._2; + var s_3 = param._3; + var s = /* Node */{ + _0: c, + _1: s_1, + _2: s_2, + _3: s_3 + }; + if (!match$1[2]) { return [ - match$2[0], + s, y, - match$2[1] + false ]; } - throw { - RE_EXN_ID: "Assert_failure", - _1: [ - "rbset.ml", - 115, - 4 - ], - Error: new Error() - }; + var match$2 = unbalanced_right(s); + return [ + match$2[0], + y, + match$2[1] + ]; } function remove_aux(x, n) { - if (!n) { + if (/* tag */typeof n === "number") { return [ /* Empty */0, false @@ -610,7 +615,7 @@ function remove_aux(x, n) { var l = n._1; var c = n._0; if (x === y) { - if (!r) { + if (/* tag */typeof r === "number") { if (c === /* Red */1) { return [ l, @@ -679,10 +684,10 @@ function remove(x, s) { } function cardinal(param) { - if (param) { - return (1 + cardinal(param._1) | 0) + cardinal(param._3) | 0; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return (1 + cardinal(param._1) | 0) + cardinal(param._3) | 0; } } diff --git a/jscomp/test/rec_module_test.js b/jscomp/test/rec_module_test.js index d44f69842f..589aa443a4 100644 --- a/jscomp/test/rec_module_test.js +++ b/jscomp/test/rec_module_test.js @@ -95,16 +95,18 @@ var AAA = { }; function height(param) { - if (param) { - return param.h; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return param.h; } } function create(l, v, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; return /* Node */{ l: l, v: v, @@ -114,25 +116,27 @@ function create(l, v, r) { } function bal(l, v, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l.r; - var lv = l.v; - var ll = l.l; - if (height(ll) >= height(lr)) { - return create(ll, lv, create(lr, v, r)); - } - if (lr) { - return create(create(ll, lv, lr.l), lr.v, create(lr.r, v, r)); - } + if (/* tag */typeof l === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", Error: new Error() }; } + var lr = l.r; + var lv = l.v; + var ll = l.l; + if (height(ll) >= height(lr)) { + return create(ll, lv, create(lr, v, r)); + } + if (/* tag */typeof lr !== "number") { + return create(create(ll, lv, lr.l), lr.v, create(lr.r, v, r)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", @@ -147,22 +151,22 @@ function bal(l, v, r) { h: hl >= hr ? hl + 1 | 0 : hr + 1 | 0 }; } - if (r) { - var rr = r.r; - var rv = r.v; - var rl = r.l; - if (height(rr) >= height(rl)) { - return create(create(l, v, rl), rv, rr); - } - if (rl) { - return create(create(l, v, rl.l), rl.v, create(rl.r, rv, rr)); - } + if (/* tag */typeof r === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", Error: new Error() }; } + var rr = r.r; + var rv = r.v; + var rl = r.l; + if (height(rr) >= height(rl)) { + return create(create(l, v, rl), rv, rr); + } + if (/* tag */typeof rl !== "number") { + return create(create(l, v, rl.l), rl.v, create(rl.r, rv, rr)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", @@ -171,7 +175,7 @@ function bal(l, v, r) { } function add(x, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Node */{ l: /* Empty */0, v: x, @@ -212,30 +216,30 @@ function singleton(x) { } function add_min_element(x, param) { - if (param) { - return bal(add_min_element(x, param.l), param.v, param.r); - } else { + if (/* tag */typeof param === "number") { return singleton(x); + } else { + return bal(add_min_element(x, param.l), param.v, param.r); } } function add_max_element(x, param) { - if (param) { - return bal(param.l, param.v, add_max_element(x, param.r)); - } else { + if (/* tag */typeof param === "number") { return singleton(x); + } else { + return bal(param.l, param.v, add_max_element(x, param.r)); } } function join(l, v, r) { - if (!l) { + if (/* tag */typeof l === "number") { return add_min_element(v, r); } - if (!r) { + var lh = l.h; + if (/* tag */typeof r === "number") { return add_max_element(v, l); } var rh = r.h; - var lh = l.h; if (lh > (rh + 2 | 0)) { return bal(l.l, l.v, join(l.r, v, r)); } else if (rh > (lh + 2 | 0)) { @@ -248,29 +252,29 @@ function join(l, v, r) { function min_elt(_param) { while(true) { var param = _param; - if (param) { - var l = param.l; - if (!l) { - return param.v; - } - _param = l; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var l = param.l; + if (/* tag */typeof l === "number") { + return param.v; + } + _param = l; + continue ; }; } function min_elt_opt(_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var l = param.l; - if (!l) { + if (/* tag */typeof l === "number") { return Caml_option.some(param.v); } _param = l; @@ -281,29 +285,29 @@ function min_elt_opt(_param) { function max_elt(_param) { while(true) { var param = _param; - if (param) { - var r = param.r; - if (!r) { - return param.v; - } - _param = r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var r = param.r; + if (/* tag */typeof r === "number") { + return param.v; + } + _param = r; + continue ; }; } function max_elt_opt(_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var r = param.r; - if (!r) { + if (/* tag */typeof r === "number") { return Caml_option.some(param.v); } _param = r; @@ -312,35 +316,33 @@ function max_elt_opt(_param) { } function remove_min_elt(param) { - if (param) { - var l = param.l; - if (l) { - return bal(remove_min_elt(l), param.v, param.r); - } else { - return param.r; - } + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Invalid_argument", + _1: "Set.remove_min_elt", + Error: new Error() + }; + } + var l = param.l; + if (/* tag */typeof l === "number") { + return param.r; + } else { + return bal(remove_min_elt(l), param.v, param.r); } - throw { - RE_EXN_ID: "Invalid_argument", - _1: "Set.remove_min_elt", - Error: new Error() - }; } function concat(t1, t2) { - if (t1) { - if (t2) { - return join(t1, min_elt(t2), remove_min_elt(t2)); - } else { - return t1; - } - } else { + if (/* tag */typeof t1 === "number") { return t2; + } else if (/* tag */typeof t2 === "number") { + return t1; + } else { + return join(t1, min_elt(t2), remove_min_elt(t2)); } } function split(x, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, false, @@ -375,17 +377,17 @@ function split(x, param) { } function is_empty(param) { - if (param) { - return false; - } else { + if (/* tag */typeof param === "number") { return true; + } else { + return false; } } function mem(x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } var c = Curry._2(AAA.compare, x, param.v); @@ -398,7 +400,7 @@ function mem(x, _param) { } function remove(x, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Empty */0; } var r = t.r; @@ -406,14 +408,12 @@ function remove(x, t) { var l = t.l; var c = Curry._2(AAA.compare, x, v); if (c === 0) { - if (l) { - if (r) { - return bal(l, min_elt(r), remove_min_elt(r)); - } else { - return l; - } - } else { + if (/* tag */typeof l === "number") { return r; + } else if (/* tag */typeof r === "number") { + return l; + } else { + return bal(l, min_elt(r), remove_min_elt(r)); } } if (c < 0) { @@ -433,16 +433,16 @@ function remove(x, t) { } function union(s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return s2; } - if (!s2) { + var h1 = s1.h; + var v1 = s1.v; + if (/* tag */typeof s2 === "number") { return s1; } var h2 = s2.h; var v2 = s2.v; - var h1 = s1.h; - var v1 = s1.v; if (h1 >= h2) { if (h2 === 1) { return add(v2, s1); @@ -458,10 +458,10 @@ function union(s1, s2) { } function inter(s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return /* Empty */0; } - if (!s2) { + if (/* tag */typeof s2 === "number") { return /* Empty */0; } var r1 = s1.r; @@ -477,10 +477,10 @@ function inter(s1, s2) { } function diff(s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return /* Empty */0; } - if (!s2) { + if (/* tag */typeof s2 === "number") { return s1; } var r1 = s1.r; @@ -499,7 +499,7 @@ function cons_enum(_s, _e) { while(true) { var e = _e; var s = _s; - if (!s) { + if (/* tag */typeof s === "number") { return e; } _e = /* More */{ @@ -518,14 +518,14 @@ function compare$1(s1, s2) { while(true) { var e2 = _e2; var e1 = _e1; - if (!e1) { - if (e2) { - return -1; - } else { + if (/* tag */typeof e1 === "number") { + if (/* tag */typeof e2 === "number") { return 0; + } else { + return -1; } } - if (!e2) { + if (/* tag */typeof e2 === "number") { return 1; } var c = Curry._2(AAA.compare, e1._0, e2._0); @@ -546,17 +546,17 @@ function subset(_s1, _s2) { while(true) { var s2 = _s2; var s1 = _s1; - if (!s1) { + if (/* tag */typeof s1 === "number") { return true; } - if (!s2) { + var r1 = s1.r; + var v1 = s1.v; + var l1 = s1.l; + if (/* tag */typeof s2 === "number") { return false; } var r2 = s2.r; var l2 = s2.l; - var r1 = s1.r; - var v1 = s1.v; - var l1 = s1.l; var c = Curry._2(AAA.compare, v1, s2.v); if (c === 0) { if (!subset(l1, l2)) { @@ -594,7 +594,7 @@ function subset(_s1, _s2) { function iter(f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } iter(f, param.l); @@ -608,7 +608,7 @@ function fold(f, _s, _accu) { while(true) { var accu = _accu; var s = _s; - if (!s) { + if (/* tag */typeof s === "number") { return accu; } _accu = Curry._2(f, s.v, fold(f, s.l, accu)); @@ -620,7 +620,7 @@ function fold(f, _s, _accu) { function for_all(p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return true; } if (!Curry._1(p, param.v)) { @@ -637,7 +637,7 @@ function for_all(p, _param) { function exists(p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } if (Curry._1(p, param.v)) { @@ -652,7 +652,7 @@ function exists(p, _param) { } function filter(p, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Empty */0; } var r = t.r; @@ -673,7 +673,7 @@ function filter(p, t) { } function partition(p, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, /* Empty */0 @@ -701,10 +701,10 @@ function partition(p, param) { } function cardinal(param) { - if (param) { - return (cardinal(param.l) + 1 | 0) + cardinal(param.r) | 0; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return (cardinal(param.l) + 1 | 0) + cardinal(param.r) | 0; } } @@ -712,7 +712,7 @@ function elements_aux(_accu, _param) { while(true) { var param = _param; var accu = _accu; - if (!param) { + if (/* tag */typeof param === "number") { return accu; } _param = param.l; @@ -731,60 +731,60 @@ function elements(s) { function find(x, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - var c = Curry._2(AAA.compare, x, v); - if (c === 0) { - return v; - } - _param = c < 0 ? param.l : param.r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var v = param.v; + var c = Curry._2(AAA.compare, x, v); + if (c === 0) { + return v; + } + _param = c < 0 ? param.l : param.r; + continue ; }; } function find_first(f, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - if (Curry._1(f, v)) { - var _v0 = v; - var _param$1 = param.l; - while(true) { - var param$1 = _param$1; - var v0 = _v0; - if (!param$1) { - return v0; - } - var v$1 = param$1.v; - if (Curry._1(f, v$1)) { - _param$1 = param$1.l; - _v0 = v$1; - continue ; - } - _param$1 = param$1.r; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + var v = param.v; + if (Curry._1(f, v)) { + var _v0 = v; + var _param$1 = param.l; + while(true) { + var param$1 = _param$1; + var v0 = _v0; + if (/* tag */typeof param$1 === "number") { + return v0; + } + var v$1 = param$1.v; + if (Curry._1(f, v$1)) { + _param$1 = param$1.l; + _v0 = v$1; continue ; - }; - } - _param = param.r; - continue ; + } + _param$1 = param$1.r; + continue ; + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + _param = param.r; + continue ; }; } function find_first_opt(f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -794,7 +794,7 @@ function find_first_opt(f, _param) { while(true) { var param$1 = _param$1; var v0 = _v0; - if (!param$1) { + if (/* tag */typeof param$1 === "number") { return Caml_option.some(v0); } var v$1 = param$1.v; @@ -815,41 +815,41 @@ function find_first_opt(f, _param) { function find_last(f, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - if (Curry._1(f, v)) { - var _v0 = v; - var _param$1 = param.r; - while(true) { - var param$1 = _param$1; - var v0 = _v0; - if (!param$1) { - return v0; - } - var v$1 = param$1.v; - if (Curry._1(f, v$1)) { - _param$1 = param$1.r; - _v0 = v$1; - continue ; - } - _param$1 = param$1.l; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + var v = param.v; + if (Curry._1(f, v)) { + var _v0 = v; + var _param$1 = param.r; + while(true) { + var param$1 = _param$1; + var v0 = _v0; + if (/* tag */typeof param$1 === "number") { + return v0; + } + var v$1 = param$1.v; + if (Curry._1(f, v$1)) { + _param$1 = param$1.r; + _v0 = v$1; continue ; - }; - } - _param = param.l; - continue ; + } + _param$1 = param$1.l; + continue ; + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + _param = param.l; + continue ; }; } function find_last_opt(f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -859,7 +859,7 @@ function find_last_opt(f, _param) { while(true) { var param$1 = _param$1; var v0 = _v0; - if (!param$1) { + if (/* tag */typeof param$1 === "number") { return Caml_option.some(v0); } var v$1 = param$1.v; @@ -880,7 +880,7 @@ function find_last_opt(f, _param) { function find_opt(x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -894,7 +894,7 @@ function find_opt(x, _param) { } function map(f, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Empty */0; } var r = t.r; diff --git a/jscomp/test/record_extension_test.js b/jscomp/test/record_extension_test.js index d04c826d77..7acc8f379b 100644 --- a/jscomp/test/record_extension_test.js +++ b/jscomp/test/record_extension_test.js @@ -36,7 +36,7 @@ var v0 = { eq("File \"record_extension_test.ml\", line 19, characters 6-13", f(v0), 7); function f2(x) { - if (typeof x === "number" || x.TAG !== /* C */0) { + if (/* tag */typeof x === "number" || x.TAG !== /* C */0) { return 0; } else { return x.x; @@ -44,7 +44,7 @@ function f2(x) { } function f2_with(x) { - if (typeof x === "number" || x.TAG !== /* C */0) { + if (/* tag */typeof x === "number" || x.TAG !== /* C */0) { return x; } else { return { diff --git a/jscomp/test/recursive_records_test.js b/jscomp/test/recursive_records_test.js index 15705657ec..56f8db5da7 100644 --- a/jscomp/test/recursive_records_test.js +++ b/jscomp/test/recursive_records_test.js @@ -55,15 +55,15 @@ function f2(x) { } function hd(x) { - if (x) { - return x.content; - } else { + if (/* tag */typeof x === "number") { return 0; + } else { + return x.content; } } function tl_exn(x) { - if (x) { + if (/* tag */typeof x !== "number") { return x.next; } throw { diff --git a/jscomp/test/set_gen.js b/jscomp/test/set_gen.js index 41a01e95d4..6956bad202 100644 --- a/jscomp/test/set_gen.js +++ b/jscomp/test/set_gen.js @@ -9,7 +9,7 @@ function cons_enum(_s, _e) { while(true) { var e = _e; var s = _s; - if (!s) { + if (/* tag */typeof s === "number") { return e; } _e = /* More */{ @@ -23,54 +23,54 @@ function cons_enum(_s, _e) { } function height(param) { - if (param) { - return param._3; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return param._3; } } function min_elt(_param) { while(true) { var param = _param; - if (param) { - var l = param._0; - if (!l) { - return param._1; - } - _param = l; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var l = param._0; + if (/* tag */typeof l === "number") { + return param._1; + } + _param = l; + continue ; }; } function max_elt(_param) { while(true) { var param = _param; - if (param) { - var r = param._2; - if (!r) { - return param._1; - } - _param = r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var r = param._2; + if (/* tag */typeof r === "number") { + return param._1; + } + _param = r; + continue ; }; } function is_empty(param) { - if (param) { - return false; - } else { + if (/* tag */typeof param === "number") { return true; + } else { + return false; } } @@ -78,7 +78,7 @@ function cardinal_aux(_acc, _param) { while(true) { var param = _param; var acc = _acc; - if (!param) { + if (/* tag */typeof param === "number") { return acc; } _param = param._0; @@ -95,7 +95,7 @@ function elements_aux(_accu, _param) { while(true) { var param = _param; var accu = _accu; - if (!param) { + if (/* tag */typeof param === "number") { return accu; } _param = param._0; @@ -114,7 +114,7 @@ function elements(s) { function iter(f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } iter(f, param._0); @@ -128,7 +128,7 @@ function fold(f, _s, _accu) { while(true) { var accu = _accu; var s = _s; - if (!s) { + if (/* tag */typeof s === "number") { return accu; } _accu = Curry._2(f, s._1, fold(f, s._0, accu)); @@ -140,7 +140,7 @@ function fold(f, _s, _accu) { function for_all(p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return true; } if (!Curry._1(p, param._1)) { @@ -157,7 +157,7 @@ function for_all(p, _param) { function exists(p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } if (Curry._1(p, param._1)) { @@ -198,7 +198,7 @@ var Height_invariant_broken = /* @__PURE__ */Caml_exceptions.create("Set_gen.Hei var Height_diff_borken = /* @__PURE__ */Caml_exceptions.create("Set_gen.Height_diff_borken"); function check_height_and_diff(param) { - if (!param) { + if (/* tag */typeof param === "number") { return 0; } var h = param._3; @@ -225,8 +225,10 @@ function check(tree) { } function create(l, v, r) { - var hl = l ? l._3 : 0; - var hr = r ? r._3 : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l._3; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r._3; return /* Node */{ _0: l, _1: v, @@ -236,35 +238,37 @@ function create(l, v, r) { } function internal_bal(l, v, r) { - var hl = l ? l._3 : 0; - var hr = r ? r._3 : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l._3; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r._3; if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l._2; - var lv = l._1; - var ll = l._0; - if (height(ll) >= height(lr)) { - return create(ll, lv, create(lr, v, r)); - } - if (lr) { - return create(create(ll, lv, lr._0), lr._1, create(lr._2, v, r)); - } + if (/* tag */typeof l === "number") { throw { RE_EXN_ID: "Assert_failure", _1: [ "set_gen.ml", - 235, - 19 + 225, + 15 ], Error: new Error() }; } + var lr = l._2; + var lv = l._1; + var ll = l._0; + if (height(ll) >= height(lr)) { + return create(ll, lv, create(lr, v, r)); + } + if (/* tag */typeof lr !== "number") { + return create(create(ll, lv, lr._0), lr._1, create(lr._2, v, r)); + } throw { RE_EXN_ID: "Assert_failure", _1: [ "set_gen.ml", - 225, - 15 + 235, + 19 ], Error: new Error() }; @@ -277,51 +281,51 @@ function internal_bal(l, v, r) { _3: hl >= hr ? hl + 1 | 0 : hr + 1 | 0 }; } - if (r) { - var rr = r._2; - var rv = r._1; - var rl = r._0; - if (height(rr) >= height(rl)) { - return create(create(l, v, rl), rv, rr); - } - if (rl) { - return create(create(l, v, rl._0), rl._1, create(rl._2, rv, rr)); - } + if (/* tag */typeof r === "number") { throw { RE_EXN_ID: "Assert_failure", _1: [ "set_gen.ml", - 251, - 19 + 245, + 15 ], Error: new Error() }; } + var rr = r._2; + var rv = r._1; + var rl = r._0; + if (height(rr) >= height(rl)) { + return create(create(l, v, rl), rv, rr); + } + if (/* tag */typeof rl !== "number") { + return create(create(l, v, rl._0), rl._1, create(rl._2, rv, rr)); + } throw { RE_EXN_ID: "Assert_failure", _1: [ "set_gen.ml", - 245, - 15 + 251, + 19 ], Error: new Error() }; } function remove_min_elt(param) { - if (param) { - var l = param._0; - if (l) { - return internal_bal(remove_min_elt(l), param._1, param._2); - } else { - return param._2; - } + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Invalid_argument", + _1: "Set.remove_min_elt", + Error: new Error() + }; + } + var l = param._0; + if (/* tag */typeof l === "number") { + return param._2; + } else { + return internal_bal(remove_min_elt(l), param._1, param._2); } - throw { - RE_EXN_ID: "Invalid_argument", - _1: "Set.remove_min_elt", - Error: new Error() - }; } function singleton(x) { @@ -334,42 +338,40 @@ function singleton(x) { } function internal_merge(l, r) { - if (l) { - if (r) { - return internal_bal(l, min_elt(r), remove_min_elt(r)); - } else { - return l; - } - } else { + if (/* tag */typeof l === "number") { return r; + } else if (/* tag */typeof r === "number") { + return l; + } else { + return internal_bal(l, min_elt(r), remove_min_elt(r)); } } function add_min_element(v, param) { - if (param) { - return internal_bal(add_min_element(v, param._0), param._1, param._2); - } else { + if (/* tag */typeof param === "number") { return singleton(v); + } else { + return internal_bal(add_min_element(v, param._0), param._1, param._2); } } function add_max_element(v, param) { - if (param) { - return internal_bal(param._0, param._1, add_max_element(v, param._2)); - } else { + if (/* tag */typeof param === "number") { return singleton(v); + } else { + return internal_bal(param._0, param._1, add_max_element(v, param._2)); } } function internal_join(l, v, r) { - if (!l) { + if (/* tag */typeof l === "number") { return add_min_element(v, r); } - if (!r) { + var lh = l._3; + if (/* tag */typeof r === "number") { return add_max_element(v, l); } var rh = r._3; - var lh = l._3; if (lh > (rh + 2 | 0)) { return internal_bal(l._0, l._1, internal_join(l._2, v, r)); } else if (rh > (lh + 2 | 0)) { @@ -380,19 +382,17 @@ function internal_join(l, v, r) { } function internal_concat(t1, t2) { - if (t1) { - if (t2) { - return internal_join(t1, min_elt(t2), remove_min_elt(t2)); - } else { - return t1; - } - } else { + if (/* tag */typeof t1 === "number") { return t2; + } else if (/* tag */typeof t2 === "number") { + return t1; + } else { + return internal_join(t1, min_elt(t2), remove_min_elt(t2)); } } function filter(p, param) { - if (!param) { + if (/* tag */typeof param === "number") { return /* Empty */0; } var v = param._1; @@ -407,7 +407,7 @@ function filter(p, param) { } function partition(p, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, /* Empty */0 @@ -596,7 +596,7 @@ function of_sorted_array(l) { function is_ordered(cmp, tree) { var is_ordered_min_max = function (tree) { - if (!tree) { + if (/* tag */typeof tree === "number") { return "Empty"; } var r = tree._2; @@ -675,14 +675,14 @@ function compare_aux(cmp, _e1, _e2) { while(true) { var e2 = _e2; var e1 = _e1; - if (!e1) { - if (e2) { - return -1; - } else { + if (/* tag */typeof e1 === "number") { + if (/* tag */typeof e2 === "number") { return 0; + } else { + return -1; } } - if (!e2) { + if (/* tag */typeof e2 === "number") { return 1; } var c = Curry._2(cmp, e1._0, e2._0); diff --git a/jscomp/test/simplify_lambda_632o.js b/jscomp/test/simplify_lambda_632o.js index 1a43d21472..e9b3d731e0 100644 --- a/jscomp/test/simplify_lambda_632o.js +++ b/jscomp/test/simplify_lambda_632o.js @@ -2,11 +2,31 @@ function f(x) { - return x; + switch (x) { + case /* X1 */0 : + return /* X1 */0; + case /* X2 */1 : + return /* X2 */1; + case /* X3 */2 : + return /* X3 */2; + case /* X4 */3 : + return /* X4 */3; + + } } function f2(x) { - return x; + switch (x) { + case /* X1 */0 : + return /* X1 */0; + case /* X2 */1 : + return /* X2 */1; + case /* X3 */2 : + return /* X3 */2; + case /* X4 */3 : + return /* X4 */3; + + } } exports.f = f; diff --git a/jscomp/test/string_set.js b/jscomp/test/string_set.js index a1d9eaba56..0e9cf8625d 100644 --- a/jscomp/test/string_set.js +++ b/jscomp/test/string_set.js @@ -7,7 +7,7 @@ var $$String = require("../../lib/js/string.js"); var Set_gen = require("./set_gen.js"); function split(x, tree) { - if (!tree) { + if (/* tag */typeof tree === "number") { return [ /* Empty */0, false, @@ -42,7 +42,7 @@ function split(x, tree) { } function add(x, tree) { - if (!tree) { + if (/* tag */typeof tree === "number") { return /* Node */{ _0: /* Empty */0, _1: x, @@ -64,16 +64,16 @@ function add(x, tree) { } function union(s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return s2; } - if (!s2) { + var h1 = s1._3; + var v1 = s1._1; + if (/* tag */typeof s2 === "number") { return s1; } var h2 = s2._3; var v2 = s2._1; - var h1 = s1._3; - var v1 = s1._1; if (h1 >= h2) { if (h2 === 1) { return add(v2, s1); @@ -89,10 +89,10 @@ function union(s1, s2) { } function inter(s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return /* Empty */0; } - if (!s2) { + if (/* tag */typeof s2 === "number") { return /* Empty */0; } var r1 = s1._2; @@ -108,10 +108,10 @@ function inter(s1, s2) { } function diff(s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return /* Empty */0; } - if (!s2) { + if (/* tag */typeof s2 === "number") { return s1; } var r1 = s1._2; @@ -129,7 +129,7 @@ function diff(s1, s2) { function mem(x, _tree) { while(true) { var tree = _tree; - if (!tree) { + if (/* tag */typeof tree === "number") { return false; } var c = Caml.string_compare(x, tree._1); @@ -142,7 +142,7 @@ function mem(x, _tree) { } function remove(x, tree) { - if (!tree) { + if (/* tag */typeof tree === "number") { return /* Empty */0; } var r = tree._2; @@ -170,17 +170,17 @@ function subset(_s1, _s2) { while(true) { var s2 = _s2; var s1 = _s1; - if (!s1) { + if (/* tag */typeof s1 === "number") { return true; } - if (!s2) { + var r1 = s1._2; + var v1 = s1._1; + var l1 = s1._0; + if (/* tag */typeof s2 === "number") { return false; } var r2 = s2._2; var l2 = s2._0; - var r1 = s1._2; - var v1 = s1._1; - var l1 = s1._0; var c = Caml.string_compare(v1, s2._1); if (c === 0) { if (!subset(l1, l2)) { @@ -218,19 +218,19 @@ function subset(_s1, _s2) { function find(x, _tree) { while(true) { var tree = _tree; - if (tree) { - var v = tree._1; - var c = Caml.string_compare(x, v); - if (c === 0) { - return v; - } - _tree = c < 0 ? tree._0 : tree._2; - continue ; + if (/* tag */typeof tree === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var v = tree._1; + var c = Caml.string_compare(x, v); + if (c === 0) { + return v; + } + _tree = c < 0 ? tree._0 : tree._2; + continue ; }; } diff --git a/jscomp/test/test_demo.js b/jscomp/test/test_demo.js index 5ffac0bb6a..46aad5cdc6 100644 --- a/jscomp/test/test_demo.js +++ b/jscomp/test/test_demo.js @@ -19,13 +19,13 @@ function cons(x, y) { } function map(f, param) { - if (param) { + if (/* tag */typeof param === "number") { + return /* Nil */0; + } else { return /* Cons */{ _0: Curry._1(f, param._0), _1: map(f, param._1) }; - } else { - return /* Nil */0; } } diff --git a/jscomp/test/test_fib.js b/jscomp/test/test_fib.js index 8a8cf14a09..0864c4aea6 100644 --- a/jscomp/test/test_fib.js +++ b/jscomp/test/test_fib.js @@ -42,21 +42,21 @@ function cons(x, y) { } function length(x) { - if (x) { - return 1 + length(x._1) | 0; - } else { + if (/* tag */typeof x === "number") { return 0; + } else { + return 1 + length(x._1) | 0; } } function map(f, x) { - if (x) { + if (/* tag */typeof x === "number") { + return /* Nil */0; + } else { return /* Cons */{ _0: Curry._1(f, x._0), _1: map(f, x._1) }; - } else { - return /* Nil */0; } } diff --git a/jscomp/test/test_for_map.js b/jscomp/test/test_for_map.js index 6766308a3d..c3d7508822 100644 --- a/jscomp/test/test_for_map.js +++ b/jscomp/test/test_for_map.js @@ -5,10 +5,10 @@ var Curry = require("../../lib/js/curry.js"); var Caml_option = require("../../lib/js/caml_option.js"); function height(param) { - if (param) { - return param.h; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return param.h; } } @@ -35,26 +35,28 @@ function singleton(x, d) { } function bal(l, x, d, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l.r; - var ld = l.d; - var lv = l.v; - var ll = l.l; - if (height(ll) >= height(lr)) { - return create(ll, lv, ld, create(lr, x, d, r)); - } - if (lr) { - return create(create(ll, lv, ld, lr.l), lr.v, lr.d, create(lr.r, x, d, r)); - } + if (/* tag */typeof l === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var lr = l.r; + var ld = l.d; + var lv = l.v; + var ll = l.l; + if (height(ll) >= height(lr)) { + return create(ll, lv, ld, create(lr, x, d, r)); + } + if (/* tag */typeof lr !== "number") { + return create(create(ll, lv, ld, lr.l), lr.v, lr.d, create(lr.r, x, d, r)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -70,23 +72,23 @@ function bal(l, x, d, r) { h: hl >= hr ? hl + 1 | 0 : hr + 1 | 0 }; } - if (r) { - var rr = r.r; - var rd = r.d; - var rv = r.v; - var rl = r.l; - if (height(rr) >= height(rl)) { - return create(create(l, x, d, rl), rv, rd, rr); - } - if (rl) { - return create(create(l, x, d, rl.l), rl.v, rl.d, create(rl.r, rv, rd, rr)); - } + if (/* tag */typeof r === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var rr = r.r; + var rd = r.d; + var rv = r.v; + var rl = r.l; + if (height(rr) >= height(rl)) { + return create(create(l, x, d, rl), rv, rd, rr); + } + if (/* tag */typeof rl !== "number") { + return create(create(l, x, d, rl.l), rl.v, rl.d, create(rl.r, rv, rd, rr)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -95,15 +97,15 @@ function bal(l, x, d, r) { } function is_empty(param) { - if (param) { - return false; - } else { + if (/* tag */typeof param === "number") { return true; + } else { + return false; } } function add(x, data, m) { - if (!m) { + if (/* tag */typeof m === "number") { return /* Node */{ l: /* Empty */0, v: x, @@ -149,65 +151,65 @@ function add(x, data, m) { function find(x, _param) { while(true) { var param = _param; - if (param) { - var c = Caml.int_compare(x, param.v); - if (c === 0) { - return param.d; - } - _param = c < 0 ? param.l : param.r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var c = Caml.int_compare(x, param.v); + if (c === 0) { + return param.d; + } + _param = c < 0 ? param.l : param.r; + continue ; }; } function find_first(f, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - if (Curry._1(f, v)) { - var _v0 = v; - var _d0 = param.d; - var _param$1 = param.l; - while(true) { - var param$1 = _param$1; - var d0 = _d0; - var v0 = _v0; - if (!param$1) { - return [ - v0, - d0 - ]; - } - var v$1 = param$1.v; - if (Curry._1(f, v$1)) { - _param$1 = param$1.l; - _d0 = param$1.d; - _v0 = v$1; - continue ; - } - _param$1 = param$1.r; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + var v = param.v; + if (Curry._1(f, v)) { + var _v0 = v; + var _d0 = param.d; + var _param$1 = param.l; + while(true) { + var param$1 = _param$1; + var d0 = _d0; + var v0 = _v0; + if (/* tag */typeof param$1 === "number") { + return [ + v0, + d0 + ]; + } + var v$1 = param$1.v; + if (Curry._1(f, v$1)) { + _param$1 = param$1.l; + _d0 = param$1.d; + _v0 = v$1; continue ; - }; - } - _param = param.r; - continue ; + } + _param$1 = param$1.r; + continue ; + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + _param = param.r; + continue ; }; } function find_first_opt(f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -219,7 +221,7 @@ function find_first_opt(f, _param) { var param$1 = _param$1; var d0 = _d0; var v0 = _v0; - if (!param$1) { + if (/* tag */typeof param$1 === "number") { return [ v0, d0 @@ -244,47 +246,47 @@ function find_first_opt(f, _param) { function find_last(f, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - if (Curry._1(f, v)) { - var _v0 = v; - var _d0 = param.d; - var _param$1 = param.r; - while(true) { - var param$1 = _param$1; - var d0 = _d0; - var v0 = _v0; - if (!param$1) { - return [ - v0, - d0 - ]; - } - var v$1 = param$1.v; - if (Curry._1(f, v$1)) { - _param$1 = param$1.r; - _d0 = param$1.d; - _v0 = v$1; - continue ; - } - _param$1 = param$1.l; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + var v = param.v; + if (Curry._1(f, v)) { + var _v0 = v; + var _d0 = param.d; + var _param$1 = param.r; + while(true) { + var param$1 = _param$1; + var d0 = _d0; + var v0 = _v0; + if (/* tag */typeof param$1 === "number") { + return [ + v0, + d0 + ]; + } + var v$1 = param$1.v; + if (Curry._1(f, v$1)) { + _param$1 = param$1.r; + _d0 = param$1.d; + _v0 = v$1; continue ; - }; - } - _param = param.l; - continue ; + } + _param$1 = param$1.l; + continue ; + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + _param = param.l; + continue ; }; } function find_last_opt(f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -296,7 +298,7 @@ function find_last_opt(f, _param) { var param$1 = _param$1; var d0 = _d0; var v0 = _v0; - if (!param$1) { + if (/* tag */typeof param$1 === "number") { return [ v0, d0 @@ -321,7 +323,7 @@ function find_last_opt(f, _param) { function find_opt(x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var c = Caml.int_compare(x, param.v); @@ -336,7 +338,7 @@ function find_opt(x, _param) { function mem(x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } var c = Caml.int_compare(x, param.v); @@ -351,32 +353,32 @@ function mem(x, _param) { function min_binding(_param) { while(true) { var param = _param; - if (param) { - var l = param.l; - if (!l) { - return [ - param.v, - param.d - ]; - } - _param = l; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var l = param.l; + if (/* tag */typeof l === "number") { + return [ + param.v, + param.d + ]; + } + _param = l; + continue ; }; } function min_binding_opt(_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var l = param.l; - if (!l) { + if (/* tag */typeof l === "number") { return [ param.v, param.d @@ -390,32 +392,32 @@ function min_binding_opt(_param) { function max_binding(_param) { while(true) { var param = _param; - if (param) { - var r = param.r; - if (!r) { - return [ - param.v, - param.d - ]; - } - _param = r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var r = param.r; + if (/* tag */typeof r === "number") { + return [ + param.v, + param.d + ]; + } + _param = r; + continue ; }; } function max_binding_opt(_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var r = param.r; - if (!r) { + if (/* tag */typeof r === "number") { return [ param.v, param.d @@ -427,26 +429,26 @@ function max_binding_opt(_param) { } function remove_min_binding(param) { - if (param) { - var l = param.l; - if (l) { - return bal(remove_min_binding(l), param.v, param.d, param.r); - } else { - return param.r; - } + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Invalid_argument", + _1: "Map.remove_min_elt", + Error: new Error() + }; + } + var l = param.l; + if (/* tag */typeof l === "number") { + return param.r; + } else { + return bal(remove_min_binding(l), param.v, param.d, param.r); } - throw { - RE_EXN_ID: "Invalid_argument", - _1: "Map.remove_min_elt", - Error: new Error() - }; } function merge(t1, t2) { - if (!t1) { + if (/* tag */typeof t1 === "number") { return t2; } - if (!t2) { + if (/* tag */typeof t2 === "number") { return t1; } var match = min_binding(t2); @@ -454,7 +456,7 @@ function merge(t1, t2) { } function remove(x, m) { - if (!m) { + if (/* tag */typeof m === "number") { return /* Empty */0; } var r = m.r; @@ -482,63 +484,63 @@ function remove(x, m) { } function update(x, f, m) { - if (m) { - var r = m.r; - var d = m.d; - var v = m.v; - var l = m.l; - var c = Caml.int_compare(x, v); - if (c === 0) { - var data = Curry._1(f, Caml_option.some(d)); - if (data === undefined) { - return merge(l, r); - } - var data$1 = Caml_option.valFromOption(data); - if (d === data$1) { - return m; - } else { - return /* Node */{ - l: l, - v: x, - d: data$1, - r: r, - h: m.h - }; - } + if (/* tag */typeof m === "number") { + var data = Curry._1(f, undefined); + if (data !== undefined) { + return /* Node */{ + l: /* Empty */0, + v: x, + d: Caml_option.valFromOption(data), + r: /* Empty */0, + h: 1 + }; + } else { + return /* Empty */0; } - if (c < 0) { - var ll = update(x, f, l); - if (l === ll) { - return m; - } else { - return bal(ll, v, d, r); - } + } + var r = m.r; + var d = m.d; + var v = m.v; + var l = m.l; + var c = Caml.int_compare(x, v); + if (c === 0) { + var data$1 = Curry._1(f, Caml_option.some(d)); + if (data$1 === undefined) { + return merge(l, r); + } + var data$2 = Caml_option.valFromOption(data$1); + if (d === data$2) { + return m; + } else { + return /* Node */{ + l: l, + v: x, + d: data$2, + r: r, + h: m.h + }; } - var rr = update(x, f, r); - if (r === rr) { + } + if (c < 0) { + var ll = update(x, f, l); + if (l === ll) { return m; } else { - return bal(l, v, d, rr); + return bal(ll, v, d, r); } } - var data$2 = Curry._1(f, undefined); - if (data$2 !== undefined) { - return /* Node */{ - l: /* Empty */0, - v: x, - d: Caml_option.valFromOption(data$2), - r: /* Empty */0, - h: 1 - }; + var rr = update(x, f, r); + if (r === rr) { + return m; } else { - return /* Empty */0; + return bal(l, v, d, rr); } } function iter(f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } iter(f, param.l); @@ -549,7 +551,7 @@ function iter(f, _param) { } function map(f, param) { - if (!param) { + if (/* tag */typeof param === "number") { return /* Empty */0; } var l$p = map(f, param.l); @@ -565,7 +567,7 @@ function map(f, param) { } function mapi(f, param) { - if (!param) { + if (/* tag */typeof param === "number") { return /* Empty */0; } var v = param.v; @@ -585,7 +587,7 @@ function fold(f, _m, _accu) { while(true) { var accu = _accu; var m = _m; - if (!m) { + if (/* tag */typeof m === "number") { return accu; } _accu = Curry._3(f, m.v, m.d, fold(f, m.l, accu)); @@ -597,7 +599,7 @@ function fold(f, _m, _accu) { function for_all(p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return true; } if (!Curry._2(p, param.v, param.d)) { @@ -614,7 +616,7 @@ function for_all(p, _param) { function exists(p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } if (Curry._2(p, param.v, param.d)) { @@ -629,30 +631,30 @@ function exists(p, _param) { } function add_min_binding(k, x, param) { - if (param) { - return bal(add_min_binding(k, x, param.l), param.v, param.d, param.r); - } else { + if (/* tag */typeof param === "number") { return singleton(k, x); + } else { + return bal(add_min_binding(k, x, param.l), param.v, param.d, param.r); } } function add_max_binding(k, x, param) { - if (param) { - return bal(param.l, param.v, param.d, add_max_binding(k, x, param.r)); - } else { + if (/* tag */typeof param === "number") { return singleton(k, x); + } else { + return bal(param.l, param.v, param.d, add_max_binding(k, x, param.r)); } } function join(l, v, d, r) { - if (!l) { + if (/* tag */typeof l === "number") { return add_min_binding(v, d, r); } - if (!r) { + var lh = l.h; + if (/* tag */typeof r === "number") { return add_max_binding(v, d, l); } var rh = r.h; - var lh = l.h; if (lh > (rh + 2 | 0)) { return bal(l.l, l.v, l.d, join(l.r, v, d, r)); } else if (rh > (lh + 2 | 0)) { @@ -663,10 +665,10 @@ function join(l, v, d, r) { } function concat(t1, t2) { - if (!t1) { + if (/* tag */typeof t1 === "number") { return t2; } - if (!t2) { + if (/* tag */typeof t2 === "number") { return t1; } var match = min_binding(t2); @@ -682,7 +684,7 @@ function concat_or_join(t1, v, d, t2) { } function split(x, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, undefined, @@ -718,43 +720,46 @@ function split(x, param) { } function merge$1(f, s1, s2) { - if (s1) { + if (/* tag */typeof s1 === "number") { + if (/* tag */typeof s2 === "number") { + return /* Empty */0; + } + + } else { var v1 = s1.v; if (s1.h >= height(s2)) { var match = split(v1, s2); return concat_or_join(merge$1(f, s1.l, match[0]), v1, Curry._3(f, v1, Caml_option.some(s1.d), match[1]), merge$1(f, s1.r, match[2])); } - } else if (!s2) { - return /* Empty */0; } - if (s2) { - var v2 = s2.v; - var match$1 = split(v2, s1); - return concat_or_join(merge$1(f, match$1[0], s2.l), v2, Curry._3(f, v2, match$1[1], Caml_option.some(s2.d)), merge$1(f, match$1[2], s2.r)); + if (/* tag */typeof s2 === "number") { + throw { + RE_EXN_ID: "Assert_failure", + _1: [ + "map.ml", + 393, + 10 + ], + Error: new Error() + }; } - throw { - RE_EXN_ID: "Assert_failure", - _1: [ - "map.ml", - 393, - 10 - ], - Error: new Error() - }; + var v2 = s2.v; + var match$1 = split(v2, s1); + return concat_or_join(merge$1(f, match$1[0], s2.l), v2, Curry._3(f, v2, match$1[1], Caml_option.some(s2.d)), merge$1(f, match$1[2], s2.r)); } function union(f, s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return s2; } - if (!s2) { + var d1 = s1.d; + var v1 = s1.v; + if (/* tag */typeof s2 === "number") { return s1; } var d2 = s2.d; var v2 = s2.v; - var d1 = s1.d; - var v1 = s1.v; if (s1.h >= s2.h) { var match = split(v1, s2); var d2$1 = match[1]; @@ -778,7 +783,7 @@ function union(f, s1, s2) { } function filter(p, m) { - if (!m) { + if (/* tag */typeof m === "number") { return /* Empty */0; } var r = m.r; @@ -800,7 +805,7 @@ function filter(p, m) { } function partition(p, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, /* Empty */0 @@ -832,7 +837,7 @@ function cons_enum(_m, _e) { while(true) { var e = _e; var m = _m; - if (!m) { + if (/* tag */typeof m === "number") { return e; } _e = /* More */{ @@ -852,14 +857,14 @@ function compare(cmp, m1, m2) { while(true) { var e2 = _e2; var e1 = _e1; - if (!e1) { - if (e2) { - return -1; - } else { + if (/* tag */typeof e1 === "number") { + if (/* tag */typeof e2 === "number") { return 0; + } else { + return -1; } } - if (!e2) { + if (/* tag */typeof e2 === "number") { return 1; } var c = Caml.int_compare(e1._0, e2._0); @@ -882,14 +887,14 @@ function equal(cmp, m1, m2) { while(true) { var e2 = _e2; var e1 = _e1; - if (!e1) { - if (e2) { - return false; - } else { + if (/* tag */typeof e1 === "number") { + if (/* tag */typeof e2 === "number") { return true; + } else { + return false; } } - if (!e2) { + if (/* tag */typeof e2 === "number") { return false; } if (e1._0 !== e2._0) { @@ -905,10 +910,10 @@ function equal(cmp, m1, m2) { } function cardinal(param) { - if (param) { - return (cardinal(param.l) + 1 | 0) + cardinal(param.r) | 0; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return (cardinal(param.l) + 1 | 0) + cardinal(param.r) | 0; } } @@ -916,7 +921,7 @@ function bindings_aux(_accu, _param) { while(true) { var param = _param; var accu = _accu; - if (!param) { + if (/* tag */typeof param === "number") { return accu; } _param = param.l; diff --git a/jscomp/test/test_int_map_find.js b/jscomp/test/test_int_map_find.js index 1d2001c83a..a708484c3f 100644 --- a/jscomp/test/test_int_map_find.js +++ b/jscomp/test/test_int_map_find.js @@ -4,10 +4,10 @@ var Caml = require("../../lib/js/caml.js"); var List = require("../../lib/js/list.js"); function height(param) { - if (param) { - return param.h; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return param.h; } } @@ -24,26 +24,28 @@ function create(l, x, d, r) { } function bal(l, x, d, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l.r; - var ld = l.d; - var lv = l.v; - var ll = l.l; - if (height(ll) >= height(lr)) { - return create(ll, lv, ld, create(lr, x, d, r)); - } - if (lr) { - return create(create(ll, lv, ld, lr.l), lr.v, lr.d, create(lr.r, x, d, r)); - } + if (/* tag */typeof l === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var lr = l.r; + var ld = l.d; + var lv = l.v; + var ll = l.l; + if (height(ll) >= height(lr)) { + return create(ll, lv, ld, create(lr, x, d, r)); + } + if (/* tag */typeof lr !== "number") { + return create(create(ll, lv, ld, lr.l), lr.v, lr.d, create(lr.r, x, d, r)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -59,23 +61,23 @@ function bal(l, x, d, r) { h: hl >= hr ? hl + 1 | 0 : hr + 1 | 0 }; } - if (r) { - var rr = r.r; - var rd = r.d; - var rv = r.v; - var rl = r.l; - if (height(rr) >= height(rl)) { - return create(create(l, x, d, rl), rv, rd, rr); - } - if (rl) { - return create(create(l, x, d, rl.l), rl.v, rl.d, create(rl.r, rv, rd, rr)); - } + if (/* tag */typeof r === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var rr = r.r; + var rd = r.d; + var rv = r.v; + var rl = r.l; + if (height(rr) >= height(rl)) { + return create(create(l, x, d, rl), rv, rd, rr); + } + if (/* tag */typeof rl !== "number") { + return create(create(l, x, d, rl.l), rl.v, rl.d, create(rl.r, rv, rd, rr)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -84,7 +86,7 @@ function bal(l, x, d, r) { } function add(x, data, m) { - if (!m) { + if (/* tag */typeof m === "number") { return /* Node */{ l: /* Empty */0, v: x, diff --git a/jscomp/test/test_set.js b/jscomp/test/test_set.js index 9848a27c89..d28613f8a6 100644 --- a/jscomp/test/test_set.js +++ b/jscomp/test/test_set.js @@ -5,15 +5,17 @@ var Curry = require("../../lib/js/curry.js"); function Make(Ord) { var height = function (param) { - if (param) { - return param._3; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return param._3; } }; var create = function (l, v, r) { - var hl = l ? l._3 : 0; - var hr = r ? r._3 : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l._3; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r._3; return /* Node */{ _0: l, _1: v, @@ -22,25 +24,27 @@ function Make(Ord) { }; }; var bal = function (l, v, r) { - var hl = l ? l._3 : 0; - var hr = r ? r._3 : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l._3; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r._3; if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l._2; - var lv = l._1; - var ll = l._0; - if (height(ll) >= height(lr)) { - return create(ll, lv, create(lr, v, r)); - } - if (lr) { - return create(create(ll, lv, lr._0), lr._1, create(lr._2, v, r)); - } + if (/* tag */typeof l === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", Error: new Error() }; } + var lr = l._2; + var lv = l._1; + var ll = l._0; + if (height(ll) >= height(lr)) { + return create(ll, lv, create(lr, v, r)); + } + if (/* tag */typeof lr !== "number") { + return create(create(ll, lv, lr._0), lr._1, create(lr._2, v, r)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", @@ -55,22 +59,22 @@ function Make(Ord) { _3: hl >= hr ? hl + 1 | 0 : hr + 1 | 0 }; } - if (r) { - var rr = r._2; - var rv = r._1; - var rl = r._0; - if (height(rr) >= height(rl)) { - return create(create(l, v, rl), rv, rr); - } - if (rl) { - return create(create(l, v, rl._0), rl._1, create(rl._2, rv, rr)); - } + if (/* tag */typeof r === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", Error: new Error() }; } + var rr = r._2; + var rv = r._1; + var rl = r._0; + if (height(rr) >= height(rl)) { + return create(create(l, v, rl), rv, rr); + } + if (/* tag */typeof rl !== "number") { + return create(create(l, v, rl._0), rl._1, create(rl._2, rv, rr)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", @@ -78,7 +82,7 @@ function Make(Ord) { }; }; var add = function (x, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Node */{ _0: /* Empty */0, _1: x, @@ -107,28 +111,28 @@ function Make(Ord) { }; }; var add_min_element = function (v, param) { - if (param) { - return bal(add_min_element(v, param._0), param._1, param._2); - } else { + if (/* tag */typeof param === "number") { return singleton(v); + } else { + return bal(add_min_element(v, param._0), param._1, param._2); } }; var add_max_element = function (v, param) { - if (param) { - return bal(param._0, param._1, add_max_element(v, param._2)); - } else { + if (/* tag */typeof param === "number") { return singleton(v); + } else { + return bal(param._0, param._1, add_max_element(v, param._2)); } }; var join = function (l, v, r) { - if (!l) { + if (/* tag */typeof l === "number") { return add_min_element(v, r); } - if (!r) { + var lh = l._3; + if (/* tag */typeof r === "number") { return add_max_element(v, l); } var rh = r._3; - var lh = l._3; if (lh > (rh + 2 | 0)) { return bal(l._0, l._1, join(l._2, v, r)); } else if (rh > (lh + 2 | 0)) { @@ -140,76 +144,72 @@ function Make(Ord) { var min_elt = function (_param) { while(true) { var param = _param; - if (param) { - var l = param._0; - if (!l) { - return param._1; - } - _param = l; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var l = param._0; + if (/* tag */typeof l === "number") { + return param._1; + } + _param = l; + continue ; }; }; var max_elt = function (_param) { while(true) { var param = _param; - if (param) { - var r = param._2; - if (!r) { - return param._1; - } - _param = r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var r = param._2; + if (/* tag */typeof r === "number") { + return param._1; + } + _param = r; + continue ; }; }; var remove_min_elt = function (param) { - if (param) { - var l = param._0; - if (l) { - return bal(remove_min_elt(l), param._1, param._2); - } else { - return param._2; - } + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Invalid_argument", + _1: "Set.remove_min_elt", + Error: new Error() + }; + } + var l = param._0; + if (/* tag */typeof l === "number") { + return param._2; + } else { + return bal(remove_min_elt(l), param._1, param._2); } - throw { - RE_EXN_ID: "Invalid_argument", - _1: "Set.remove_min_elt", - Error: new Error() - }; }; var merge = function (t1, t2) { - if (t1) { - if (t2) { - return bal(t1, min_elt(t2), remove_min_elt(t2)); - } else { - return t1; - } - } else { + if (/* tag */typeof t1 === "number") { return t2; + } else if (/* tag */typeof t2 === "number") { + return t1; + } else { + return bal(t1, min_elt(t2), remove_min_elt(t2)); } }; var concat = function (t1, t2) { - if (t1) { - if (t2) { - return join(t1, min_elt(t2), remove_min_elt(t2)); - } else { - return t1; - } - } else { + if (/* tag */typeof t1 === "number") { return t2; + } else if (/* tag */typeof t2 === "number") { + return t1; + } else { + return join(t1, min_elt(t2), remove_min_elt(t2)); } }; var split = function (x, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, false, @@ -243,16 +243,16 @@ function Make(Ord) { ]; }; var is_empty = function (param) { - if (param) { - return false; - } else { + if (/* tag */typeof param === "number") { return true; + } else { + return false; } }; var mem = function (x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } var c = Curry._2(Ord.compare, x, param._1); @@ -264,7 +264,7 @@ function Make(Ord) { }; }; var remove = function (x, param) { - if (!param) { + if (/* tag */typeof param === "number") { return /* Empty */0; } var r = param._2; @@ -280,16 +280,16 @@ function Make(Ord) { } }; var union = function (s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return s2; } - if (!s2) { + var h1 = s1._3; + var v1 = s1._1; + if (/* tag */typeof s2 === "number") { return s1; } var h2 = s2._3; var v2 = s2._1; - var h1 = s1._3; - var v1 = s1._1; if (h1 >= h2) { if (h2 === 1) { return add(v2, s1); @@ -304,10 +304,10 @@ function Make(Ord) { return join(union(match$1[0], s2._0), v2, union(match$1[2], s2._2)); }; var inter = function (s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return /* Empty */0; } - if (!s2) { + if (/* tag */typeof s2 === "number") { return /* Empty */0; } var r1 = s1._2; @@ -322,10 +322,10 @@ function Make(Ord) { } }; var diff = function (s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return /* Empty */0; } - if (!s2) { + if (/* tag */typeof s2 === "number") { return s1; } var r1 = s1._2; @@ -343,7 +343,7 @@ function Make(Ord) { while(true) { var e = _e; var s = _s; - if (!s) { + if (/* tag */typeof s === "number") { return e; } _e = /* More */{ @@ -359,14 +359,14 @@ function Make(Ord) { while(true) { var e2 = _e2; var e1 = _e1; - if (!e1) { - if (e2) { - return -1; - } else { + if (/* tag */typeof e1 === "number") { + if (/* tag */typeof e2 === "number") { return 0; + } else { + return -1; } } - if (!e2) { + if (/* tag */typeof e2 === "number") { return 1; } var c = Curry._2(Ord.compare, e1._0, e2._0); @@ -388,17 +388,17 @@ function Make(Ord) { while(true) { var s2 = _s2; var s1 = _s1; - if (!s1) { + if (/* tag */typeof s1 === "number") { return true; } - if (!s2) { + var r1 = s1._2; + var v1 = s1._1; + var l1 = s1._0; + if (/* tag */typeof s2 === "number") { return false; } var r2 = s2._2; var l2 = s2._0; - var r1 = s1._2; - var v1 = s1._1; - var l1 = s1._0; var c = Curry._2(Ord.compare, v1, s2._1); if (c === 0) { if (!subset(l1, l2)) { @@ -435,7 +435,7 @@ function Make(Ord) { var iter = function (f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } iter(f, param._0); @@ -448,7 +448,7 @@ function Make(Ord) { while(true) { var accu = _accu; var s = _s; - if (!s) { + if (/* tag */typeof s === "number") { return accu; } _accu = Curry._2(f, s._1, fold(f, s._0, accu)); @@ -459,7 +459,7 @@ function Make(Ord) { var for_all = function (p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return true; } if (!Curry._1(p, param._1)) { @@ -475,7 +475,7 @@ function Make(Ord) { var exists = function (p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } if (Curry._1(p, param._1)) { @@ -489,7 +489,7 @@ function Make(Ord) { }; }; var filter = function (p, param) { - if (!param) { + if (/* tag */typeof param === "number") { return /* Empty */0; } var v = param._1; @@ -503,7 +503,7 @@ function Make(Ord) { } }; var partition = function (p, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, /* Empty */0 @@ -530,17 +530,17 @@ function Make(Ord) { } }; var cardinal = function (param) { - if (param) { - return (cardinal(param._0) + 1 | 0) + cardinal(param._2) | 0; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return (cardinal(param._0) + 1 | 0) + cardinal(param._2) | 0; } }; var elements_aux = function (_accu, _param) { while(true) { var param = _param; var accu = _accu; - if (!param) { + if (/* tag */typeof param === "number") { return accu; } _param = param._0; @@ -557,19 +557,19 @@ function Make(Ord) { var find = function (x, _param) { while(true) { var param = _param; - if (param) { - var v = param._1; - var c = Curry._2(Ord.compare, x, v); - if (c === 0) { - return v; - } - _param = c < 0 ? param._0 : param._2; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var v = param._1; + var c = Curry._2(Ord.compare, x, v); + if (c === 0) { + return v; + } + _param = c < 0 ? param._0 : param._2; + continue ; }; }; var of_sorted_list = function (l) { diff --git a/jscomp/test/test_string_map.js b/jscomp/test/test_string_map.js index 876da80f5c..6ace2bd92e 100644 --- a/jscomp/test/test_string_map.js +++ b/jscomp/test/test_string_map.js @@ -4,10 +4,10 @@ var Caml = require("../../lib/js/caml.js"); var Curry = require("../../lib/js/curry.js"); function height(param) { - if (param) { - return param.h; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return param.h; } } @@ -24,26 +24,28 @@ function create(l, x, d, r) { } function bal(l, x, d, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l.r; - var ld = l.d; - var lv = l.v; - var ll = l.l; - if (height(ll) >= height(lr)) { - return create(ll, lv, ld, create(lr, x, d, r)); - } - if (lr) { - return create(create(ll, lv, ld, lr.l), lr.v, lr.d, create(lr.r, x, d, r)); - } + if (/* tag */typeof l === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var lr = l.r; + var ld = l.d; + var lv = l.v; + var ll = l.l; + if (height(ll) >= height(lr)) { + return create(ll, lv, ld, create(lr, x, d, r)); + } + if (/* tag */typeof lr !== "number") { + return create(create(ll, lv, ld, lr.l), lr.v, lr.d, create(lr.r, x, d, r)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -59,23 +61,23 @@ function bal(l, x, d, r) { h: hl >= hr ? hl + 1 | 0 : hr + 1 | 0 }; } - if (r) { - var rr = r.r; - var rd = r.d; - var rv = r.v; - var rl = r.l; - if (height(rr) >= height(rl)) { - return create(create(l, x, d, rl), rv, rd, rr); - } - if (rl) { - return create(create(l, x, d, rl.l), rl.v, rl.d, create(rl.r, rv, rd, rr)); - } + if (/* tag */typeof r === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var rr = r.r; + var rd = r.d; + var rv = r.v; + var rl = r.l; + if (height(rr) >= height(rl)) { + return create(create(l, x, d, rl), rv, rd, rr); + } + if (/* tag */typeof rl !== "number") { + return create(create(l, x, d, rl.l), rl.v, rl.d, create(rl.r, rv, rd, rr)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -84,7 +86,7 @@ function bal(l, x, d, r) { } function add(x, data, m) { - if (!m) { + if (/* tag */typeof m === "number") { return /* Node */{ l: /* Empty */0, v: x, @@ -130,18 +132,18 @@ function add(x, data, m) { function find(x, _param) { while(true) { var param = _param; - if (param) { - var c = Caml.string_compare(x, param.v); - if (c === 0) { - return param.d; - } - _param = c < 0 ? param.l : param.r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var c = Caml.string_compare(x, param.v); + if (c === 0) { + return param.d; + } + _param = c < 0 ? param.l : param.r; + continue ; }; } diff --git a/jscomp/test/test_switch.js b/jscomp/test/test_switch.js index 25a28db097..c33cf9bee2 100644 --- a/jscomp/test/test_switch.js +++ b/jscomp/test/test_switch.js @@ -3,7 +3,7 @@ var Curry = require("../../lib/js/curry.js"); function f(param) { - if (typeof param === "number") { + if (/* tag */typeof param === "number") { if (param === /* G */0) { return 4; } else { diff --git a/jscomp/test/test_trywith.js b/jscomp/test/test_trywith.js index b9b90b53c0..8829f3b6d6 100644 --- a/jscomp/test/test_trywith.js +++ b/jscomp/test/test_trywith.js @@ -123,7 +123,7 @@ function u(param) { } function f(x) { - if (typeof x === "number") { + if (/* tag */typeof x === "number") { return 2; } if (x.TAG === /* D */0) { diff --git a/jscomp/test/ticker.js b/jscomp/test/ticker.js index af6e38bc3d..d03aa30822 100644 --- a/jscomp/test/ticker.js +++ b/jscomp/test/ticker.js @@ -67,11 +67,11 @@ var Util = { }; function string_of_rank(i) { - if (typeof i === "number") { - if (i !== 0) { - return "Visited"; - } else { + if (/* tag */typeof i === "number") { + if (i === /* Uninitialized */0) { return "Uninitialized"; + } else { + return "Visited"; } } else { return "Ranked(" + i._0 + ")"; @@ -86,19 +86,19 @@ function find_ticker_by_name(all_tickers, ticker) { function print_all_composite(all_tickers) { List.iter((function (param) { - if (param.type_) { - console.log(param.ticker_name); + var tmp = param.type_; + if (/* tag */typeof tmp === "number") { return ; } - + console.log(param.ticker_name); }), all_tickers); } function height(param) { - if (param) { - return param.h; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return param.h; } } @@ -125,26 +125,28 @@ function singleton(x, d) { } function bal(l, x, d, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l.r; - var ld = l.d; - var lv = l.v; - var ll = l.l; - if (height(ll) >= height(lr)) { - return create(ll, lv, ld, create(lr, x, d, r)); - } - if (lr) { - return create(create(ll, lv, ld, lr.l), lr.v, lr.d, create(lr.r, x, d, r)); - } + if (/* tag */typeof l === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var lr = l.r; + var ld = l.d; + var lv = l.v; + var ll = l.l; + if (height(ll) >= height(lr)) { + return create(ll, lv, ld, create(lr, x, d, r)); + } + if (/* tag */typeof lr !== "number") { + return create(create(ll, lv, ld, lr.l), lr.v, lr.d, create(lr.r, x, d, r)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -160,23 +162,23 @@ function bal(l, x, d, r) { h: hl >= hr ? hl + 1 | 0 : hr + 1 | 0 }; } - if (r) { - var rr = r.r; - var rd = r.d; - var rv = r.v; - var rl = r.l; - if (height(rr) >= height(rl)) { - return create(create(l, x, d, rl), rv, rd, rr); - } - if (rl) { - return create(create(l, x, d, rl.l), rl.v, rl.d, create(rl.r, rv, rd, rr)); - } + if (/* tag */typeof r === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var rr = r.r; + var rd = r.d; + var rv = r.v; + var rl = r.l; + if (height(rr) >= height(rl)) { + return create(create(l, x, d, rl), rv, rd, rr); + } + if (/* tag */typeof rl !== "number") { + return create(create(l, x, d, rl.l), rl.v, rl.d, create(rl.r, rv, rd, rr)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -185,15 +187,15 @@ function bal(l, x, d, r) { } function is_empty(param) { - if (param) { - return false; - } else { + if (/* tag */typeof param === "number") { return true; + } else { + return false; } } function add(x, data, m) { - if (!m) { + if (/* tag */typeof m === "number") { return /* Node */{ l: /* Empty */0, v: x, @@ -239,65 +241,65 @@ function add(x, data, m) { function find(x, _param) { while(true) { var param = _param; - if (param) { - var c = Caml_obj.compare(x, param.v); - if (c === 0) { - return param.d; - } - _param = c < 0 ? param.l : param.r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var c = Caml_obj.compare(x, param.v); + if (c === 0) { + return param.d; + } + _param = c < 0 ? param.l : param.r; + continue ; }; } function find_first(f, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - if (Curry._1(f, v)) { - var _v0 = v; - var _d0 = param.d; - var _param$1 = param.l; - while(true) { - var param$1 = _param$1; - var d0 = _d0; - var v0 = _v0; - if (!param$1) { - return [ - v0, - d0 - ]; - } - var v$1 = param$1.v; - if (Curry._1(f, v$1)) { - _param$1 = param$1.l; - _d0 = param$1.d; - _v0 = v$1; - continue ; - } - _param$1 = param$1.r; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + var v = param.v; + if (Curry._1(f, v)) { + var _v0 = v; + var _d0 = param.d; + var _param$1 = param.l; + while(true) { + var param$1 = _param$1; + var d0 = _d0; + var v0 = _v0; + if (/* tag */typeof param$1 === "number") { + return [ + v0, + d0 + ]; + } + var v$1 = param$1.v; + if (Curry._1(f, v$1)) { + _param$1 = param$1.l; + _d0 = param$1.d; + _v0 = v$1; continue ; - }; - } - _param = param.r; - continue ; + } + _param$1 = param$1.r; + continue ; + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + _param = param.r; + continue ; }; } function find_first_opt(f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -309,7 +311,7 @@ function find_first_opt(f, _param) { var param$1 = _param$1; var d0 = _d0; var v0 = _v0; - if (!param$1) { + if (/* tag */typeof param$1 === "number") { return [ v0, d0 @@ -334,47 +336,47 @@ function find_first_opt(f, _param) { function find_last(f, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - if (Curry._1(f, v)) { - var _v0 = v; - var _d0 = param.d; - var _param$1 = param.r; - while(true) { - var param$1 = _param$1; - var d0 = _d0; - var v0 = _v0; - if (!param$1) { - return [ - v0, - d0 - ]; - } - var v$1 = param$1.v; - if (Curry._1(f, v$1)) { - _param$1 = param$1.r; - _d0 = param$1.d; - _v0 = v$1; - continue ; - } - _param$1 = param$1.l; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + var v = param.v; + if (Curry._1(f, v)) { + var _v0 = v; + var _d0 = param.d; + var _param$1 = param.r; + while(true) { + var param$1 = _param$1; + var d0 = _d0; + var v0 = _v0; + if (/* tag */typeof param$1 === "number") { + return [ + v0, + d0 + ]; + } + var v$1 = param$1.v; + if (Curry._1(f, v$1)) { + _param$1 = param$1.r; + _d0 = param$1.d; + _v0 = v$1; continue ; - }; - } - _param = param.l; - continue ; + } + _param$1 = param$1.l; + continue ; + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + _param = param.l; + continue ; }; } function find_last_opt(f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -386,7 +388,7 @@ function find_last_opt(f, _param) { var param$1 = _param$1; var d0 = _d0; var v0 = _v0; - if (!param$1) { + if (/* tag */typeof param$1 === "number") { return [ v0, d0 @@ -411,7 +413,7 @@ function find_last_opt(f, _param) { function find_opt(x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var c = Caml_obj.compare(x, param.v); @@ -426,7 +428,7 @@ function find_opt(x, _param) { function mem(x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } var c = Caml_obj.compare(x, param.v); @@ -441,32 +443,32 @@ function mem(x, _param) { function min_binding(_param) { while(true) { var param = _param; - if (param) { - var l = param.l; - if (!l) { - return [ - param.v, - param.d - ]; - } - _param = l; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var l = param.l; + if (/* tag */typeof l === "number") { + return [ + param.v, + param.d + ]; + } + _param = l; + continue ; }; } function min_binding_opt(_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var l = param.l; - if (!l) { + if (/* tag */typeof l === "number") { return [ param.v, param.d @@ -480,32 +482,32 @@ function min_binding_opt(_param) { function max_binding(_param) { while(true) { var param = _param; - if (param) { - var r = param.r; - if (!r) { - return [ - param.v, - param.d - ]; - } - _param = r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var r = param.r; + if (/* tag */typeof r === "number") { + return [ + param.v, + param.d + ]; + } + _param = r; + continue ; }; } function max_binding_opt(_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var r = param.r; - if (!r) { + if (/* tag */typeof r === "number") { return [ param.v, param.d @@ -517,26 +519,26 @@ function max_binding_opt(_param) { } function remove_min_binding(param) { - if (param) { - var l = param.l; - if (l) { - return bal(remove_min_binding(l), param.v, param.d, param.r); - } else { - return param.r; - } + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Invalid_argument", + _1: "Map.remove_min_elt", + Error: new Error() + }; + } + var l = param.l; + if (/* tag */typeof l === "number") { + return param.r; + } else { + return bal(remove_min_binding(l), param.v, param.d, param.r); } - throw { - RE_EXN_ID: "Invalid_argument", - _1: "Map.remove_min_elt", - Error: new Error() - }; } function merge(t1, t2) { - if (!t1) { + if (/* tag */typeof t1 === "number") { return t2; } - if (!t2) { + if (/* tag */typeof t2 === "number") { return t1; } var match = min_binding(t2); @@ -544,7 +546,7 @@ function merge(t1, t2) { } function remove(x, m) { - if (!m) { + if (/* tag */typeof m === "number") { return /* Empty */0; } var r = m.r; @@ -572,63 +574,63 @@ function remove(x, m) { } function update(x, f, m) { - if (m) { - var r = m.r; - var d = m.d; - var v = m.v; - var l = m.l; - var c = Caml_obj.compare(x, v); - if (c === 0) { - var data = Curry._1(f, Caml_option.some(d)); - if (data === undefined) { - return merge(l, r); - } - var data$1 = Caml_option.valFromOption(data); - if (d === data$1) { - return m; - } else { - return /* Node */{ - l: l, - v: x, - d: data$1, - r: r, - h: m.h - }; - } + if (/* tag */typeof m === "number") { + var data = Curry._1(f, undefined); + if (data !== undefined) { + return /* Node */{ + l: /* Empty */0, + v: x, + d: Caml_option.valFromOption(data), + r: /* Empty */0, + h: 1 + }; + } else { + return /* Empty */0; } - if (c < 0) { - var ll = update(x, f, l); - if (l === ll) { - return m; - } else { - return bal(ll, v, d, r); - } + } + var r = m.r; + var d = m.d; + var v = m.v; + var l = m.l; + var c = Caml_obj.compare(x, v); + if (c === 0) { + var data$1 = Curry._1(f, Caml_option.some(d)); + if (data$1 === undefined) { + return merge(l, r); } - var rr = update(x, f, r); - if (r === rr) { + var data$2 = Caml_option.valFromOption(data$1); + if (d === data$2) { return m; } else { - return bal(l, v, d, rr); + return /* Node */{ + l: l, + v: x, + d: data$2, + r: r, + h: m.h + }; } } - var data$2 = Curry._1(f, undefined); - if (data$2 !== undefined) { - return /* Node */{ - l: /* Empty */0, - v: x, - d: Caml_option.valFromOption(data$2), - r: /* Empty */0, - h: 1 - }; + if (c < 0) { + var ll = update(x, f, l); + if (l === ll) { + return m; + } else { + return bal(ll, v, d, r); + } + } + var rr = update(x, f, r); + if (r === rr) { + return m; } else { - return /* Empty */0; + return bal(l, v, d, rr); } } function iter(f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } iter(f, param.l); @@ -639,7 +641,7 @@ function iter(f, _param) { } function map(f, param) { - if (!param) { + if (/* tag */typeof param === "number") { return /* Empty */0; } var l$p = map(f, param.l); @@ -655,7 +657,7 @@ function map(f, param) { } function mapi(f, param) { - if (!param) { + if (/* tag */typeof param === "number") { return /* Empty */0; } var v = param.v; @@ -675,7 +677,7 @@ function fold(f, _m, _accu) { while(true) { var accu = _accu; var m = _m; - if (!m) { + if (/* tag */typeof m === "number") { return accu; } _accu = Curry._3(f, m.v, m.d, fold(f, m.l, accu)); @@ -687,7 +689,7 @@ function fold(f, _m, _accu) { function for_all(p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return true; } if (!Curry._2(p, param.v, param.d)) { @@ -704,7 +706,7 @@ function for_all(p, _param) { function exists(p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } if (Curry._2(p, param.v, param.d)) { @@ -719,30 +721,30 @@ function exists(p, _param) { } function add_min_binding(k, x, param) { - if (param) { - return bal(add_min_binding(k, x, param.l), param.v, param.d, param.r); - } else { + if (/* tag */typeof param === "number") { return singleton(k, x); + } else { + return bal(add_min_binding(k, x, param.l), param.v, param.d, param.r); } } function add_max_binding(k, x, param) { - if (param) { - return bal(param.l, param.v, param.d, add_max_binding(k, x, param.r)); - } else { + if (/* tag */typeof param === "number") { return singleton(k, x); + } else { + return bal(param.l, param.v, param.d, add_max_binding(k, x, param.r)); } } function join(l, v, d, r) { - if (!l) { + if (/* tag */typeof l === "number") { return add_min_binding(v, d, r); } - if (!r) { + var lh = l.h; + if (/* tag */typeof r === "number") { return add_max_binding(v, d, l); } var rh = r.h; - var lh = l.h; if (lh > (rh + 2 | 0)) { return bal(l.l, l.v, l.d, join(l.r, v, d, r)); } else if (rh > (lh + 2 | 0)) { @@ -753,10 +755,10 @@ function join(l, v, d, r) { } function concat(t1, t2) { - if (!t1) { + if (/* tag */typeof t1 === "number") { return t2; } - if (!t2) { + if (/* tag */typeof t2 === "number") { return t1; } var match = min_binding(t2); @@ -772,7 +774,7 @@ function concat_or_join(t1, v, d, t2) { } function split$1(x, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, undefined, @@ -808,43 +810,46 @@ function split$1(x, param) { } function merge$1(f, s1, s2) { - if (s1) { + if (/* tag */typeof s1 === "number") { + if (/* tag */typeof s2 === "number") { + return /* Empty */0; + } + + } else { var v1 = s1.v; if (s1.h >= height(s2)) { var match = split$1(v1, s2); return concat_or_join(merge$1(f, s1.l, match[0]), v1, Curry._3(f, v1, Caml_option.some(s1.d), match[1]), merge$1(f, s1.r, match[2])); } - } else if (!s2) { - return /* Empty */0; } - if (s2) { - var v2 = s2.v; - var match$1 = split$1(v2, s1); - return concat_or_join(merge$1(f, match$1[0], s2.l), v2, Curry._3(f, v2, match$1[1], Caml_option.some(s2.d)), merge$1(f, match$1[2], s2.r)); + if (/* tag */typeof s2 === "number") { + throw { + RE_EXN_ID: "Assert_failure", + _1: [ + "map.ml", + 393, + 10 + ], + Error: new Error() + }; } - throw { - RE_EXN_ID: "Assert_failure", - _1: [ - "map.ml", - 393, - 10 - ], - Error: new Error() - }; + var v2 = s2.v; + var match$1 = split$1(v2, s1); + return concat_or_join(merge$1(f, match$1[0], s2.l), v2, Curry._3(f, v2, match$1[1], Caml_option.some(s2.d)), merge$1(f, match$1[2], s2.r)); } function union(f, s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return s2; } - if (!s2) { + var d1 = s1.d; + var v1 = s1.v; + if (/* tag */typeof s2 === "number") { return s1; } var d2 = s2.d; var v2 = s2.v; - var d1 = s1.d; - var v1 = s1.v; if (s1.h >= s2.h) { var match = split$1(v1, s2); var d2$1 = match[1]; @@ -868,7 +873,7 @@ function union(f, s1, s2) { } function filter(p, m) { - if (!m) { + if (/* tag */typeof m === "number") { return /* Empty */0; } var r = m.r; @@ -890,7 +895,7 @@ function filter(p, m) { } function partition(p, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, /* Empty */0 @@ -922,7 +927,7 @@ function cons_enum(_m, _e) { while(true) { var e = _e; var m = _m; - if (!m) { + if (/* tag */typeof m === "number") { return e; } _e = /* More */{ @@ -942,14 +947,14 @@ function compare(cmp, m1, m2) { while(true) { var e2 = _e2; var e1 = _e1; - if (!e1) { - if (e2) { - return -1; - } else { + if (/* tag */typeof e1 === "number") { + if (/* tag */typeof e2 === "number") { return 0; + } else { + return -1; } } - if (!e2) { + if (/* tag */typeof e2 === "number") { return 1; } var c = Caml_obj.compare(e1._0, e2._0); @@ -972,14 +977,14 @@ function equal(cmp, m1, m2) { while(true) { var e2 = _e2; var e1 = _e1; - if (!e1) { - if (e2) { - return false; - } else { + if (/* tag */typeof e1 === "number") { + if (/* tag */typeof e2 === "number") { return true; + } else { + return false; } } - if (!e2) { + if (/* tag */typeof e2 === "number") { return false; } if (!Caml_obj.equal(e1._0, e2._0)) { @@ -995,10 +1000,10 @@ function equal(cmp, m1, m2) { } function cardinal(param) { - if (param) { - return (cardinal(param.l) + 1 | 0) + cardinal(param.r) | 0; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return (cardinal(param.l) + 1 | 0) + cardinal(param.r) | 0; } } @@ -1006,7 +1011,7 @@ function bindings_aux(_accu, _param) { while(true) { var param = _param; var accu = _accu; - if (!param) { + if (/* tag */typeof param === "number") { return accu; } _param = param.l; @@ -1066,22 +1071,25 @@ function compute_update_sequences(all_tickers) { List.fold_left((function (counter, ticker) { var loop = function (counter, ticker) { var rank = ticker.rank; - if (rank !== 0) { + if (/* tag */typeof rank !== "number") { + return counter; + } + if (rank !== /* Uninitialized */0) { return counter; } ticker.rank = /* Visited */1; var match = ticker.type_; - if (match) { - var match$1 = match._0; - var counter$1 = loop(counter, match$1.lhs); - var counter$2 = loop(counter$1, match$1.rhs); - var counter$3 = counter$2 + 1 | 0; + if (/* tag */typeof match === "number") { + var counter$1 = counter + 1 | 0; ticker.rank = /* Ranked */{ - _0: counter$3 + _0: counter$1 }; - return counter$3; + return counter$1; } - var counter$4 = counter + 1 | 0; + var match$1 = match._0; + var counter$2 = loop(counter, match$1.lhs); + var counter$3 = loop(counter$2, match$1.rhs); + var counter$4 = counter$3 + 1 | 0; ticker.rank = /* Ranked */{ _0: counter$4 }; @@ -1090,7 +1098,8 @@ function compute_update_sequences(all_tickers) { return loop(counter, ticker); }), 0, all_tickers); var map = List.fold_left((function (map, ticker) { - if (!ticker.type_) { + var tmp = ticker.type_; + if (/* tag */typeof tmp === "number") { return add(ticker.ticker_name, { hd: ticker, tl: /* [] */0 @@ -1103,22 +1112,22 @@ function compute_update_sequences(all_tickers) { var up = _up; var type_ = ticker.type_; var ticker_name = ticker.ticker_name; - if (type_) { - var match = type_._0; - var map$1 = loop({ - hd: ticker, - tl: up - }, map, match.lhs); - _ticker = match.rhs; - _map = map$1; - _up = { - hd: ticker, - tl: up - }; - continue ; + if (/* tag */typeof type_ === "number") { + var l = find(ticker_name, map); + return add(ticker_name, Pervasives.$at(up, l), map); } - var l = find(ticker_name, map); - return add(ticker_name, Pervasives.$at(up, l), map); + var match = type_._0; + var map$1 = loop({ + hd: ticker, + tl: up + }, map, match.lhs); + _ticker = match.rhs; + _map = map$1; + _up = { + hd: ticker, + tl: up + }; + continue ; }; }; return loop(/* [] */0, map, ticker); @@ -1126,22 +1135,37 @@ function compute_update_sequences(all_tickers) { return fold((function (k, l, map) { var l$1 = List.sort_uniq((function (lhs, rhs) { var x = lhs.rank; - if (typeof x === "number") { + if (/* tag */typeof x === "number") { + if (x === /* Uninitialized */0) { + throw { + RE_EXN_ID: "Failure", + _1: "All nodes should be ranked", + Error: new Error() + }; + } throw { RE_EXN_ID: "Failure", _1: "All nodes should be ranked", Error: new Error() }; - } - var y = rhs.rank; - if (typeof y === "number") { + } else { + var y = rhs.rank; + if (/* tag */typeof y !== "number") { + return Caml.int_compare(x._0, y._0); + } + if (y === /* Uninitialized */0) { + throw { + RE_EXN_ID: "Failure", + _1: "All nodes should be ranked", + Error: new Error() + }; + } throw { RE_EXN_ID: "Failure", _1: "All nodes should be ranked", Error: new Error() }; } - return Caml.int_compare(x._0, y._0); }), l); return add(k, l$1, map); }), map, map); @@ -1151,25 +1175,24 @@ function process_quote(ticker_map, new_ticker, new_value) { var update_sequence = find(new_ticker, ticker_map); List.iter((function (ticker) { var match = ticker.type_; - if (match) { - var match$1 = match._0; - var match$2 = match$1.lhs.value; - var match$3 = match$1.rhs.value; - var value = match$2 !== undefined && match$3 !== undefined ? ( - match$1.op ? match$2 - match$3 : match$2 + match$3 - ) : undefined; - ticker.value = value; - return ; - } - if (ticker.ticker_name === new_ticker) { - ticker.value = new_value; - return ; + if (/* tag */typeof match === "number") { + if (ticker.ticker_name === new_ticker) { + ticker.value = new_value; + return ; + } + throw { + RE_EXN_ID: "Failure", + _1: "Only single Market ticker should be udpated upon a new quote", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Failure", - _1: "Only single Market ticker should be udpated upon a new quote", - Error: new Error() - }; + var match$1 = match._0; + var match$2 = match$1.lhs.value; + var match$3 = match$1.rhs.value; + var value = match$2 !== undefined && match$3 !== undefined ? ( + match$1.op ? match$2 - match$3 : match$2 + match$3 + ) : undefined; + ticker.value = value; }), update_sequence); } diff --git a/jscomp/test/topsort_test.js b/jscomp/test/topsort_test.js index d50dab8c0f..20c1f6340a 100644 --- a/jscomp/test/topsort_test.js +++ b/jscomp/test/topsort_test.js @@ -451,16 +451,18 @@ if (!Caml_obj.equal(unsafe_topsort(grwork), { } function height(param) { - if (param) { - return param.h; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return param.h; } } function create(l, v, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; return /* Node */{ l: l, v: v, @@ -470,25 +472,27 @@ function create(l, v, r) { } function bal(l, v, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l.r; - var lv = l.v; - var ll = l.l; - if (height(ll) >= height(lr)) { - return create(ll, lv, create(lr, v, r)); - } - if (lr) { - return create(create(ll, lv, lr.l), lr.v, create(lr.r, v, r)); - } + if (/* tag */typeof l === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", Error: new Error() }; } + var lr = l.r; + var lv = l.v; + var ll = l.l; + if (height(ll) >= height(lr)) { + return create(ll, lv, create(lr, v, r)); + } + if (/* tag */typeof lr !== "number") { + return create(create(ll, lv, lr.l), lr.v, create(lr.r, v, r)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", @@ -503,22 +507,22 @@ function bal(l, v, r) { h: hl >= hr ? hl + 1 | 0 : hr + 1 | 0 }; } - if (r) { - var rr = r.r; - var rv = r.v; - var rl = r.l; - if (height(rr) >= height(rl)) { - return create(create(l, v, rl), rv, rr); - } - if (rl) { - return create(create(l, v, rl.l), rl.v, create(rl.r, rv, rr)); - } + if (/* tag */typeof r === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", Error: new Error() }; } + var rr = r.r; + var rv = r.v; + var rl = r.l; + if (height(rr) >= height(rl)) { + return create(create(l, v, rl), rv, rr); + } + if (/* tag */typeof rl !== "number") { + return create(create(l, v, rl.l), rl.v, create(rl.r, rv, rr)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", @@ -527,7 +531,7 @@ function bal(l, v, r) { } function add(x, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Node */{ l: /* Empty */0, v: x, @@ -568,30 +572,30 @@ function singleton(x) { } function add_min_element(x, param) { - if (param) { - return bal(add_min_element(x, param.l), param.v, param.r); - } else { + if (/* tag */typeof param === "number") { return singleton(x); + } else { + return bal(add_min_element(x, param.l), param.v, param.r); } } function add_max_element(x, param) { - if (param) { - return bal(param.l, param.v, add_max_element(x, param.r)); - } else { + if (/* tag */typeof param === "number") { return singleton(x); + } else { + return bal(param.l, param.v, add_max_element(x, param.r)); } } function join(l, v, r) { - if (!l) { + if (/* tag */typeof l === "number") { return add_min_element(v, r); } - if (!r) { + var lh = l.h; + if (/* tag */typeof r === "number") { return add_max_element(v, l); } var rh = r.h; - var lh = l.h; if (lh > (rh + 2 | 0)) { return bal(l.l, l.v, join(l.r, v, r)); } else if (rh > (lh + 2 | 0)) { @@ -604,29 +608,29 @@ function join(l, v, r) { function min_elt(_param) { while(true) { var param = _param; - if (param) { - var l = param.l; - if (!l) { - return param.v; - } - _param = l; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var l = param.l; + if (/* tag */typeof l === "number") { + return param.v; + } + _param = l; + continue ; }; } function min_elt_opt(_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var l = param.l; - if (!l) { + if (/* tag */typeof l === "number") { return Caml_option.some(param.v); } _param = l; @@ -637,29 +641,29 @@ function min_elt_opt(_param) { function max_elt(_param) { while(true) { var param = _param; - if (param) { - var r = param.r; - if (!r) { - return param.v; - } - _param = r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var r = param.r; + if (/* tag */typeof r === "number") { + return param.v; + } + _param = r; + continue ; }; } function max_elt_opt(_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var r = param.r; - if (!r) { + if (/* tag */typeof r === "number") { return Caml_option.some(param.v); } _param = r; @@ -668,35 +672,33 @@ function max_elt_opt(_param) { } function remove_min_elt(param) { - if (param) { - var l = param.l; - if (l) { - return bal(remove_min_elt(l), param.v, param.r); - } else { - return param.r; - } + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Invalid_argument", + _1: "Set.remove_min_elt", + Error: new Error() + }; + } + var l = param.l; + if (/* tag */typeof l === "number") { + return param.r; + } else { + return bal(remove_min_elt(l), param.v, param.r); } - throw { - RE_EXN_ID: "Invalid_argument", - _1: "Set.remove_min_elt", - Error: new Error() - }; } function concat(t1, t2) { - if (t1) { - if (t2) { - return join(t1, min_elt(t2), remove_min_elt(t2)); - } else { - return t1; - } - } else { + if (/* tag */typeof t1 === "number") { return t2; + } else if (/* tag */typeof t2 === "number") { + return t1; + } else { + return join(t1, min_elt(t2), remove_min_elt(t2)); } } function split(x, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, false, @@ -731,17 +733,17 @@ function split(x, param) { } function is_empty(param) { - if (param) { - return false; - } else { + if (/* tag */typeof param === "number") { return true; + } else { + return false; } } function mem(x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } var c = Caml.string_compare(x, param.v); @@ -754,7 +756,7 @@ function mem(x, _param) { } function remove(x, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Empty */0; } var r = t.r; @@ -762,14 +764,12 @@ function remove(x, t) { var l = t.l; var c = Caml.string_compare(x, v); if (c === 0) { - if (l) { - if (r) { - return bal(l, min_elt(r), remove_min_elt(r)); - } else { - return l; - } - } else { + if (/* tag */typeof l === "number") { return r; + } else if (/* tag */typeof r === "number") { + return l; + } else { + return bal(l, min_elt(r), remove_min_elt(r)); } } if (c < 0) { @@ -789,16 +789,16 @@ function remove(x, t) { } function union(s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return s2; } - if (!s2) { + var h1 = s1.h; + var v1 = s1.v; + if (/* tag */typeof s2 === "number") { return s1; } var h2 = s2.h; var v2 = s2.v; - var h1 = s1.h; - var v1 = s1.v; if (h1 >= h2) { if (h2 === 1) { return add(v2, s1); @@ -814,10 +814,10 @@ function union(s1, s2) { } function inter(s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return /* Empty */0; } - if (!s2) { + if (/* tag */typeof s2 === "number") { return /* Empty */0; } var r1 = s1.r; @@ -833,10 +833,10 @@ function inter(s1, s2) { } function diff(s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return /* Empty */0; } - if (!s2) { + if (/* tag */typeof s2 === "number") { return s1; } var r1 = s1.r; @@ -855,7 +855,7 @@ function cons_enum(_s, _e) { while(true) { var e = _e; var s = _s; - if (!s) { + if (/* tag */typeof s === "number") { return e; } _e = /* More */{ @@ -874,14 +874,14 @@ function compare(s1, s2) { while(true) { var e2 = _e2; var e1 = _e1; - if (!e1) { - if (e2) { - return -1; - } else { + if (/* tag */typeof e1 === "number") { + if (/* tag */typeof e2 === "number") { return 0; + } else { + return -1; } } - if (!e2) { + if (/* tag */typeof e2 === "number") { return 1; } var c = Caml.string_compare(e1._0, e2._0); @@ -902,17 +902,17 @@ function subset(_s1, _s2) { while(true) { var s2 = _s2; var s1 = _s1; - if (!s1) { + if (/* tag */typeof s1 === "number") { return true; } - if (!s2) { + var r1 = s1.r; + var v1 = s1.v; + var l1 = s1.l; + if (/* tag */typeof s2 === "number") { return false; } var r2 = s2.r; var l2 = s2.l; - var r1 = s1.r; - var v1 = s1.v; - var l1 = s1.l; var c = Caml.string_compare(v1, s2.v); if (c === 0) { if (!subset(l1, l2)) { @@ -950,7 +950,7 @@ function subset(_s1, _s2) { function iter(f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } iter(f, param.l); @@ -964,7 +964,7 @@ function fold(f, _s, _accu) { while(true) { var accu = _accu; var s = _s; - if (!s) { + if (/* tag */typeof s === "number") { return accu; } _accu = Curry._2(f, s.v, fold(f, s.l, accu)); @@ -976,7 +976,7 @@ function fold(f, _s, _accu) { function for_all(p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return true; } if (!Curry._1(p, param.v)) { @@ -993,7 +993,7 @@ function for_all(p, _param) { function exists(p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } if (Curry._1(p, param.v)) { @@ -1008,7 +1008,7 @@ function exists(p, _param) { } function filter(p, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Empty */0; } var r = t.r; @@ -1029,7 +1029,7 @@ function filter(p, t) { } function partition(p, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, /* Empty */0 @@ -1057,10 +1057,10 @@ function partition(p, param) { } function cardinal(param) { - if (param) { - return (cardinal(param.l) + 1 | 0) + cardinal(param.r) | 0; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return (cardinal(param.l) + 1 | 0) + cardinal(param.r) | 0; } } @@ -1068,7 +1068,7 @@ function elements_aux(_accu, _param) { while(true) { var param = _param; var accu = _accu; - if (!param) { + if (/* tag */typeof param === "number") { return accu; } _param = param.l; @@ -1087,60 +1087,60 @@ function elements(s) { function find(x, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - var c = Caml.string_compare(x, v); - if (c === 0) { - return v; - } - _param = c < 0 ? param.l : param.r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var v = param.v; + var c = Caml.string_compare(x, v); + if (c === 0) { + return v; + } + _param = c < 0 ? param.l : param.r; + continue ; }; } function find_first(f, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - if (Curry._1(f, v)) { - var _v0 = v; - var _param$1 = param.l; - while(true) { - var param$1 = _param$1; - var v0 = _v0; - if (!param$1) { - return v0; - } - var v$1 = param$1.v; - if (Curry._1(f, v$1)) { - _param$1 = param$1.l; - _v0 = v$1; - continue ; - } - _param$1 = param$1.r; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + var v = param.v; + if (Curry._1(f, v)) { + var _v0 = v; + var _param$1 = param.l; + while(true) { + var param$1 = _param$1; + var v0 = _v0; + if (/* tag */typeof param$1 === "number") { + return v0; + } + var v$1 = param$1.v; + if (Curry._1(f, v$1)) { + _param$1 = param$1.l; + _v0 = v$1; continue ; - }; - } - _param = param.r; - continue ; + } + _param$1 = param$1.r; + continue ; + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + _param = param.r; + continue ; }; } function find_first_opt(f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -1150,7 +1150,7 @@ function find_first_opt(f, _param) { while(true) { var param$1 = _param$1; var v0 = _v0; - if (!param$1) { + if (/* tag */typeof param$1 === "number") { return Caml_option.some(v0); } var v$1 = param$1.v; @@ -1171,41 +1171,41 @@ function find_first_opt(f, _param) { function find_last(f, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - if (Curry._1(f, v)) { - var _v0 = v; - var _param$1 = param.r; - while(true) { - var param$1 = _param$1; - var v0 = _v0; - if (!param$1) { - return v0; - } - var v$1 = param$1.v; - if (Curry._1(f, v$1)) { - _param$1 = param$1.r; - _v0 = v$1; - continue ; - } - _param$1 = param$1.l; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + var v = param.v; + if (Curry._1(f, v)) { + var _v0 = v; + var _param$1 = param.r; + while(true) { + var param$1 = _param$1; + var v0 = _v0; + if (/* tag */typeof param$1 === "number") { + return v0; + } + var v$1 = param$1.v; + if (Curry._1(f, v$1)) { + _param$1 = param$1.r; + _v0 = v$1; continue ; - }; - } - _param = param.l; - continue ; + } + _param$1 = param$1.l; + continue ; + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + _param = param.l; + continue ; }; } function find_last_opt(f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -1215,7 +1215,7 @@ function find_last_opt(f, _param) { while(true) { var param$1 = _param$1; var v0 = _v0; - if (!param$1) { + if (/* tag */typeof param$1 === "number") { return Caml_option.some(v0); } var v$1 = param$1.v; @@ -1236,7 +1236,7 @@ function find_last_opt(f, _param) { function find_opt(x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -1250,7 +1250,7 @@ function find_opt(x, _param) { } function map(f, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Empty */0; } var r = t.r; diff --git a/jscomp/test/typeof_test.js b/jscomp/test/typeof_test.js index 50b81ceb30..2d4b5c38f2 100644 --- a/jscomp/test/typeof_test.js +++ b/jscomp/test/typeof_test.js @@ -5,7 +5,7 @@ var Js_types = require("../../lib/js/js_types.js"); function string_or_number(x) { var ty = Js_types.classify(x); - if (typeof ty === "number") { + if (/* tag */typeof ty === "number") { switch (ty) { case /* JSFalse */0 : case /* JSTrue */1 : diff --git a/jscomp/test/utf8_decode_test.js b/jscomp/test/utf8_decode_test.js index 47ea4126e3..7ffe3a6440 100644 --- a/jscomp/test/utf8_decode_test.js +++ b/jscomp/test/utf8_decode_test.js @@ -60,7 +60,7 @@ function utf8_decode(strm) { } Stream.junk(strm); var c = classify(chr); - if (typeof c === "number") { + if (/* tag */typeof c === "number") { throw { RE_EXN_ID: Stream.$$Error, _1: "Invalid byte", @@ -85,7 +85,7 @@ function utf8_decode(strm) { return c; } var cc = classify(Stream.next(strm)); - if (typeof cc === "number") { + if (/* tag */typeof cc === "number") { throw { RE_EXN_ID: Stream.$$Error, _1: "Continuation byte expected", @@ -129,7 +129,7 @@ function utf8_list(s) { function decode(bytes, offset) { var c = classify(Caml_bytes.get(bytes, offset)); - if (typeof c === "number") { + if (/* tag */typeof c === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "decode", @@ -163,7 +163,7 @@ function decode(bytes, offset) { ]; } var cc = classify(Caml_bytes.get(bytes, offset$1)); - if (typeof cc === "number") { + if (/* tag */typeof cc === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "decode", diff --git a/jscomp/test/variant.js b/jscomp/test/variant.js index 32c17e781c..5de53d25f8 100644 --- a/jscomp/test/variant.js +++ b/jscomp/test/variant.js @@ -6,7 +6,7 @@ var Caml_exceptions = require("../../lib/js/caml_exceptions.js"); var Caml_js_exceptions = require("../../lib/js/caml_js_exceptions.js"); function foo(n) { - if (typeof n === "number") { + if (/* tag */typeof n === "number") { if (n === /* A1 */0) { return 1; } else { @@ -26,7 +26,7 @@ function foo(n) { } function fooA1(param) { - if (param === 0) { + if (/* tag */typeof param === "number" && param === /* A1 */0) { return 1; } else { return 42; @@ -34,7 +34,7 @@ function fooA1(param) { } function fooC(param) { - if (typeof param === "number" || param.TAG !== /* C */1) { + if (/* tag */typeof param === "number" || param.TAG !== /* C */1) { return 42; } else { return param._0 + param._1 | 0; diff --git a/jscomp/test/variantsMatching.js b/jscomp/test/variantsMatching.js new file mode 100644 index 0000000000..52fb50e686 --- /dev/null +++ b/jscomp/test/variantsMatching.js @@ -0,0 +1,147 @@ +'use strict'; + + +function toEnum(x) { + switch (x) { + case /* A */0 : + return 0; + case /* B */1 : + return 1; + case /* C */2 : + return 2; + case /* D */3 : + return 3; + case /* E */4 : + return 4; + + } +} + +function toString(x) { + switch (x) { + case /* A */0 : + return "A"; + case /* B */1 : + return "B"; + case /* C */2 : + return "C"; + case /* D */3 : + return "D"; + case /* E */4 : + return "E"; + + } +} + +function bar(x) { + switch (x) { + case /* A */0 : + case /* E */4 : + return 10; + default: + return 0; + } +} + +function and_(x, y) { + if (x === /* True */0 && y === /* True */0) { + return /* True */0; + } else { + return /* False */1; + } +} + +function id(x) { + if (x === /* True */0) { + return /* True */0; + } else { + return /* False */1; + } +} + +function not_(x) { + if (x === /* True */0) { + return /* False */1; + } else { + return /* True */0; + } +} + +function st(state) { + if (/* tag */typeof state === "number") { + return 0; + } else { + return 23; + } +} + +function showToJs(x) { + if (/* tag */typeof x === "number" && x === /* No */0) { + return false; + } else { + return true; + } +} + +function third(l) { + if (!l) { + return false; + } + if (l.hd !== 1) { + return false; + } + var match = l.tl; + if (!match) { + return false; + } + if (match.hd !== 2) { + return false; + } + var match$1 = match.tl; + if (match$1 && !(match$1.hd !== 3 || match$1.tl)) { + return true; + } else { + return false; + } +} + +function third2(l) { + if (/* tag */typeof l === "number") { + return false; + } + if (l._0 !== 1) { + return false; + } + var match = l._1; + if (/* tag */typeof match === "number") { + return false; + } + if (match._0 !== 2) { + return false; + } + var match$1 = match._1; + if (/* tag */typeof match$1 === "number") { + return false; + } + if (match$1._0 !== 3) { + return false; + } + var tmp = match$1._1; + if (/* tag */typeof tmp === "number") { + return true; + } else { + return false; + } +} + +exports.toEnum = toEnum; +exports.toString = toString; +exports.bar = bar; +exports.and_ = and_; +exports.id = id; +exports.not_ = not_; +exports.st = st; +exports.showToJs = showToJs; +exports.third = third; +exports.third2 = third2; +/* No side effect */ diff --git a/jscomp/test/variantsMatching.res b/jscomp/test/variantsMatching.res new file mode 100644 index 0000000000..a95c89c8ed --- /dev/null +++ b/jscomp/test/variantsMatching.res @@ -0,0 +1,81 @@ +type t = A | B | C | D | E + +let toEnum = x => + switch x { + | A => 0 + | B => 1 + | C => 2 + | D => 3 + | E => 4 + } + +let toString = x => + switch x { + | A => "A" + | B => "B" + | C => "C" + | D => "D" + | E => "E" + } + +let bar = x => + switch x { + | A => 10 + | B | C | D => 0 + | E => 10 + } + +type b = True | False + +let and_ = (x, y) => + switch (x, y) { + | (True, False) => False + | (False, True) => False + | (False, False) => False + | (True, True) => True + } + +let id = x => + switch x { + | True => True + | False => False + } + +let not_ = x => + switch x { + | True => False + | False => True + } + +type state = + | Empty + | Int1(int) + | Int2(int) +let st = state => + switch state { + | Empty => 0 + | Int2(intValue) + | Int1(intValue) => 23 + } + +type show = No | After(int) | Yes + +let showToJs = x => + switch x { + | Yes | After(_) => true + | No => false + } + +let third = l => + switch l { + | list{1, 2, 3} => true + | _ => false + } + +type rec lst = Empty | Cons(int, lst) + +let third2 = l => + switch l { + | Cons(1, Cons(2, Cons(3, Empty))) => true + | _ => false + } diff --git a/lib/es6/caml_module.js b/lib/es6/caml_module.js index da6f76c557..19f6b76153 100644 --- a/lib/es6/caml_module.js +++ b/lib/es6/caml_module.js @@ -11,7 +11,7 @@ function init_mod(loc, shape) { }; }; var loop = function (shape, struct_, idx) { - if (typeof shape === "number") { + if (/* tag */typeof shape === "number") { switch (shape) { case /* Function */0 : struct_[idx] = undef_module; @@ -56,7 +56,7 @@ function init_mod(loc, shape) { function update_mod(shape, o, n) { var aux = function (shape, o, n, parent, i) { - if (typeof shape === "number") { + if (/* tag */typeof shape === "number") { switch (shape) { case /* Function */0 : parent[i] = n; @@ -79,7 +79,7 @@ function update_mod(shape, o, n) { return ; } }; - if (typeof shape === "number") { + if (/* tag */typeof shape === "number") { throw { RE_EXN_ID: "Assert_failure", _1: [ diff --git a/lib/es6/hashtbl.js b/lib/es6/hashtbl.js index 995edd7ea2..bcca2e756c 100644 --- a/lib/es6/hashtbl.js +++ b/lib/es6/hashtbl.js @@ -92,7 +92,7 @@ function reset(h) { } function copy_bucketlist(param) { - if (!param) { + if (/* tag */typeof param === "number") { return /* Empty */0; } var key = param.key; @@ -102,7 +102,7 @@ function copy_bucketlist(param) { while(true) { var param = _param; var prec = _prec; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var key = param.key; @@ -113,9 +113,7 @@ function copy_bucketlist(param) { data: data, next: next }; - if (prec) { - prec.next = r; - } else { + if (/* tag */typeof prec === "number") { throw { RE_EXN_ID: "Assert_failure", _1: [ @@ -126,6 +124,7 @@ function copy_bucketlist(param) { Error: new Error() }; } + prec.next = r; _param = next; _prec = r; continue ; @@ -167,7 +166,7 @@ function resize(indexfun, h) { var insert_bucket = function (_cell) { while(true) { var cell = _cell; - if (!cell) { + if (/* tag */typeof cell === "number") { return ; } var key = cell.key; @@ -180,10 +179,10 @@ function resize(indexfun, h) { }); var nidx = Curry._2(indexfun, h, key); var tail = Caml_array.get(ndata_tail, nidx); - if (tail) { - tail.next = cell$1; - } else { + if (/* tag */typeof tail === "number") { Caml_array.set(ndata, nidx, cell$1); + } else { + tail.next = cell$1; } Caml_array.set(ndata_tail, nidx, cell$1); _cell = next; @@ -198,7 +197,7 @@ function resize(indexfun, h) { } for(var i$1 = 0; i$1 < nsize; ++i$1){ var tail = Caml_array.get(ndata_tail, i$1); - if (tail) { + if (/* tag */typeof tail !== "number") { tail.next = /* Empty */0; } @@ -231,18 +230,18 @@ function remove(h, key) { while(true) { var c = _c; var prec = _prec; - if (!c) { + if (/* tag */typeof c === "number") { return ; } var k = c.key; var next = c.next; if (Caml_obj.equal(k, key)) { h.size = h.size - 1 | 0; - if (prec) { + if (/* tag */typeof prec === "number") { + return Caml_array.set(h.data, i, next); + } else { prec.next = next; return ; - } else { - return Caml_array.set(h.data, i, next); } } _c = next; @@ -253,66 +252,66 @@ function remove(h, key) { function find(h, key) { var match = Caml_array.get(h.data, key_index(h, key)); - if (match) { - var k1 = match.key; - var d1 = match.data; - var next1 = match.next; - if (Caml_obj.equal(key, k1)) { - return d1; - } - if (next1) { - var k2 = next1.key; - var d2 = next1.data; - var next2 = next1.next; - if (Caml_obj.equal(key, k2)) { - return d2; - } - if (next2) { - var k3 = next2.key; - var d3 = next2.data; - var next3 = next2.next; - if (Caml_obj.equal(key, k3)) { - return d3; - } else { - var _param = next3; - while(true) { - var param = _param; - if (param) { - var k = param.key; - var data = param.data; - var next = param.next; - if (Caml_obj.equal(key, k)) { - return data; - } - _param = next; - continue ; - } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; - }; - } - } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; - } + if (/* tag */typeof match === "number") { throw { RE_EXN_ID: "Not_found", Error: new Error() }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var k1 = match.key; + var d1 = match.data; + var next1 = match.next; + if (Caml_obj.equal(key, k1)) { + return d1; + } + if (/* tag */typeof next1 === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + var k2 = next1.key; + var d2 = next1.data; + var next2 = next1.next; + if (Caml_obj.equal(key, k2)) { + return d2; + } + if (/* tag */typeof next2 === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + var k3 = next2.key; + var d3 = next2.data; + var next3 = next2.next; + if (Caml_obj.equal(key, k3)) { + return d3; + } else { + var _param = next3; + while(true) { + var param = _param; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + var k = param.key; + var data = param.data; + var next = param.next; + if (Caml_obj.equal(key, k)) { + return data; + } + _param = next; + continue ; + }; + } } function find_opt(h, key) { var match = Caml_array.get(h.data, key_index(h, key)); - if (!match) { + if (/* tag */typeof match === "number") { return ; } var k1 = match.key; @@ -321,7 +320,7 @@ function find_opt(h, key) { if (Caml_obj.equal(key, k1)) { return Caml_option.some(d1); } - if (!next1) { + if (/* tag */typeof next1 === "number") { return ; } var k2 = next1.key; @@ -330,7 +329,7 @@ function find_opt(h, key) { if (Caml_obj.equal(key, k2)) { return Caml_option.some(d2); } - if (!next2) { + if (/* tag */typeof next2 === "number") { return ; } var k3 = next2.key; @@ -342,7 +341,7 @@ function find_opt(h, key) { var _param = next3; while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var k = param.key; @@ -361,7 +360,7 @@ function find_all(h, key) { var find_in_bucket = function (_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return /* [] */0; } var k = param.key; @@ -383,7 +382,7 @@ function find_all(h, key) { function replace_bucket(key, data, _slot) { while(true) { var slot = _slot; - if (!slot) { + if (/* tag */typeof slot === "number") { return true; } var k = slot.key; @@ -421,7 +420,7 @@ function mem(h, key) { var _param = Caml_array.get(h.data, key_index(h, key)); while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } var k = param.key; @@ -438,7 +437,7 @@ function iter(f, h) { var do_bucket = function (_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var key = param.key; @@ -477,12 +476,12 @@ function filter_map_inplace_bucket(f, h, i, _prec, _slot) { while(true) { var slot = _slot; var prec = _prec; - if (!slot) { - if (prec) { + if (/* tag */typeof slot === "number") { + if (/* tag */typeof prec === "number") { + return Caml_array.set(h.data, i, /* Empty */0); + } else { prec.next = /* Empty */0; return ; - } else { - return Caml_array.set(h.data, i, /* Empty */0); } } var key = slot.key; @@ -490,10 +489,10 @@ function filter_map_inplace_bucket(f, h, i, _prec, _slot) { var next = slot.next; var data$1 = Curry._2(f, key, data); if (data$1 !== undefined) { - if (prec) { - prec.next = slot; - } else { + if (/* tag */typeof prec === "number") { Caml_array.set(h.data, i, slot); + } else { + prec.next = slot; } slot.data = Caml_option.valFromOption(data$1); _slot = next; @@ -532,7 +531,7 @@ function fold(f, h, init) { while(true) { var accu = _accu; var b = _b; - if (!b) { + if (/* tag */typeof b === "number") { return accu; } var key = b.key; @@ -571,7 +570,7 @@ function bucket_length(_accu, _param) { while(true) { var param = _param; var accu = _accu; - if (!param) { + if (/* tag */typeof param === "number") { return accu; } var next = param.next; @@ -623,18 +622,18 @@ function MakeSeeded(H) { while(true) { var c = _c; var prec = _prec; - if (!c) { + if (/* tag */typeof c === "number") { return ; } var k = c.key; var next = c.next; if (Curry._2(H.equal, k, key)) { h.size = h.size - 1 | 0; - if (prec) { + if (/* tag */typeof prec === "number") { + return Caml_array.set(h.data, i, next); + } else { prec.next = next; return ; - } else { - return Caml_array.set(h.data, i, next); } } _c = next; @@ -644,65 +643,65 @@ function MakeSeeded(H) { }; var find = function (h, key) { var match = Caml_array.get(h.data, key_index(h, key)); - if (match) { - var k1 = match.key; - var d1 = match.data; - var next1 = match.next; - if (Curry._2(H.equal, key, k1)) { - return d1; - } - if (next1) { - var k2 = next1.key; - var d2 = next1.data; - var next2 = next1.next; - if (Curry._2(H.equal, key, k2)) { - return d2; - } - if (next2) { - var k3 = next2.key; - var d3 = next2.data; - var next3 = next2.next; - if (Curry._2(H.equal, key, k3)) { - return d3; - } else { - var _param = next3; - while(true) { - var param = _param; - if (param) { - var k = param.key; - var data = param.data; - var next = param.next; - if (Curry._2(H.equal, key, k)) { - return data; - } - _param = next; - continue ; - } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; - }; - } - } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; - } + if (/* tag */typeof match === "number") { throw { RE_EXN_ID: "Not_found", Error: new Error() }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var k1 = match.key; + var d1 = match.data; + var next1 = match.next; + if (Curry._2(H.equal, key, k1)) { + return d1; + } + if (/* tag */typeof next1 === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + var k2 = next1.key; + var d2 = next1.data; + var next2 = next1.next; + if (Curry._2(H.equal, key, k2)) { + return d2; + } + if (/* tag */typeof next2 === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + var k3 = next2.key; + var d3 = next2.data; + var next3 = next2.next; + if (Curry._2(H.equal, key, k3)) { + return d3; + } else { + var _param = next3; + while(true) { + var param = _param; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + var k = param.key; + var data = param.data; + var next = param.next; + if (Curry._2(H.equal, key, k)) { + return data; + } + _param = next; + continue ; + }; + } }; var find_opt = function (h, key) { var match = Caml_array.get(h.data, key_index(h, key)); - if (!match) { + if (/* tag */typeof match === "number") { return ; } var k1 = match.key; @@ -711,7 +710,7 @@ function MakeSeeded(H) { if (Curry._2(H.equal, key, k1)) { return Caml_option.some(d1); } - if (!next1) { + if (/* tag */typeof next1 === "number") { return ; } var k2 = next1.key; @@ -720,7 +719,7 @@ function MakeSeeded(H) { if (Curry._2(H.equal, key, k2)) { return Caml_option.some(d2); } - if (!next2) { + if (/* tag */typeof next2 === "number") { return ; } var k3 = next2.key; @@ -732,7 +731,7 @@ function MakeSeeded(H) { var _param = next3; while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var k = param.key; @@ -750,7 +749,7 @@ function MakeSeeded(H) { var find_in_bucket = function (_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return /* [] */0; } var k = param.key; @@ -771,7 +770,7 @@ function MakeSeeded(H) { var replace_bucket = function (key, data, _slot) { while(true) { var slot = _slot; - if (!slot) { + if (/* tag */typeof slot === "number") { return true; } var k = slot.key; @@ -807,7 +806,7 @@ function MakeSeeded(H) { var _param = Caml_array.get(h.data, key_index(h, key)); while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } var k = param.key; @@ -865,18 +864,18 @@ function Make(H) { while(true) { var c = _c; var prec = _prec; - if (!c) { + if (/* tag */typeof c === "number") { return ; } var k = c.key; var next = c.next; if (Curry._2(equal, k, key)) { h.size = h.size - 1 | 0; - if (prec) { + if (/* tag */typeof prec === "number") { + return Caml_array.set(h.data, i, next); + } else { prec.next = next; return ; - } else { - return Caml_array.set(h.data, i, next); } } _c = next; @@ -886,65 +885,65 @@ function Make(H) { }; var find = function (h, key) { var match = Caml_array.get(h.data, key_index(h, key)); - if (match) { - var k1 = match.key; - var d1 = match.data; - var next1 = match.next; - if (Curry._2(equal, key, k1)) { - return d1; - } - if (next1) { - var k2 = next1.key; - var d2 = next1.data; - var next2 = next1.next; - if (Curry._2(equal, key, k2)) { - return d2; - } - if (next2) { - var k3 = next2.key; - var d3 = next2.data; - var next3 = next2.next; - if (Curry._2(equal, key, k3)) { - return d3; - } else { - var _param = next3; - while(true) { - var param = _param; - if (param) { - var k = param.key; - var data = param.data; - var next = param.next; - if (Curry._2(equal, key, k)) { - return data; - } - _param = next; - continue ; - } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; - }; - } - } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; - } + if (/* tag */typeof match === "number") { throw { RE_EXN_ID: "Not_found", Error: new Error() }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var k1 = match.key; + var d1 = match.data; + var next1 = match.next; + if (Curry._2(equal, key, k1)) { + return d1; + } + if (/* tag */typeof next1 === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + var k2 = next1.key; + var d2 = next1.data; + var next2 = next1.next; + if (Curry._2(equal, key, k2)) { + return d2; + } + if (/* tag */typeof next2 === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + var k3 = next2.key; + var d3 = next2.data; + var next3 = next2.next; + if (Curry._2(equal, key, k3)) { + return d3; + } else { + var _param = next3; + while(true) { + var param = _param; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + var k = param.key; + var data = param.data; + var next = param.next; + if (Curry._2(equal, key, k)) { + return data; + } + _param = next; + continue ; + }; + } }; var find_opt = function (h, key) { var match = Caml_array.get(h.data, key_index(h, key)); - if (!match) { + if (/* tag */typeof match === "number") { return ; } var k1 = match.key; @@ -953,7 +952,7 @@ function Make(H) { if (Curry._2(equal, key, k1)) { return Caml_option.some(d1); } - if (!next1) { + if (/* tag */typeof next1 === "number") { return ; } var k2 = next1.key; @@ -962,7 +961,7 @@ function Make(H) { if (Curry._2(equal, key, k2)) { return Caml_option.some(d2); } - if (!next2) { + if (/* tag */typeof next2 === "number") { return ; } var k3 = next2.key; @@ -974,7 +973,7 @@ function Make(H) { var _param = next3; while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var k = param.key; @@ -992,7 +991,7 @@ function Make(H) { var find_in_bucket = function (_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return /* [] */0; } var k = param.key; @@ -1013,7 +1012,7 @@ function Make(H) { var replace_bucket = function (key, data, _slot) { while(true) { var slot = _slot; - if (!slot) { + if (/* tag */typeof slot === "number") { return true; } var k = slot.key; @@ -1049,7 +1048,7 @@ function Make(H) { var _param = Caml_array.get(h.data, key_index(h, key)); while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } var k = param.key; diff --git a/lib/es6/map.js b/lib/es6/map.js index 5a1c45d078..91fbbab1b6 100644 --- a/lib/es6/map.js +++ b/lib/es6/map.js @@ -5,10 +5,10 @@ import * as Caml_option from "./caml_option.js"; function Make(funarg) { var height = function (param) { - if (param) { - return param.h; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return param.h; } }; var create = function (l, x, d, r) { @@ -32,26 +32,28 @@ function Make(funarg) { }; }; var bal = function (l, x, d, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l.r; - var ld = l.d; - var lv = l.v; - var ll = l.l; - if (height(ll) >= height(lr)) { - return create(ll, lv, ld, create(lr, x, d, r)); - } - if (lr) { - return create(create(ll, lv, ld, lr.l), lr.v, lr.d, create(lr.r, x, d, r)); - } + if (/* tag */typeof l === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var lr = l.r; + var ld = l.d; + var lv = l.v; + var ll = l.l; + if (height(ll) >= height(lr)) { + return create(ll, lv, ld, create(lr, x, d, r)); + } + if (/* tag */typeof lr !== "number") { + return create(create(ll, lv, ld, lr.l), lr.v, lr.d, create(lr.r, x, d, r)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -67,23 +69,23 @@ function Make(funarg) { h: hl >= hr ? hl + 1 | 0 : hr + 1 | 0 }; } - if (r) { - var rr = r.r; - var rd = r.d; - var rv = r.v; - var rl = r.l; - if (height(rr) >= height(rl)) { - return create(create(l, x, d, rl), rv, rd, rr); - } - if (rl) { - return create(create(l, x, d, rl.l), rl.v, rl.d, create(rl.r, rv, rd, rr)); - } + if (/* tag */typeof r === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var rr = r.r; + var rd = r.d; + var rv = r.v; + var rl = r.l; + if (height(rr) >= height(rl)) { + return create(create(l, x, d, rl), rv, rd, rr); + } + if (/* tag */typeof rl !== "number") { + return create(create(l, x, d, rl.l), rl.v, rl.d, create(rl.r, rv, rd, rr)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -91,14 +93,14 @@ function Make(funarg) { }; }; var is_empty = function (param) { - if (param) { - return false; - } else { + if (/* tag */typeof param === "number") { return true; + } else { + return false; } }; var add = function (x, data, m) { - if (!m) { + if (/* tag */typeof m === "number") { return /* Node */{ l: /* Empty */0, v: x, @@ -143,63 +145,63 @@ function Make(funarg) { var find = function (x, _param) { while(true) { var param = _param; - if (param) { - var c = Curry._2(funarg.compare, x, param.v); - if (c === 0) { - return param.d; - } - _param = c < 0 ? param.l : param.r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var c = Curry._2(funarg.compare, x, param.v); + if (c === 0) { + return param.d; + } + _param = c < 0 ? param.l : param.r; + continue ; }; }; var find_first = function (f, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - if (Curry._1(f, v)) { - var _v0 = v; - var _d0 = param.d; - var _param$1 = param.l; - while(true) { - var param$1 = _param$1; - var d0 = _d0; - var v0 = _v0; - if (!param$1) { - return [ - v0, - d0 - ]; - } - var v$1 = param$1.v; - if (Curry._1(f, v$1)) { - _param$1 = param$1.l; - _d0 = param$1.d; - _v0 = v$1; - continue ; - } - _param$1 = param$1.r; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + var v = param.v; + if (Curry._1(f, v)) { + var _v0 = v; + var _d0 = param.d; + var _param$1 = param.l; + while(true) { + var param$1 = _param$1; + var d0 = _d0; + var v0 = _v0; + if (/* tag */typeof param$1 === "number") { + return [ + v0, + d0 + ]; + } + var v$1 = param$1.v; + if (Curry._1(f, v$1)) { + _param$1 = param$1.l; + _d0 = param$1.d; + _v0 = v$1; continue ; - }; - } - _param = param.r; - continue ; + } + _param$1 = param$1.r; + continue ; + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + _param = param.r; + continue ; }; }; var find_first_opt = function (f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -211,7 +213,7 @@ function Make(funarg) { var param$1 = _param$1; var d0 = _d0; var v0 = _v0; - if (!param$1) { + if (/* tag */typeof param$1 === "number") { return [ v0, d0 @@ -235,46 +237,46 @@ function Make(funarg) { var find_last = function (f, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - if (Curry._1(f, v)) { - var _v0 = v; - var _d0 = param.d; - var _param$1 = param.r; - while(true) { - var param$1 = _param$1; - var d0 = _d0; - var v0 = _v0; - if (!param$1) { - return [ - v0, - d0 - ]; - } - var v$1 = param$1.v; - if (Curry._1(f, v$1)) { - _param$1 = param$1.r; - _d0 = param$1.d; - _v0 = v$1; - continue ; - } - _param$1 = param$1.l; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + var v = param.v; + if (Curry._1(f, v)) { + var _v0 = v; + var _d0 = param.d; + var _param$1 = param.r; + while(true) { + var param$1 = _param$1; + var d0 = _d0; + var v0 = _v0; + if (/* tag */typeof param$1 === "number") { + return [ + v0, + d0 + ]; + } + var v$1 = param$1.v; + if (Curry._1(f, v$1)) { + _param$1 = param$1.r; + _d0 = param$1.d; + _v0 = v$1; continue ; - }; - } - _param = param.l; - continue ; + } + _param$1 = param$1.l; + continue ; + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + _param = param.l; + continue ; }; }; var find_last_opt = function (f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -286,7 +288,7 @@ function Make(funarg) { var param$1 = _param$1; var d0 = _d0; var v0 = _v0; - if (!param$1) { + if (/* tag */typeof param$1 === "number") { return [ v0, d0 @@ -310,7 +312,7 @@ function Make(funarg) { var find_opt = function (x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var c = Curry._2(funarg.compare, x, param.v); @@ -324,7 +326,7 @@ function Make(funarg) { var mem = function (x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } var c = Curry._2(funarg.compare, x, param.v); @@ -338,31 +340,31 @@ function Make(funarg) { var min_binding = function (_param) { while(true) { var param = _param; - if (param) { - var l = param.l; - if (!l) { - return [ - param.v, - param.d - ]; - } - _param = l; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var l = param.l; + if (/* tag */typeof l === "number") { + return [ + param.v, + param.d + ]; + } + _param = l; + continue ; }; }; var min_binding_opt = function (_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var l = param.l; - if (!l) { + if (/* tag */typeof l === "number") { return [ param.v, param.d @@ -375,31 +377,31 @@ function Make(funarg) { var max_binding = function (_param) { while(true) { var param = _param; - if (param) { - var r = param.r; - if (!r) { - return [ - param.v, - param.d - ]; - } - _param = r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var r = param.r; + if (/* tag */typeof r === "number") { + return [ + param.v, + param.d + ]; + } + _param = r; + continue ; }; }; var max_binding_opt = function (_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var r = param.r; - if (!r) { + if (/* tag */typeof r === "number") { return [ param.v, param.d @@ -410,32 +412,32 @@ function Make(funarg) { }; }; var remove_min_binding = function (param) { - if (param) { - var l = param.l; - if (l) { - return bal(remove_min_binding(l), param.v, param.d, param.r); - } else { - return param.r; - } + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Invalid_argument", + _1: "Map.remove_min_elt", + Error: new Error() + }; + } + var l = param.l; + if (/* tag */typeof l === "number") { + return param.r; + } else { + return bal(remove_min_binding(l), param.v, param.d, param.r); } - throw { - RE_EXN_ID: "Invalid_argument", - _1: "Map.remove_min_elt", - Error: new Error() - }; }; var merge = function (t1, t2) { - if (!t1) { + if (/* tag */typeof t1 === "number") { return t2; } - if (!t2) { + if (/* tag */typeof t2 === "number") { return t1; } var match = min_binding(t2); return bal(t1, match[0], match[1], remove_min_binding(t2)); }; var remove = function (x, m) { - if (!m) { + if (/* tag */typeof m === "number") { return /* Empty */0; } var r = m.r; @@ -462,62 +464,62 @@ function Make(funarg) { } }; var update = function (x, f, m) { - if (m) { - var r = m.r; - var d = m.d; - var v = m.v; - var l = m.l; - var c = Curry._2(funarg.compare, x, v); - if (c === 0) { - var data = Curry._1(f, Caml_option.some(d)); - if (data === undefined) { - return merge(l, r); - } - var data$1 = Caml_option.valFromOption(data); - if (d === data$1) { - return m; - } else { - return /* Node */{ - l: l, - v: x, - d: data$1, - r: r, - h: m.h - }; - } + if (/* tag */typeof m === "number") { + var data = Curry._1(f, undefined); + if (data !== undefined) { + return /* Node */{ + l: /* Empty */0, + v: x, + d: Caml_option.valFromOption(data), + r: /* Empty */0, + h: 1 + }; + } else { + return /* Empty */0; } - if (c < 0) { - var ll = update(x, f, l); - if (l === ll) { - return m; - } else { - return bal(ll, v, d, r); - } + } + var r = m.r; + var d = m.d; + var v = m.v; + var l = m.l; + var c = Curry._2(funarg.compare, x, v); + if (c === 0) { + var data$1 = Curry._1(f, Caml_option.some(d)); + if (data$1 === undefined) { + return merge(l, r); + } + var data$2 = Caml_option.valFromOption(data$1); + if (d === data$2) { + return m; + } else { + return /* Node */{ + l: l, + v: x, + d: data$2, + r: r, + h: m.h + }; } - var rr = update(x, f, r); - if (r === rr) { + } + if (c < 0) { + var ll = update(x, f, l); + if (l === ll) { return m; } else { - return bal(l, v, d, rr); + return bal(ll, v, d, r); } } - var data$2 = Curry._1(f, undefined); - if (data$2 !== undefined) { - return /* Node */{ - l: /* Empty */0, - v: x, - d: Caml_option.valFromOption(data$2), - r: /* Empty */0, - h: 1 - }; + var rr = update(x, f, r); + if (r === rr) { + return m; } else { - return /* Empty */0; + return bal(l, v, d, rr); } }; var iter = function (f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } iter(f, param.l); @@ -527,7 +529,7 @@ function Make(funarg) { }; }; var map = function (f, param) { - if (!param) { + if (/* tag */typeof param === "number") { return /* Empty */0; } var l$p = map(f, param.l); @@ -542,7 +544,7 @@ function Make(funarg) { }; }; var mapi = function (f, param) { - if (!param) { + if (/* tag */typeof param === "number") { return /* Empty */0; } var v = param.v; @@ -561,7 +563,7 @@ function Make(funarg) { while(true) { var accu = _accu; var m = _m; - if (!m) { + if (/* tag */typeof m === "number") { return accu; } _accu = Curry._3(f, m.v, m.d, fold(f, m.l, accu)); @@ -572,7 +574,7 @@ function Make(funarg) { var for_all = function (p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return true; } if (!Curry._2(p, param.v, param.d)) { @@ -588,7 +590,7 @@ function Make(funarg) { var exists = function (p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } if (Curry._2(p, param.v, param.d)) { @@ -602,28 +604,28 @@ function Make(funarg) { }; }; var add_min_binding = function (k, x, param) { - if (param) { - return bal(add_min_binding(k, x, param.l), param.v, param.d, param.r); - } else { + if (/* tag */typeof param === "number") { return singleton(k, x); + } else { + return bal(add_min_binding(k, x, param.l), param.v, param.d, param.r); } }; var add_max_binding = function (k, x, param) { - if (param) { - return bal(param.l, param.v, param.d, add_max_binding(k, x, param.r)); - } else { + if (/* tag */typeof param === "number") { return singleton(k, x); + } else { + return bal(param.l, param.v, param.d, add_max_binding(k, x, param.r)); } }; var join = function (l, v, d, r) { - if (!l) { + if (/* tag */typeof l === "number") { return add_min_binding(v, d, r); } - if (!r) { + var lh = l.h; + if (/* tag */typeof r === "number") { return add_max_binding(v, d, l); } var rh = r.h; - var lh = l.h; if (lh > (rh + 2 | 0)) { return bal(l.l, l.v, l.d, join(l.r, v, d, r)); } else if (rh > (lh + 2 | 0)) { @@ -633,10 +635,10 @@ function Make(funarg) { } }; var concat = function (t1, t2) { - if (!t1) { + if (/* tag */typeof t1 === "number") { return t2; } - if (!t2) { + if (/* tag */typeof t2 === "number") { return t1; } var match = min_binding(t2); @@ -650,7 +652,7 @@ function Make(funarg) { } }; var split = function (x, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, undefined, @@ -685,42 +687,45 @@ function Make(funarg) { ]; }; var merge$1 = function (f, s1, s2) { - if (s1) { + if (/* tag */typeof s1 === "number") { + if (/* tag */typeof s2 === "number") { + return /* Empty */0; + } + + } else { var v1 = s1.v; if (s1.h >= height(s2)) { var match = split(v1, s2); return concat_or_join(merge$1(f, s1.l, match[0]), v1, Curry._3(f, v1, Caml_option.some(s1.d), match[1]), merge$1(f, s1.r, match[2])); } - } else if (!s2) { - return /* Empty */0; } - if (s2) { - var v2 = s2.v; - var match$1 = split(v2, s1); - return concat_or_join(merge$1(f, match$1[0], s2.l), v2, Curry._3(f, v2, match$1[1], Caml_option.some(s2.d)), merge$1(f, match$1[2], s2.r)); + if (/* tag */typeof s2 === "number") { + throw { + RE_EXN_ID: "Assert_failure", + _1: [ + "map.ml", + 393, + 10 + ], + Error: new Error() + }; } - throw { - RE_EXN_ID: "Assert_failure", - _1: [ - "map.ml", - 393, - 10 - ], - Error: new Error() - }; + var v2 = s2.v; + var match$1 = split(v2, s1); + return concat_or_join(merge$1(f, match$1[0], s2.l), v2, Curry._3(f, v2, match$1[1], Caml_option.some(s2.d)), merge$1(f, match$1[2], s2.r)); }; var union = function (f, s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return s2; } - if (!s2) { + var d1 = s1.d; + var v1 = s1.v; + if (/* tag */typeof s2 === "number") { return s1; } var d2 = s2.d; var v2 = s2.v; - var d1 = s1.d; - var v1 = s1.v; if (s1.h >= s2.h) { var match = split(v1, s2); var d2$1 = match[1]; @@ -743,7 +748,7 @@ function Make(funarg) { } }; var filter = function (p, m) { - if (!m) { + if (/* tag */typeof m === "number") { return /* Empty */0; } var r = m.r; @@ -764,7 +769,7 @@ function Make(funarg) { } }; var partition = function (p, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, /* Empty */0 @@ -795,7 +800,7 @@ function Make(funarg) { while(true) { var e = _e; var m = _m; - if (!m) { + if (/* tag */typeof m === "number") { return e; } _e = /* More */{ @@ -814,14 +819,14 @@ function Make(funarg) { while(true) { var e2 = _e2; var e1 = _e1; - if (!e1) { - if (e2) { - return -1; - } else { + if (/* tag */typeof e1 === "number") { + if (/* tag */typeof e2 === "number") { return 0; + } else { + return -1; } } - if (!e2) { + if (/* tag */typeof e2 === "number") { return 1; } var c = Curry._2(funarg.compare, e1._0, e2._0); @@ -843,14 +848,14 @@ function Make(funarg) { while(true) { var e2 = _e2; var e1 = _e1; - if (!e1) { - if (e2) { - return false; - } else { + if (/* tag */typeof e1 === "number") { + if (/* tag */typeof e2 === "number") { return true; + } else { + return false; } } - if (!e2) { + if (/* tag */typeof e2 === "number") { return false; } if (Curry._2(funarg.compare, e1._0, e2._0) !== 0) { @@ -865,17 +870,17 @@ function Make(funarg) { }; }; var cardinal = function (param) { - if (param) { - return (cardinal(param.l) + 1 | 0) + cardinal(param.r) | 0; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return (cardinal(param.l) + 1 | 0) + cardinal(param.r) | 0; } }; var bindings_aux = function (_accu, _param) { while(true) { var param = _param; var accu = _accu; - if (!param) { + if (/* tag */typeof param === "number") { return accu; } _param = param.l; diff --git a/lib/es6/mapLabels.js b/lib/es6/mapLabels.js index b7fb0b8434..ff589eb094 100644 --- a/lib/es6/mapLabels.js +++ b/lib/es6/mapLabels.js @@ -5,10 +5,10 @@ import * as Caml_option from "./caml_option.js"; function Make(Ord) { var height = function (param) { - if (param) { - return param.h; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return param.h; } }; var create = function (l, x, d, r) { @@ -32,26 +32,28 @@ function Make(Ord) { }; }; var bal = function (l, x, d, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l.r; - var ld = l.d; - var lv = l.v; - var ll = l.l; - if (height(ll) >= height(lr)) { - return create(ll, lv, ld, create(lr, x, d, r)); - } - if (lr) { - return create(create(ll, lv, ld, lr.l), lr.v, lr.d, create(lr.r, x, d, r)); - } + if (/* tag */typeof l === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var lr = l.r; + var ld = l.d; + var lv = l.v; + var ll = l.l; + if (height(ll) >= height(lr)) { + return create(ll, lv, ld, create(lr, x, d, r)); + } + if (/* tag */typeof lr !== "number") { + return create(create(ll, lv, ld, lr.l), lr.v, lr.d, create(lr.r, x, d, r)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -67,23 +69,23 @@ function Make(Ord) { h: hl >= hr ? hl + 1 | 0 : hr + 1 | 0 }; } - if (r) { - var rr = r.r; - var rd = r.d; - var rv = r.v; - var rl = r.l; - if (height(rr) >= height(rl)) { - return create(create(l, x, d, rl), rv, rd, rr); - } - if (rl) { - return create(create(l, x, d, rl.l), rl.v, rl.d, create(rl.r, rv, rd, rr)); - } + if (/* tag */typeof r === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var rr = r.r; + var rd = r.d; + var rv = r.v; + var rl = r.l; + if (height(rr) >= height(rl)) { + return create(create(l, x, d, rl), rv, rd, rr); + } + if (/* tag */typeof rl !== "number") { + return create(create(l, x, d, rl.l), rl.v, rl.d, create(rl.r, rv, rd, rr)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -91,14 +93,14 @@ function Make(Ord) { }; }; var is_empty = function (param) { - if (param) { - return false; - } else { + if (/* tag */typeof param === "number") { return true; + } else { + return false; } }; var add = function (x, data, m) { - if (!m) { + if (/* tag */typeof m === "number") { return /* Node */{ l: /* Empty */0, v: x, @@ -143,18 +145,18 @@ function Make(Ord) { var find = function (x, _param) { while(true) { var param = _param; - if (param) { - var c = Curry._2(Ord.compare, x, param.v); - if (c === 0) { - return param.d; - } - _param = c < 0 ? param.l : param.r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var c = Curry._2(Ord.compare, x, param.v); + if (c === 0) { + return param.d; + } + _param = c < 0 ? param.l : param.r; + continue ; }; }; var find_first_aux = function (_v0, _d0, f, _param) { @@ -162,7 +164,7 @@ function Make(Ord) { var param = _param; var d0 = _d0; var v0 = _v0; - if (!param) { + if (/* tag */typeof param === "number") { return [ v0, d0 @@ -182,18 +184,18 @@ function Make(Ord) { var find_first = function (f, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - if (Curry._1(f, v)) { - return find_first_aux(v, param.d, f, param.l); - } - _param = param.r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var v = param.v; + if (Curry._1(f, v)) { + return find_first_aux(v, param.d, f, param.l); + } + _param = param.r; + continue ; }; }; var find_first_opt_aux = function (_v0, _d0, f, _param) { @@ -201,7 +203,7 @@ function Make(Ord) { var param = _param; var d0 = _d0; var v0 = _v0; - if (!param) { + if (/* tag */typeof param === "number") { return [ v0, d0 @@ -221,7 +223,7 @@ function Make(Ord) { var find_first_opt = function (f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -237,7 +239,7 @@ function Make(Ord) { var param = _param; var d0 = _d0; var v0 = _v0; - if (!param) { + if (/* tag */typeof param === "number") { return [ v0, d0 @@ -257,18 +259,18 @@ function Make(Ord) { var find_last = function (f, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - if (Curry._1(f, v)) { - return find_last_aux(v, param.d, f, param.r); - } - _param = param.l; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var v = param.v; + if (Curry._1(f, v)) { + return find_last_aux(v, param.d, f, param.r); + } + _param = param.l; + continue ; }; }; var find_last_opt_aux = function (_v0, _d0, f, _param) { @@ -276,7 +278,7 @@ function Make(Ord) { var param = _param; var d0 = _d0; var v0 = _v0; - if (!param) { + if (/* tag */typeof param === "number") { return [ v0, d0 @@ -296,7 +298,7 @@ function Make(Ord) { var find_last_opt = function (f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -310,7 +312,7 @@ function Make(Ord) { var find_opt = function (x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var c = Curry._2(Ord.compare, x, param.v); @@ -324,7 +326,7 @@ function Make(Ord) { var mem = function (x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } var c = Curry._2(Ord.compare, x, param.v); @@ -338,31 +340,31 @@ function Make(Ord) { var min_binding = function (_param) { while(true) { var param = _param; - if (param) { - var l = param.l; - if (!l) { - return [ - param.v, - param.d - ]; - } - _param = l; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var l = param.l; + if (/* tag */typeof l === "number") { + return [ + param.v, + param.d + ]; + } + _param = l; + continue ; }; }; var min_binding_opt = function (_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var l = param.l; - if (!l) { + if (/* tag */typeof l === "number") { return [ param.v, param.d @@ -375,31 +377,31 @@ function Make(Ord) { var max_binding = function (_param) { while(true) { var param = _param; - if (param) { - var r = param.r; - if (!r) { - return [ - param.v, - param.d - ]; - } - _param = r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var r = param.r; + if (/* tag */typeof r === "number") { + return [ + param.v, + param.d + ]; + } + _param = r; + continue ; }; }; var max_binding_opt = function (_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var r = param.r; - if (!r) { + if (/* tag */typeof r === "number") { return [ param.v, param.d @@ -410,32 +412,32 @@ function Make(Ord) { }; }; var remove_min_binding = function (param) { - if (param) { - var l = param.l; - if (l) { - return bal(remove_min_binding(l), param.v, param.d, param.r); - } else { - return param.r; - } + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Invalid_argument", + _1: "Map.remove_min_elt", + Error: new Error() + }; + } + var l = param.l; + if (/* tag */typeof l === "number") { + return param.r; + } else { + return bal(remove_min_binding(l), param.v, param.d, param.r); } - throw { - RE_EXN_ID: "Invalid_argument", - _1: "Map.remove_min_elt", - Error: new Error() - }; }; var merge = function (t1, t2) { - if (!t1) { + if (/* tag */typeof t1 === "number") { return t2; } - if (!t2) { + if (/* tag */typeof t2 === "number") { return t1; } var match = min_binding(t2); return bal(t1, match[0], match[1], remove_min_binding(t2)); }; var remove = function (x, m) { - if (!m) { + if (/* tag */typeof m === "number") { return /* Empty */0; } var r = m.r; @@ -462,62 +464,62 @@ function Make(Ord) { } }; var update = function (x, f, m) { - if (m) { - var r = m.r; - var d = m.d; - var v = m.v; - var l = m.l; - var c = Curry._2(Ord.compare, x, v); - if (c === 0) { - var data = Curry._1(f, Caml_option.some(d)); - if (data === undefined) { - return merge(l, r); - } - var data$1 = Caml_option.valFromOption(data); - if (d === data$1) { - return m; - } else { - return /* Node */{ - l: l, - v: x, - d: data$1, - r: r, - h: m.h - }; - } + if (/* tag */typeof m === "number") { + var data = Curry._1(f, undefined); + if (data !== undefined) { + return /* Node */{ + l: /* Empty */0, + v: x, + d: Caml_option.valFromOption(data), + r: /* Empty */0, + h: 1 + }; + } else { + return /* Empty */0; } - if (c < 0) { - var ll = update(x, f, l); - if (l === ll) { - return m; - } else { - return bal(ll, v, d, r); - } + } + var r = m.r; + var d = m.d; + var v = m.v; + var l = m.l; + var c = Curry._2(Ord.compare, x, v); + if (c === 0) { + var data$1 = Curry._1(f, Caml_option.some(d)); + if (data$1 === undefined) { + return merge(l, r); } - var rr = update(x, f, r); - if (r === rr) { + var data$2 = Caml_option.valFromOption(data$1); + if (d === data$2) { return m; } else { - return bal(l, v, d, rr); + return /* Node */{ + l: l, + v: x, + d: data$2, + r: r, + h: m.h + }; } } - var data$2 = Curry._1(f, undefined); - if (data$2 !== undefined) { - return /* Node */{ - l: /* Empty */0, - v: x, - d: Caml_option.valFromOption(data$2), - r: /* Empty */0, - h: 1 - }; + if (c < 0) { + var ll = update(x, f, l); + if (l === ll) { + return m; + } else { + return bal(ll, v, d, r); + } + } + var rr = update(x, f, r); + if (r === rr) { + return m; } else { - return /* Empty */0; + return bal(l, v, d, rr); } }; var iter = function (f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } iter(f, param.l); @@ -527,7 +529,7 @@ function Make(Ord) { }; }; var map = function (f, param) { - if (!param) { + if (/* tag */typeof param === "number") { return /* Empty */0; } var l$p = map(f, param.l); @@ -542,7 +544,7 @@ function Make(Ord) { }; }; var mapi = function (f, param) { - if (!param) { + if (/* tag */typeof param === "number") { return /* Empty */0; } var v = param.v; @@ -561,7 +563,7 @@ function Make(Ord) { while(true) { var accu = _accu; var m = _m; - if (!m) { + if (/* tag */typeof m === "number") { return accu; } _accu = Curry._3(f, m.v, m.d, fold(f, m.l, accu)); @@ -572,7 +574,7 @@ function Make(Ord) { var for_all = function (p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return true; } if (!Curry._2(p, param.v, param.d)) { @@ -588,7 +590,7 @@ function Make(Ord) { var exists = function (p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } if (Curry._2(p, param.v, param.d)) { @@ -602,28 +604,28 @@ function Make(Ord) { }; }; var add_min_binding = function (k, x, param) { - if (param) { - return bal(add_min_binding(k, x, param.l), param.v, param.d, param.r); - } else { + if (/* tag */typeof param === "number") { return singleton(k, x); + } else { + return bal(add_min_binding(k, x, param.l), param.v, param.d, param.r); } }; var add_max_binding = function (k, x, param) { - if (param) { - return bal(param.l, param.v, param.d, add_max_binding(k, x, param.r)); - } else { + if (/* tag */typeof param === "number") { return singleton(k, x); + } else { + return bal(param.l, param.v, param.d, add_max_binding(k, x, param.r)); } }; var join = function (l, v, d, r) { - if (!l) { + if (/* tag */typeof l === "number") { return add_min_binding(v, d, r); } - if (!r) { + var lh = l.h; + if (/* tag */typeof r === "number") { return add_max_binding(v, d, l); } var rh = r.h; - var lh = l.h; if (lh > (rh + 2 | 0)) { return bal(l.l, l.v, l.d, join(l.r, v, d, r)); } else if (rh > (lh + 2 | 0)) { @@ -633,10 +635,10 @@ function Make(Ord) { } }; var concat = function (t1, t2) { - if (!t1) { + if (/* tag */typeof t1 === "number") { return t2; } - if (!t2) { + if (/* tag */typeof t2 === "number") { return t1; } var match = min_binding(t2); @@ -650,7 +652,7 @@ function Make(Ord) { } }; var split = function (x, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, undefined, @@ -685,42 +687,45 @@ function Make(Ord) { ]; }; var merge$1 = function (f, s1, s2) { - if (s1) { + if (/* tag */typeof s1 === "number") { + if (/* tag */typeof s2 === "number") { + return /* Empty */0; + } + + } else { var v1 = s1.v; if (s1.h >= height(s2)) { var match = split(v1, s2); return concat_or_join(merge$1(f, s1.l, match[0]), v1, Curry._3(f, v1, Caml_option.some(s1.d), match[1]), merge$1(f, s1.r, match[2])); } - } else if (!s2) { - return /* Empty */0; } - if (s2) { - var v2 = s2.v; - var match$1 = split(v2, s1); - return concat_or_join(merge$1(f, match$1[0], s2.l), v2, Curry._3(f, v2, match$1[1], Caml_option.some(s2.d)), merge$1(f, match$1[2], s2.r)); + if (/* tag */typeof s2 === "number") { + throw { + RE_EXN_ID: "Assert_failure", + _1: [ + "mapLabels.ml", + 393, + 10 + ], + Error: new Error() + }; } - throw { - RE_EXN_ID: "Assert_failure", - _1: [ - "mapLabels.ml", - 393, - 10 - ], - Error: new Error() - }; + var v2 = s2.v; + var match$1 = split(v2, s1); + return concat_or_join(merge$1(f, match$1[0], s2.l), v2, Curry._3(f, v2, match$1[1], Caml_option.some(s2.d)), merge$1(f, match$1[2], s2.r)); }; var union = function (f, s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return s2; } - if (!s2) { + var d1 = s1.d; + var v1 = s1.v; + if (/* tag */typeof s2 === "number") { return s1; } var d2 = s2.d; var v2 = s2.v; - var d1 = s1.d; - var v1 = s1.v; if (s1.h >= s2.h) { var match = split(v1, s2); var d2$1 = match[1]; @@ -743,7 +748,7 @@ function Make(Ord) { } }; var filter = function (p, m) { - if (!m) { + if (/* tag */typeof m === "number") { return /* Empty */0; } var r = m.r; @@ -764,7 +769,7 @@ function Make(Ord) { } }; var partition = function (p, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, /* Empty */0 @@ -795,7 +800,7 @@ function Make(Ord) { while(true) { var e = _e; var m = _m; - if (!m) { + if (/* tag */typeof m === "number") { return e; } _e = /* More */{ @@ -814,14 +819,14 @@ function Make(Ord) { while(true) { var e2 = _e2; var e1 = _e1; - if (!e1) { - if (e2) { - return -1; - } else { + if (/* tag */typeof e1 === "number") { + if (/* tag */typeof e2 === "number") { return 0; + } else { + return -1; } } - if (!e2) { + if (/* tag */typeof e2 === "number") { return 1; } var c = Curry._2(Ord.compare, e1._0, e2._0); @@ -843,14 +848,14 @@ function Make(Ord) { while(true) { var e2 = _e2; var e1 = _e1; - if (!e1) { - if (e2) { - return false; - } else { + if (/* tag */typeof e1 === "number") { + if (/* tag */typeof e2 === "number") { return true; + } else { + return false; } } - if (!e2) { + if (/* tag */typeof e2 === "number") { return false; } if (Curry._2(Ord.compare, e1._0, e2._0) !== 0) { @@ -865,17 +870,17 @@ function Make(Ord) { }; }; var cardinal = function (param) { - if (param) { - return (cardinal(param.l) + 1 | 0) + cardinal(param.r) | 0; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return (cardinal(param.l) + 1 | 0) + cardinal(param.r) | 0; } }; var bindings_aux = function (_accu, _param) { while(true) { var param = _param; var accu = _accu; - if (!param) { + if (/* tag */typeof param === "number") { return accu; } _param = param.l; diff --git a/lib/es6/moreLabels.js b/lib/es6/moreLabels.js index 2fd0710a50..82b64f8f44 100644 --- a/lib/es6/moreLabels.js +++ b/lib/es6/moreLabels.js @@ -35,10 +35,10 @@ var Hashtbl = { var $$Map = { Make: (function (funarg) { var height = function (param) { - if (param) { - return param.h; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return param.h; } }; var create = function (l, x, d, r) { @@ -62,26 +62,28 @@ var $$Map = { }; }; var bal = function (l, x, d, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l.r; - var ld = l.d; - var lv = l.v; - var ll = l.l; - if (height(ll) >= height(lr)) { - return create(ll, lv, ld, create(lr, x, d, r)); - } - if (lr) { - return create(create(ll, lv, ld, lr.l), lr.v, lr.d, create(lr.r, x, d, r)); - } + if (/* tag */typeof l === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var lr = l.r; + var ld = l.d; + var lv = l.v; + var ll = l.l; + if (height(ll) >= height(lr)) { + return create(ll, lv, ld, create(lr, x, d, r)); + } + if (/* tag */typeof lr !== "number") { + return create(create(ll, lv, ld, lr.l), lr.v, lr.d, create(lr.r, x, d, r)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -97,23 +99,23 @@ var $$Map = { h: hl >= hr ? hl + 1 | 0 : hr + 1 | 0 }; } - if (r) { - var rr = r.r; - var rd = r.d; - var rv = r.v; - var rl = r.l; - if (height(rr) >= height(rl)) { - return create(create(l, x, d, rl), rv, rd, rr); - } - if (rl) { - return create(create(l, x, d, rl.l), rl.v, rl.d, create(rl.r, rv, rd, rr)); - } + if (/* tag */typeof r === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var rr = r.r; + var rd = r.d; + var rv = r.v; + var rl = r.l; + if (height(rr) >= height(rl)) { + return create(create(l, x, d, rl), rv, rd, rr); + } + if (/* tag */typeof rl !== "number") { + return create(create(l, x, d, rl.l), rl.v, rl.d, create(rl.r, rv, rd, rr)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -121,14 +123,14 @@ var $$Map = { }; }; var is_empty = function (param) { - if (param) { - return false; - } else { + if (/* tag */typeof param === "number") { return true; + } else { + return false; } }; var add = function (x, data, m) { - if (!m) { + if (/* tag */typeof m === "number") { return /* Node */{ l: /* Empty */0, v: x, @@ -173,18 +175,18 @@ var $$Map = { var find = function (x, _param) { while(true) { var param = _param; - if (param) { - var c = Curry._2(funarg.compare, x, param.v); - if (c === 0) { - return param.d; - } - _param = c < 0 ? param.l : param.r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var c = Curry._2(funarg.compare, x, param.v); + if (c === 0) { + return param.d; + } + _param = c < 0 ? param.l : param.r; + continue ; }; }; var find_first_aux = function (_v0, _d0, f, _param) { @@ -192,7 +194,7 @@ var $$Map = { var param = _param; var d0 = _d0; var v0 = _v0; - if (!param) { + if (/* tag */typeof param === "number") { return [ v0, d0 @@ -212,18 +214,18 @@ var $$Map = { var find_first = function (f, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - if (Curry._1(f, v)) { - return find_first_aux(v, param.d, f, param.l); - } - _param = param.r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var v = param.v; + if (Curry._1(f, v)) { + return find_first_aux(v, param.d, f, param.l); + } + _param = param.r; + continue ; }; }; var find_first_opt_aux = function (_v0, _d0, f, _param) { @@ -231,7 +233,7 @@ var $$Map = { var param = _param; var d0 = _d0; var v0 = _v0; - if (!param) { + if (/* tag */typeof param === "number") { return [ v0, d0 @@ -251,7 +253,7 @@ var $$Map = { var find_first_opt = function (f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -267,7 +269,7 @@ var $$Map = { var param = _param; var d0 = _d0; var v0 = _v0; - if (!param) { + if (/* tag */typeof param === "number") { return [ v0, d0 @@ -287,18 +289,18 @@ var $$Map = { var find_last = function (f, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - if (Curry._1(f, v)) { - return find_last_aux(v, param.d, f, param.r); - } - _param = param.l; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var v = param.v; + if (Curry._1(f, v)) { + return find_last_aux(v, param.d, f, param.r); + } + _param = param.l; + continue ; }; }; var find_last_opt_aux = function (_v0, _d0, f, _param) { @@ -306,7 +308,7 @@ var $$Map = { var param = _param; var d0 = _d0; var v0 = _v0; - if (!param) { + if (/* tag */typeof param === "number") { return [ v0, d0 @@ -326,7 +328,7 @@ var $$Map = { var find_last_opt = function (f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -340,7 +342,7 @@ var $$Map = { var find_opt = function (x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var c = Curry._2(funarg.compare, x, param.v); @@ -354,7 +356,7 @@ var $$Map = { var mem = function (x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } var c = Curry._2(funarg.compare, x, param.v); @@ -368,31 +370,31 @@ var $$Map = { var min_binding = function (_param) { while(true) { var param = _param; - if (param) { - var l = param.l; - if (!l) { - return [ - param.v, - param.d - ]; - } - _param = l; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var l = param.l; + if (/* tag */typeof l === "number") { + return [ + param.v, + param.d + ]; + } + _param = l; + continue ; }; }; var min_binding_opt = function (_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var l = param.l; - if (!l) { + if (/* tag */typeof l === "number") { return [ param.v, param.d @@ -405,31 +407,31 @@ var $$Map = { var max_binding = function (_param) { while(true) { var param = _param; - if (param) { - var r = param.r; - if (!r) { - return [ - param.v, - param.d - ]; - } - _param = r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var r = param.r; + if (/* tag */typeof r === "number") { + return [ + param.v, + param.d + ]; + } + _param = r; + continue ; }; }; var max_binding_opt = function (_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var r = param.r; - if (!r) { + if (/* tag */typeof r === "number") { return [ param.v, param.d @@ -440,32 +442,32 @@ var $$Map = { }; }; var remove_min_binding = function (param) { - if (param) { - var l = param.l; - if (l) { - return bal(remove_min_binding(l), param.v, param.d, param.r); - } else { - return param.r; - } + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Invalid_argument", + _1: "Map.remove_min_elt", + Error: new Error() + }; + } + var l = param.l; + if (/* tag */typeof l === "number") { + return param.r; + } else { + return bal(remove_min_binding(l), param.v, param.d, param.r); } - throw { - RE_EXN_ID: "Invalid_argument", - _1: "Map.remove_min_elt", - Error: new Error() - }; }; var merge = function (t1, t2) { - if (!t1) { + if (/* tag */typeof t1 === "number") { return t2; } - if (!t2) { + if (/* tag */typeof t2 === "number") { return t1; } var match = min_binding(t2); return bal(t1, match[0], match[1], remove_min_binding(t2)); }; var remove = function (x, m) { - if (!m) { + if (/* tag */typeof m === "number") { return /* Empty */0; } var r = m.r; @@ -492,62 +494,62 @@ var $$Map = { } }; var update = function (x, f, m) { - if (m) { - var r = m.r; - var d = m.d; - var v = m.v; - var l = m.l; - var c = Curry._2(funarg.compare, x, v); - if (c === 0) { - var data = Curry._1(f, Caml_option.some(d)); - if (data === undefined) { - return merge(l, r); - } - var data$1 = Caml_option.valFromOption(data); - if (d === data$1) { - return m; - } else { - return /* Node */{ - l: l, - v: x, - d: data$1, - r: r, - h: m.h - }; - } + if (/* tag */typeof m === "number") { + var data = Curry._1(f, undefined); + if (data !== undefined) { + return /* Node */{ + l: /* Empty */0, + v: x, + d: Caml_option.valFromOption(data), + r: /* Empty */0, + h: 1 + }; + } else { + return /* Empty */0; } - if (c < 0) { - var ll = update(x, f, l); - if (l === ll) { - return m; - } else { - return bal(ll, v, d, r); - } + } + var r = m.r; + var d = m.d; + var v = m.v; + var l = m.l; + var c = Curry._2(funarg.compare, x, v); + if (c === 0) { + var data$1 = Curry._1(f, Caml_option.some(d)); + if (data$1 === undefined) { + return merge(l, r); } - var rr = update(x, f, r); - if (r === rr) { + var data$2 = Caml_option.valFromOption(data$1); + if (d === data$2) { return m; } else { - return bal(l, v, d, rr); + return /* Node */{ + l: l, + v: x, + d: data$2, + r: r, + h: m.h + }; } } - var data$2 = Curry._1(f, undefined); - if (data$2 !== undefined) { - return /* Node */{ - l: /* Empty */0, - v: x, - d: Caml_option.valFromOption(data$2), - r: /* Empty */0, - h: 1 - }; + if (c < 0) { + var ll = update(x, f, l); + if (l === ll) { + return m; + } else { + return bal(ll, v, d, r); + } + } + var rr = update(x, f, r); + if (r === rr) { + return m; } else { - return /* Empty */0; + return bal(l, v, d, rr); } }; var iter = function (f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } iter(f, param.l); @@ -557,7 +559,7 @@ var $$Map = { }; }; var map = function (f, param) { - if (!param) { + if (/* tag */typeof param === "number") { return /* Empty */0; } var l$p = map(f, param.l); @@ -572,7 +574,7 @@ var $$Map = { }; }; var mapi = function (f, param) { - if (!param) { + if (/* tag */typeof param === "number") { return /* Empty */0; } var v = param.v; @@ -591,7 +593,7 @@ var $$Map = { while(true) { var accu = _accu; var m = _m; - if (!m) { + if (/* tag */typeof m === "number") { return accu; } _accu = Curry._3(f, m.v, m.d, fold(f, m.l, accu)); @@ -602,7 +604,7 @@ var $$Map = { var for_all = function (p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return true; } if (!Curry._2(p, param.v, param.d)) { @@ -618,7 +620,7 @@ var $$Map = { var exists = function (p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } if (Curry._2(p, param.v, param.d)) { @@ -632,28 +634,28 @@ var $$Map = { }; }; var add_min_binding = function (k, x, param) { - if (param) { - return bal(add_min_binding(k, x, param.l), param.v, param.d, param.r); - } else { + if (/* tag */typeof param === "number") { return singleton(k, x); + } else { + return bal(add_min_binding(k, x, param.l), param.v, param.d, param.r); } }; var add_max_binding = function (k, x, param) { - if (param) { - return bal(param.l, param.v, param.d, add_max_binding(k, x, param.r)); - } else { + if (/* tag */typeof param === "number") { return singleton(k, x); + } else { + return bal(param.l, param.v, param.d, add_max_binding(k, x, param.r)); } }; var join = function (l, v, d, r) { - if (!l) { + if (/* tag */typeof l === "number") { return add_min_binding(v, d, r); } - if (!r) { + var lh = l.h; + if (/* tag */typeof r === "number") { return add_max_binding(v, d, l); } var rh = r.h; - var lh = l.h; if (lh > (rh + 2 | 0)) { return bal(l.l, l.v, l.d, join(l.r, v, d, r)); } else if (rh > (lh + 2 | 0)) { @@ -663,10 +665,10 @@ var $$Map = { } }; var concat = function (t1, t2) { - if (!t1) { + if (/* tag */typeof t1 === "number") { return t2; } - if (!t2) { + if (/* tag */typeof t2 === "number") { return t1; } var match = min_binding(t2); @@ -680,7 +682,7 @@ var $$Map = { } }; var split = function (x, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, undefined, @@ -715,42 +717,45 @@ var $$Map = { ]; }; var merge$1 = function (f, s1, s2) { - if (s1) { + if (/* tag */typeof s1 === "number") { + if (/* tag */typeof s2 === "number") { + return /* Empty */0; + } + + } else { var v1 = s1.v; if (s1.h >= height(s2)) { var match = split(v1, s2); return concat_or_join(merge$1(f, s1.l, match[0]), v1, Curry._3(f, v1, Caml_option.some(s1.d), match[1]), merge$1(f, s1.r, match[2])); } - } else if (!s2) { - return /* Empty */0; } - if (s2) { - var v2 = s2.v; - var match$1 = split(v2, s1); - return concat_or_join(merge$1(f, match$1[0], s2.l), v2, Curry._3(f, v2, match$1[1], Caml_option.some(s2.d)), merge$1(f, match$1[2], s2.r)); + if (/* tag */typeof s2 === "number") { + throw { + RE_EXN_ID: "Assert_failure", + _1: [ + "mapLabels.ml", + 393, + 10 + ], + Error: new Error() + }; } - throw { - RE_EXN_ID: "Assert_failure", - _1: [ - "mapLabels.ml", - 393, - 10 - ], - Error: new Error() - }; + var v2 = s2.v; + var match$1 = split(v2, s1); + return concat_or_join(merge$1(f, match$1[0], s2.l), v2, Curry._3(f, v2, match$1[1], Caml_option.some(s2.d)), merge$1(f, match$1[2], s2.r)); }; var union = function (f, s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return s2; } - if (!s2) { + var d1 = s1.d; + var v1 = s1.v; + if (/* tag */typeof s2 === "number") { return s1; } var d2 = s2.d; var v2 = s2.v; - var d1 = s1.d; - var v1 = s1.v; if (s1.h >= s2.h) { var match = split(v1, s2); var d2$1 = match[1]; @@ -773,7 +778,7 @@ var $$Map = { } }; var filter = function (p, m) { - if (!m) { + if (/* tag */typeof m === "number") { return /* Empty */0; } var r = m.r; @@ -794,7 +799,7 @@ var $$Map = { } }; var partition = function (p, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, /* Empty */0 @@ -825,7 +830,7 @@ var $$Map = { while(true) { var e = _e; var m = _m; - if (!m) { + if (/* tag */typeof m === "number") { return e; } _e = /* More */{ @@ -844,14 +849,14 @@ var $$Map = { while(true) { var e2 = _e2; var e1 = _e1; - if (!e1) { - if (e2) { - return -1; - } else { + if (/* tag */typeof e1 === "number") { + if (/* tag */typeof e2 === "number") { return 0; + } else { + return -1; } } - if (!e2) { + if (/* tag */typeof e2 === "number") { return 1; } var c = Curry._2(funarg.compare, e1._0, e2._0); @@ -873,14 +878,14 @@ var $$Map = { while(true) { var e2 = _e2; var e1 = _e1; - if (!e1) { - if (e2) { - return false; - } else { + if (/* tag */typeof e1 === "number") { + if (/* tag */typeof e2 === "number") { return true; + } else { + return false; } } - if (!e2) { + if (/* tag */typeof e2 === "number") { return false; } if (Curry._2(funarg.compare, e1._0, e2._0) !== 0) { @@ -895,17 +900,17 @@ var $$Map = { }; }; var cardinal = function (param) { - if (param) { - return (cardinal(param.l) + 1 | 0) + cardinal(param.r) | 0; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return (cardinal(param.l) + 1 | 0) + cardinal(param.r) | 0; } }; var bindings_aux = function (_accu, _param) { while(true) { var param = _param; var accu = _accu; - if (!param) { + if (/* tag */typeof param === "number") { return accu; } _param = param.l; @@ -964,15 +969,17 @@ var $$Map = { var $$Set = { Make: (function (funarg) { var height = function (param) { - if (param) { - return param.h; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return param.h; } }; var create = function (l, v, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; return /* Node */{ l: l, v: v, @@ -981,25 +988,27 @@ var $$Set = { }; }; var bal = function (l, v, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l.r; - var lv = l.v; - var ll = l.l; - if (height(ll) >= height(lr)) { - return create(ll, lv, create(lr, v, r)); - } - if (lr) { - return create(create(ll, lv, lr.l), lr.v, create(lr.r, v, r)); - } + if (/* tag */typeof l === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", Error: new Error() }; } + var lr = l.r; + var lv = l.v; + var ll = l.l; + if (height(ll) >= height(lr)) { + return create(ll, lv, create(lr, v, r)); + } + if (/* tag */typeof lr !== "number") { + return create(create(ll, lv, lr.l), lr.v, create(lr.r, v, r)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", @@ -1014,22 +1023,22 @@ var $$Set = { h: hl >= hr ? hl + 1 | 0 : hr + 1 | 0 }; } - if (r) { - var rr = r.r; - var rv = r.v; - var rl = r.l; - if (height(rr) >= height(rl)) { - return create(create(l, v, rl), rv, rr); - } - if (rl) { - return create(create(l, v, rl.l), rl.v, create(rl.r, rv, rr)); - } + if (/* tag */typeof r === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", Error: new Error() }; } + var rr = r.r; + var rv = r.v; + var rl = r.l; + if (height(rr) >= height(rl)) { + return create(create(l, v, rl), rv, rr); + } + if (/* tag */typeof rl !== "number") { + return create(create(l, v, rl.l), rl.v, create(rl.r, rv, rr)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", @@ -1037,7 +1046,7 @@ var $$Set = { }; }; var add = function (x, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Node */{ l: /* Empty */0, v: x, @@ -1076,28 +1085,28 @@ var $$Set = { }; }; var add_min_element = function (x, param) { - if (param) { - return bal(add_min_element(x, param.l), param.v, param.r); - } else { + if (/* tag */typeof param === "number") { return singleton(x); + } else { + return bal(add_min_element(x, param.l), param.v, param.r); } }; var add_max_element = function (x, param) { - if (param) { - return bal(param.l, param.v, add_max_element(x, param.r)); - } else { + if (/* tag */typeof param === "number") { return singleton(x); + } else { + return bal(param.l, param.v, add_max_element(x, param.r)); } }; var join = function (l, v, r) { - if (!l) { + if (/* tag */typeof l === "number") { return add_min_element(v, r); } - if (!r) { + var lh = l.h; + if (/* tag */typeof r === "number") { return add_max_element(v, l); } var rh = r.h; - var lh = l.h; if (lh > (rh + 2 | 0)) { return bal(l.l, l.v, join(l.r, v, r)); } else if (rh > (lh + 2 | 0)) { @@ -1109,28 +1118,28 @@ var $$Set = { var min_elt = function (_param) { while(true) { var param = _param; - if (param) { - var l = param.l; - if (!l) { - return param.v; - } - _param = l; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var l = param.l; + if (/* tag */typeof l === "number") { + return param.v; + } + _param = l; + continue ; }; }; var min_elt_opt = function (_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var l = param.l; - if (!l) { + if (/* tag */typeof l === "number") { return Caml_option.some(param.v); } _param = l; @@ -1140,28 +1149,28 @@ var $$Set = { var max_elt = function (_param) { while(true) { var param = _param; - if (param) { - var r = param.r; - if (!r) { - return param.v; - } - _param = r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var r = param.r; + if (/* tag */typeof r === "number") { + return param.v; + } + _param = r; + continue ; }; }; var max_elt_opt = function (_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var r = param.r; - if (!r) { + if (/* tag */typeof r === "number") { return Caml_option.some(param.v); } _param = r; @@ -1169,44 +1178,40 @@ var $$Set = { }; }; var remove_min_elt = function (param) { - if (param) { - var l = param.l; - if (l) { - return bal(remove_min_elt(l), param.v, param.r); - } else { - return param.r; - } + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Invalid_argument", + _1: "Set.remove_min_elt", + Error: new Error() + }; + } + var l = param.l; + if (/* tag */typeof l === "number") { + return param.r; + } else { + return bal(remove_min_elt(l), param.v, param.r); } - throw { - RE_EXN_ID: "Invalid_argument", - _1: "Set.remove_min_elt", - Error: new Error() - }; }; var merge = function (t1, t2) { - if (t1) { - if (t2) { - return bal(t1, min_elt(t2), remove_min_elt(t2)); - } else { - return t1; - } - } else { + if (/* tag */typeof t1 === "number") { return t2; + } else if (/* tag */typeof t2 === "number") { + return t1; + } else { + return bal(t1, min_elt(t2), remove_min_elt(t2)); } }; var concat = function (t1, t2) { - if (t1) { - if (t2) { - return join(t1, min_elt(t2), remove_min_elt(t2)); - } else { - return t1; - } - } else { + if (/* tag */typeof t1 === "number") { return t2; + } else if (/* tag */typeof t2 === "number") { + return t1; + } else { + return join(t1, min_elt(t2), remove_min_elt(t2)); } }; var split = function (x, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, false, @@ -1240,16 +1245,16 @@ var $$Set = { ]; }; var is_empty = function (param) { - if (param) { - return false; - } else { + if (/* tag */typeof param === "number") { return true; + } else { + return false; } }; var mem = function (x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } var c = Curry._2(funarg.compare, x, param.v); @@ -1261,7 +1266,7 @@ var $$Set = { }; }; var remove = function (x, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Empty */0; } var r = t.r; @@ -1287,16 +1292,16 @@ var $$Set = { } }; var union = function (s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return s2; } - if (!s2) { + var h1 = s1.h; + var v1 = s1.v; + if (/* tag */typeof s2 === "number") { return s1; } var h2 = s2.h; var v2 = s2.v; - var h1 = s1.h; - var v1 = s1.v; if (h1 >= h2) { if (h2 === 1) { return add(v2, s1); @@ -1311,10 +1316,10 @@ var $$Set = { return join(union(match$1[0], s2.l), v2, union(match$1[2], s2.r)); }; var inter = function (s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return /* Empty */0; } - if (!s2) { + if (/* tag */typeof s2 === "number") { return /* Empty */0; } var r1 = s1.r; @@ -1329,10 +1334,10 @@ var $$Set = { } }; var diff = function (s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return /* Empty */0; } - if (!s2) { + if (/* tag */typeof s2 === "number") { return s1; } var r1 = s1.r; @@ -1350,7 +1355,7 @@ var $$Set = { while(true) { var e = _e; var s = _s; - if (!s) { + if (/* tag */typeof s === "number") { return e; } _e = /* More */{ @@ -1366,14 +1371,14 @@ var $$Set = { while(true) { var e2 = _e2; var e1 = _e1; - if (!e1) { - if (e2) { - return -1; - } else { + if (/* tag */typeof e1 === "number") { + if (/* tag */typeof e2 === "number") { return 0; + } else { + return -1; } } - if (!e2) { + if (/* tag */typeof e2 === "number") { return 1; } var c = Curry._2(funarg.compare, e1._0, e2._0); @@ -1395,17 +1400,17 @@ var $$Set = { while(true) { var s2 = _s2; var s1 = _s1; - if (!s1) { + if (/* tag */typeof s1 === "number") { return true; } - if (!s2) { + var r1 = s1.r; + var v1 = s1.v; + var l1 = s1.l; + if (/* tag */typeof s2 === "number") { return false; } var r2 = s2.r; var l2 = s2.l; - var r1 = s1.r; - var v1 = s1.v; - var l1 = s1.l; var c = Curry._2(funarg.compare, v1, s2.v); if (c === 0) { if (!subset(l1, l2)) { @@ -1442,7 +1447,7 @@ var $$Set = { var iter = function (f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } iter(f, param.l); @@ -1455,7 +1460,7 @@ var $$Set = { while(true) { var accu = _accu; var s = _s; - if (!s) { + if (/* tag */typeof s === "number") { return accu; } _accu = Curry._2(f, s.v, fold(f, s.l, accu)); @@ -1466,7 +1471,7 @@ var $$Set = { var for_all = function (p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return true; } if (!Curry._1(p, param.v)) { @@ -1482,7 +1487,7 @@ var $$Set = { var exists = function (p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } if (Curry._1(p, param.v)) { @@ -1496,7 +1501,7 @@ var $$Set = { }; }; var filter = function (p, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Empty */0; } var r = t.r; @@ -1516,7 +1521,7 @@ var $$Set = { } }; var partition = function (p, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, /* Empty */0 @@ -1543,17 +1548,17 @@ var $$Set = { } }; var cardinal = function (param) { - if (param) { - return (cardinal(param.l) + 1 | 0) + cardinal(param.r) | 0; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return (cardinal(param.l) + 1 | 0) + cardinal(param.r) | 0; } }; var elements_aux = function (_accu, _param) { while(true) { var param = _param; var accu = _accu; - if (!param) { + if (/* tag */typeof param === "number") { return accu; } _param = param.l; @@ -1570,26 +1575,26 @@ var $$Set = { var find = function (x, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - var c = Curry._2(funarg.compare, x, v); - if (c === 0) { - return v; - } - _param = c < 0 ? param.l : param.r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var v = param.v; + var c = Curry._2(funarg.compare, x, v); + if (c === 0) { + return v; + } + _param = c < 0 ? param.l : param.r; + continue ; }; }; var find_first_aux = function (_v0, f, _param) { while(true) { var param = _param; var v0 = _v0; - if (!param) { + if (/* tag */typeof param === "number") { return v0; } var v = param.v; @@ -1605,25 +1610,25 @@ var $$Set = { var find_first = function (f, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - if (Curry._1(f, v)) { - return find_first_aux(v, f, param.l); - } - _param = param.r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var v = param.v; + if (Curry._1(f, v)) { + return find_first_aux(v, f, param.l); + } + _param = param.r; + continue ; }; }; var find_first_opt_aux = function (_v0, f, _param) { while(true) { var param = _param; var v0 = _v0; - if (!param) { + if (/* tag */typeof param === "number") { return Caml_option.some(v0); } var v = param.v; @@ -1639,7 +1644,7 @@ var $$Set = { var find_first_opt = function (f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -1654,7 +1659,7 @@ var $$Set = { while(true) { var param = _param; var v0 = _v0; - if (!param) { + if (/* tag */typeof param === "number") { return v0; } var v = param.v; @@ -1670,25 +1675,25 @@ var $$Set = { var find_last = function (f, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - if (Curry._1(f, v)) { - return find_last_aux(v, f, param.r); - } - _param = param.l; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var v = param.v; + if (Curry._1(f, v)) { + return find_last_aux(v, f, param.r); + } + _param = param.l; + continue ; }; }; var find_last_opt_aux = function (_v0, f, _param) { while(true) { var param = _param; var v0 = _v0; - if (!param) { + if (/* tag */typeof param === "number") { return Caml_option.some(v0); } var v = param.v; @@ -1704,7 +1709,7 @@ var $$Set = { var find_last_opt = function (f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -1718,7 +1723,7 @@ var $$Set = { var find_opt = function (x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -1738,7 +1743,7 @@ var $$Set = { } }; var map = function (f, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Empty */0; } var r = t.r; diff --git a/lib/es6/queue.js b/lib/es6/queue.js index f81f9b0c91..e203fd819b 100644 --- a/lib/es6/queue.js +++ b/lib/es6/queue.js @@ -25,20 +25,20 @@ function add(x, q) { next: /* Nil */0 }; var last = q.last; - if (last) { - q.length = q.length + 1 | 0; - last.next = cell; - q.last = cell; - } else { + if (/* tag */typeof last === "number") { q.length = 1; q.first = cell; q.last = cell; + return ; } + q.length = q.length + 1 | 0; + last.next = cell; + q.last = cell; } function peek(q) { var match = q.first; - if (match) { + if (/* tag */typeof match !== "number") { return match.content; } throw { @@ -49,22 +49,21 @@ function peek(q) { function take(q) { var match = q.first; - if (match) { - var content = match.content; - var next = match.next; - if (next) { - q.length = q.length - 1 | 0; - q.first = next; - return content; - } else { - clear(q); - return content; - } + if (/* tag */typeof match === "number") { + throw { + RE_EXN_ID: Empty, + Error: new Error() + }; } - throw { - RE_EXN_ID: Empty, - Error: new Error() - }; + var content = match.content; + var next = match.next; + if (/* tag */typeof next === "number") { + clear(q); + return content; + } + q.length = q.length - 1 | 0; + q.first = next; + return content; } function copy(q) { @@ -78,23 +77,23 @@ function copy(q) { while(true) { var cell = _cell; var prev = _prev; - if (cell) { - var next = cell.next; - var res = /* Cons */{ - content: cell.content, - next: /* Nil */0 - }; - if (prev) { - prev.next = res; - } else { - q_res.first = res; - } - _cell = next; - _prev = res; - continue ; + if (/* tag */typeof cell === "number") { + q_res.last = prev; + return q_res; + } + var next = cell.next; + var res = /* Cons */{ + content: cell.content, + next: /* Nil */0 + }; + if (/* tag */typeof prev === "number") { + q_res.first = res; + } else { + prev.next = res; } - q_res.last = prev; - return q_res; + _cell = next; + _prev = res; + continue ; }; } @@ -110,7 +109,7 @@ function iter(f, q) { var _cell = q.first; while(true) { var cell = _cell; - if (!cell) { + if (/* tag */typeof cell === "number") { return ; } var next = cell.next; @@ -126,7 +125,7 @@ function fold(f, accu, q) { while(true) { var cell = _cell; var accu$1 = _accu; - if (!cell) { + if (/* tag */typeof cell === "number") { return accu$1; } var next = cell.next; @@ -142,17 +141,16 @@ function transfer(q1, q2) { return ; } var last = q2.last; - if (last) { - q2.length = q2.length + q1.length | 0; - last.next = q1.first; - q2.last = q1.last; - return clear(q1); - } else { + if (/* tag */typeof last === "number") { q2.length = q1.length; q2.first = q1.first; q2.last = q1.last; return clear(q1); } + q2.length = q2.length + q1.length | 0; + last.next = q1.first; + q2.last = q1.last; + clear(q1); } var push = add; diff --git a/lib/es6/set.js b/lib/es6/set.js index 6a83dfcca1..b55bc25bec 100644 --- a/lib/es6/set.js +++ b/lib/es6/set.js @@ -6,15 +6,17 @@ import * as Caml_option from "./caml_option.js"; function Make(funarg) { var height = function (param) { - if (param) { - return param.h; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return param.h; } }; var create = function (l, v, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; return /* Node */{ l: l, v: v, @@ -23,25 +25,27 @@ function Make(funarg) { }; }; var bal = function (l, v, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l.r; - var lv = l.v; - var ll = l.l; - if (height(ll) >= height(lr)) { - return create(ll, lv, create(lr, v, r)); - } - if (lr) { - return create(create(ll, lv, lr.l), lr.v, create(lr.r, v, r)); - } + if (/* tag */typeof l === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", Error: new Error() }; } + var lr = l.r; + var lv = l.v; + var ll = l.l; + if (height(ll) >= height(lr)) { + return create(ll, lv, create(lr, v, r)); + } + if (/* tag */typeof lr !== "number") { + return create(create(ll, lv, lr.l), lr.v, create(lr.r, v, r)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", @@ -56,22 +60,22 @@ function Make(funarg) { h: hl >= hr ? hl + 1 | 0 : hr + 1 | 0 }; } - if (r) { - var rr = r.r; - var rv = r.v; - var rl = r.l; - if (height(rr) >= height(rl)) { - return create(create(l, v, rl), rv, rr); - } - if (rl) { - return create(create(l, v, rl.l), rl.v, create(rl.r, rv, rr)); - } + if (/* tag */typeof r === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", Error: new Error() }; } + var rr = r.r; + var rv = r.v; + var rl = r.l; + if (height(rr) >= height(rl)) { + return create(create(l, v, rl), rv, rr); + } + if (/* tag */typeof rl !== "number") { + return create(create(l, v, rl.l), rl.v, create(rl.r, rv, rr)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", @@ -79,7 +83,7 @@ function Make(funarg) { }; }; var add = function (x, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Node */{ l: /* Empty */0, v: x, @@ -118,28 +122,28 @@ function Make(funarg) { }; }; var add_min_element = function (x, param) { - if (param) { - return bal(add_min_element(x, param.l), param.v, param.r); - } else { + if (/* tag */typeof param === "number") { return singleton(x); + } else { + return bal(add_min_element(x, param.l), param.v, param.r); } }; var add_max_element = function (x, param) { - if (param) { - return bal(param.l, param.v, add_max_element(x, param.r)); - } else { + if (/* tag */typeof param === "number") { return singleton(x); + } else { + return bal(param.l, param.v, add_max_element(x, param.r)); } }; var join = function (l, v, r) { - if (!l) { + if (/* tag */typeof l === "number") { return add_min_element(v, r); } - if (!r) { + var lh = l.h; + if (/* tag */typeof r === "number") { return add_max_element(v, l); } var rh = r.h; - var lh = l.h; if (lh > (rh + 2 | 0)) { return bal(l.l, l.v, join(l.r, v, r)); } else if (rh > (lh + 2 | 0)) { @@ -151,28 +155,28 @@ function Make(funarg) { var min_elt = function (_param) { while(true) { var param = _param; - if (param) { - var l = param.l; - if (!l) { - return param.v; - } - _param = l; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var l = param.l; + if (/* tag */typeof l === "number") { + return param.v; + } + _param = l; + continue ; }; }; var min_elt_opt = function (_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var l = param.l; - if (!l) { + if (/* tag */typeof l === "number") { return Caml_option.some(param.v); } _param = l; @@ -182,28 +186,28 @@ function Make(funarg) { var max_elt = function (_param) { while(true) { var param = _param; - if (param) { - var r = param.r; - if (!r) { - return param.v; - } - _param = r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var r = param.r; + if (/* tag */typeof r === "number") { + return param.v; + } + _param = r; + continue ; }; }; var max_elt_opt = function (_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var r = param.r; - if (!r) { + if (/* tag */typeof r === "number") { return Caml_option.some(param.v); } _param = r; @@ -211,33 +215,31 @@ function Make(funarg) { }; }; var remove_min_elt = function (param) { - if (param) { - var l = param.l; - if (l) { - return bal(remove_min_elt(l), param.v, param.r); - } else { - return param.r; - } + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Invalid_argument", + _1: "Set.remove_min_elt", + Error: new Error() + }; + } + var l = param.l; + if (/* tag */typeof l === "number") { + return param.r; + } else { + return bal(remove_min_elt(l), param.v, param.r); } - throw { - RE_EXN_ID: "Invalid_argument", - _1: "Set.remove_min_elt", - Error: new Error() - }; }; var concat = function (t1, t2) { - if (t1) { - if (t2) { - return join(t1, min_elt(t2), remove_min_elt(t2)); - } else { - return t1; - } - } else { + if (/* tag */typeof t1 === "number") { return t2; + } else if (/* tag */typeof t2 === "number") { + return t1; + } else { + return join(t1, min_elt(t2), remove_min_elt(t2)); } }; var split = function (x, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, false, @@ -271,16 +273,16 @@ function Make(funarg) { ]; }; var is_empty = function (param) { - if (param) { - return false; - } else { + if (/* tag */typeof param === "number") { return true; + } else { + return false; } }; var mem = function (x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } var c = Curry._2(funarg.compare, x, param.v); @@ -292,7 +294,7 @@ function Make(funarg) { }; }; var remove = function (x, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Empty */0; } var r = t.r; @@ -300,14 +302,12 @@ function Make(funarg) { var l = t.l; var c = Curry._2(funarg.compare, x, v); if (c === 0) { - if (l) { - if (r) { - return bal(l, min_elt(r), remove_min_elt(r)); - } else { - return l; - } - } else { + if (/* tag */typeof l === "number") { return r; + } else if (/* tag */typeof r === "number") { + return l; + } else { + return bal(l, min_elt(r), remove_min_elt(r)); } } if (c < 0) { @@ -326,16 +326,16 @@ function Make(funarg) { } }; var union = function (s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return s2; } - if (!s2) { + var h1 = s1.h; + var v1 = s1.v; + if (/* tag */typeof s2 === "number") { return s1; } var h2 = s2.h; var v2 = s2.v; - var h1 = s1.h; - var v1 = s1.v; if (h1 >= h2) { if (h2 === 1) { return add(v2, s1); @@ -350,10 +350,10 @@ function Make(funarg) { return join(union(match$1[0], s2.l), v2, union(match$1[2], s2.r)); }; var inter = function (s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return /* Empty */0; } - if (!s2) { + if (/* tag */typeof s2 === "number") { return /* Empty */0; } var r1 = s1.r; @@ -368,10 +368,10 @@ function Make(funarg) { } }; var diff = function (s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return /* Empty */0; } - if (!s2) { + if (/* tag */typeof s2 === "number") { return s1; } var r1 = s1.r; @@ -389,7 +389,7 @@ function Make(funarg) { while(true) { var e = _e; var s = _s; - if (!s) { + if (/* tag */typeof s === "number") { return e; } _e = /* More */{ @@ -407,14 +407,14 @@ function Make(funarg) { while(true) { var e2 = _e2; var e1 = _e1; - if (!e1) { - if (e2) { - return -1; - } else { + if (/* tag */typeof e1 === "number") { + if (/* tag */typeof e2 === "number") { return 0; + } else { + return -1; } } - if (!e2) { + if (/* tag */typeof e2 === "number") { return 1; } var c = Curry._2(funarg.compare, e1._0, e2._0); @@ -433,17 +433,17 @@ function Make(funarg) { while(true) { var s2 = _s2; var s1 = _s1; - if (!s1) { + if (/* tag */typeof s1 === "number") { return true; } - if (!s2) { + var r1 = s1.r; + var v1 = s1.v; + var l1 = s1.l; + if (/* tag */typeof s2 === "number") { return false; } var r2 = s2.r; var l2 = s2.l; - var r1 = s1.r; - var v1 = s1.v; - var l1 = s1.l; var c = Curry._2(funarg.compare, v1, s2.v); if (c === 0) { if (!subset(l1, l2)) { @@ -480,7 +480,7 @@ function Make(funarg) { var iter = function (f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } iter(f, param.l); @@ -493,7 +493,7 @@ function Make(funarg) { while(true) { var accu = _accu; var s = _s; - if (!s) { + if (/* tag */typeof s === "number") { return accu; } _accu = Curry._2(f, s.v, fold(f, s.l, accu)); @@ -504,7 +504,7 @@ function Make(funarg) { var for_all = function (p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return true; } if (!Curry._1(p, param.v)) { @@ -520,7 +520,7 @@ function Make(funarg) { var exists = function (p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } if (Curry._1(p, param.v)) { @@ -534,7 +534,7 @@ function Make(funarg) { }; }; var filter = function (p, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Empty */0; } var r = t.r; @@ -554,7 +554,7 @@ function Make(funarg) { } }; var partition = function (p, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, /* Empty */0 @@ -581,17 +581,17 @@ function Make(funarg) { } }; var cardinal = function (param) { - if (param) { - return (cardinal(param.l) + 1 | 0) + cardinal(param.r) | 0; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return (cardinal(param.l) + 1 | 0) + cardinal(param.r) | 0; } }; var elements_aux = function (_accu, _param) { while(true) { var param = _param; var accu = _accu; - if (!param) { + if (/* tag */typeof param === "number") { return accu; } _param = param.l; @@ -608,58 +608,58 @@ function Make(funarg) { var find = function (x, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - var c = Curry._2(funarg.compare, x, v); - if (c === 0) { - return v; - } - _param = c < 0 ? param.l : param.r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var v = param.v; + var c = Curry._2(funarg.compare, x, v); + if (c === 0) { + return v; + } + _param = c < 0 ? param.l : param.r; + continue ; }; }; var find_first = function (f, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - if (Curry._1(f, v)) { - var _v0 = v; - var _param$1 = param.l; - while(true) { - var param$1 = _param$1; - var v0 = _v0; - if (!param$1) { - return v0; - } - var v$1 = param$1.v; - if (Curry._1(f, v$1)) { - _param$1 = param$1.l; - _v0 = v$1; - continue ; - } - _param$1 = param$1.r; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + var v = param.v; + if (Curry._1(f, v)) { + var _v0 = v; + var _param$1 = param.l; + while(true) { + var param$1 = _param$1; + var v0 = _v0; + if (/* tag */typeof param$1 === "number") { + return v0; + } + var v$1 = param$1.v; + if (Curry._1(f, v$1)) { + _param$1 = param$1.l; + _v0 = v$1; continue ; - }; - } - _param = param.r; - continue ; + } + _param$1 = param$1.r; + continue ; + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + _param = param.r; + continue ; }; }; var find_first_opt = function (f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -669,7 +669,7 @@ function Make(funarg) { while(true) { var param$1 = _param$1; var v0 = _v0; - if (!param$1) { + if (/* tag */typeof param$1 === "number") { return Caml_option.some(v0); } var v$1 = param$1.v; @@ -689,40 +689,40 @@ function Make(funarg) { var find_last = function (f, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - if (Curry._1(f, v)) { - var _v0 = v; - var _param$1 = param.r; - while(true) { - var param$1 = _param$1; - var v0 = _v0; - if (!param$1) { - return v0; - } - var v$1 = param$1.v; - if (Curry._1(f, v$1)) { - _param$1 = param$1.r; - _v0 = v$1; - continue ; - } - _param$1 = param$1.l; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + var v = param.v; + if (Curry._1(f, v)) { + var _v0 = v; + var _param$1 = param.r; + while(true) { + var param$1 = _param$1; + var v0 = _v0; + if (/* tag */typeof param$1 === "number") { + return v0; + } + var v$1 = param$1.v; + if (Curry._1(f, v$1)) { + _param$1 = param$1.r; + _v0 = v$1; continue ; - }; - } - _param = param.l; - continue ; + } + _param$1 = param$1.l; + continue ; + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + _param = param.l; + continue ; }; }; var find_last_opt = function (f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -732,7 +732,7 @@ function Make(funarg) { while(true) { var param$1 = _param$1; var v0 = _v0; - if (!param$1) { + if (/* tag */typeof param$1 === "number") { return Caml_option.some(v0); } var v$1 = param$1.v; @@ -752,7 +752,7 @@ function Make(funarg) { var find_opt = function (x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -765,7 +765,7 @@ function Make(funarg) { }; }; var map = function (f, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Empty */0; } var r = t.r; diff --git a/lib/es6/setLabels.js b/lib/es6/setLabels.js index 0b4f25ce72..cac3e77dc1 100644 --- a/lib/es6/setLabels.js +++ b/lib/es6/setLabels.js @@ -6,15 +6,17 @@ import * as Caml_option from "./caml_option.js"; function Make(Ord) { var height = function (param) { - if (param) { - return param.h; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return param.h; } }; var create = function (l, v, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; return /* Node */{ l: l, v: v, @@ -23,25 +25,27 @@ function Make(Ord) { }; }; var bal = function (l, v, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l.r; - var lv = l.v; - var ll = l.l; - if (height(ll) >= height(lr)) { - return create(ll, lv, create(lr, v, r)); - } - if (lr) { - return create(create(ll, lv, lr.l), lr.v, create(lr.r, v, r)); - } + if (/* tag */typeof l === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", Error: new Error() }; } + var lr = l.r; + var lv = l.v; + var ll = l.l; + if (height(ll) >= height(lr)) { + return create(ll, lv, create(lr, v, r)); + } + if (/* tag */typeof lr !== "number") { + return create(create(ll, lv, lr.l), lr.v, create(lr.r, v, r)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", @@ -56,22 +60,22 @@ function Make(Ord) { h: hl >= hr ? hl + 1 | 0 : hr + 1 | 0 }; } - if (r) { - var rr = r.r; - var rv = r.v; - var rl = r.l; - if (height(rr) >= height(rl)) { - return create(create(l, v, rl), rv, rr); - } - if (rl) { - return create(create(l, v, rl.l), rl.v, create(rl.r, rv, rr)); - } + if (/* tag */typeof r === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", Error: new Error() }; } + var rr = r.r; + var rv = r.v; + var rl = r.l; + if (height(rr) >= height(rl)) { + return create(create(l, v, rl), rv, rr); + } + if (/* tag */typeof rl !== "number") { + return create(create(l, v, rl.l), rl.v, create(rl.r, rv, rr)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", @@ -79,7 +83,7 @@ function Make(Ord) { }; }; var add = function (x, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Node */{ l: /* Empty */0, v: x, @@ -118,28 +122,28 @@ function Make(Ord) { }; }; var add_min_element = function (x, param) { - if (param) { - return bal(add_min_element(x, param.l), param.v, param.r); - } else { + if (/* tag */typeof param === "number") { return singleton(x); + } else { + return bal(add_min_element(x, param.l), param.v, param.r); } }; var add_max_element = function (x, param) { - if (param) { - return bal(param.l, param.v, add_max_element(x, param.r)); - } else { + if (/* tag */typeof param === "number") { return singleton(x); + } else { + return bal(param.l, param.v, add_max_element(x, param.r)); } }; var join = function (l, v, r) { - if (!l) { + if (/* tag */typeof l === "number") { return add_min_element(v, r); } - if (!r) { + var lh = l.h; + if (/* tag */typeof r === "number") { return add_max_element(v, l); } var rh = r.h; - var lh = l.h; if (lh > (rh + 2 | 0)) { return bal(l.l, l.v, join(l.r, v, r)); } else if (rh > (lh + 2 | 0)) { @@ -151,28 +155,28 @@ function Make(Ord) { var min_elt = function (_param) { while(true) { var param = _param; - if (param) { - var l = param.l; - if (!l) { - return param.v; - } - _param = l; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var l = param.l; + if (/* tag */typeof l === "number") { + return param.v; + } + _param = l; + continue ; }; }; var min_elt_opt = function (_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var l = param.l; - if (!l) { + if (/* tag */typeof l === "number") { return Caml_option.some(param.v); } _param = l; @@ -182,28 +186,28 @@ function Make(Ord) { var max_elt = function (_param) { while(true) { var param = _param; - if (param) { - var r = param.r; - if (!r) { - return param.v; - } - _param = r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var r = param.r; + if (/* tag */typeof r === "number") { + return param.v; + } + _param = r; + continue ; }; }; var max_elt_opt = function (_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var r = param.r; - if (!r) { + if (/* tag */typeof r === "number") { return Caml_option.some(param.v); } _param = r; @@ -211,44 +215,40 @@ function Make(Ord) { }; }; var remove_min_elt = function (param) { - if (param) { - var l = param.l; - if (l) { - return bal(remove_min_elt(l), param.v, param.r); - } else { - return param.r; - } + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Invalid_argument", + _1: "Set.remove_min_elt", + Error: new Error() + }; + } + var l = param.l; + if (/* tag */typeof l === "number") { + return param.r; + } else { + return bal(remove_min_elt(l), param.v, param.r); } - throw { - RE_EXN_ID: "Invalid_argument", - _1: "Set.remove_min_elt", - Error: new Error() - }; }; var merge = function (t1, t2) { - if (t1) { - if (t2) { - return bal(t1, min_elt(t2), remove_min_elt(t2)); - } else { - return t1; - } - } else { + if (/* tag */typeof t1 === "number") { return t2; + } else if (/* tag */typeof t2 === "number") { + return t1; + } else { + return bal(t1, min_elt(t2), remove_min_elt(t2)); } }; var concat = function (t1, t2) { - if (t1) { - if (t2) { - return join(t1, min_elt(t2), remove_min_elt(t2)); - } else { - return t1; - } - } else { + if (/* tag */typeof t1 === "number") { return t2; + } else if (/* tag */typeof t2 === "number") { + return t1; + } else { + return join(t1, min_elt(t2), remove_min_elt(t2)); } }; var split = function (x, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, false, @@ -282,16 +282,16 @@ function Make(Ord) { ]; }; var is_empty = function (param) { - if (param) { - return false; - } else { + if (/* tag */typeof param === "number") { return true; + } else { + return false; } }; var mem = function (x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } var c = Curry._2(Ord.compare, x, param.v); @@ -303,7 +303,7 @@ function Make(Ord) { }; }; var remove = function (x, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Empty */0; } var r = t.r; @@ -329,16 +329,16 @@ function Make(Ord) { } }; var union = function (s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return s2; } - if (!s2) { + var h1 = s1.h; + var v1 = s1.v; + if (/* tag */typeof s2 === "number") { return s1; } var h2 = s2.h; var v2 = s2.v; - var h1 = s1.h; - var v1 = s1.v; if (h1 >= h2) { if (h2 === 1) { return add(v2, s1); @@ -353,10 +353,10 @@ function Make(Ord) { return join(union(match$1[0], s2.l), v2, union(match$1[2], s2.r)); }; var inter = function (s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return /* Empty */0; } - if (!s2) { + if (/* tag */typeof s2 === "number") { return /* Empty */0; } var r1 = s1.r; @@ -371,10 +371,10 @@ function Make(Ord) { } }; var diff = function (s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return /* Empty */0; } - if (!s2) { + if (/* tag */typeof s2 === "number") { return s1; } var r1 = s1.r; @@ -392,7 +392,7 @@ function Make(Ord) { while(true) { var e = _e; var s = _s; - if (!s) { + if (/* tag */typeof s === "number") { return e; } _e = /* More */{ @@ -408,14 +408,14 @@ function Make(Ord) { while(true) { var e2 = _e2; var e1 = _e1; - if (!e1) { - if (e2) { - return -1; - } else { + if (/* tag */typeof e1 === "number") { + if (/* tag */typeof e2 === "number") { return 0; + } else { + return -1; } } - if (!e2) { + if (/* tag */typeof e2 === "number") { return 1; } var c = Curry._2(Ord.compare, e1._0, e2._0); @@ -437,17 +437,17 @@ function Make(Ord) { while(true) { var s2 = _s2; var s1 = _s1; - if (!s1) { + if (/* tag */typeof s1 === "number") { return true; } - if (!s2) { + var r1 = s1.r; + var v1 = s1.v; + var l1 = s1.l; + if (/* tag */typeof s2 === "number") { return false; } var r2 = s2.r; var l2 = s2.l; - var r1 = s1.r; - var v1 = s1.v; - var l1 = s1.l; var c = Curry._2(Ord.compare, v1, s2.v); if (c === 0) { if (!subset(l1, l2)) { @@ -484,7 +484,7 @@ function Make(Ord) { var iter = function (f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } iter(f, param.l); @@ -497,7 +497,7 @@ function Make(Ord) { while(true) { var accu = _accu; var s = _s; - if (!s) { + if (/* tag */typeof s === "number") { return accu; } _accu = Curry._2(f, s.v, fold(f, s.l, accu)); @@ -508,7 +508,7 @@ function Make(Ord) { var for_all = function (p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return true; } if (!Curry._1(p, param.v)) { @@ -524,7 +524,7 @@ function Make(Ord) { var exists = function (p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } if (Curry._1(p, param.v)) { @@ -538,7 +538,7 @@ function Make(Ord) { }; }; var filter = function (p, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Empty */0; } var r = t.r; @@ -558,7 +558,7 @@ function Make(Ord) { } }; var partition = function (p, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, /* Empty */0 @@ -585,17 +585,17 @@ function Make(Ord) { } }; var cardinal = function (param) { - if (param) { - return (cardinal(param.l) + 1 | 0) + cardinal(param.r) | 0; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return (cardinal(param.l) + 1 | 0) + cardinal(param.r) | 0; } }; var elements_aux = function (_accu, _param) { while(true) { var param = _param; var accu = _accu; - if (!param) { + if (/* tag */typeof param === "number") { return accu; } _param = param.l; @@ -612,26 +612,26 @@ function Make(Ord) { var find = function (x, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - var c = Curry._2(Ord.compare, x, v); - if (c === 0) { - return v; - } - _param = c < 0 ? param.l : param.r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var v = param.v; + var c = Curry._2(Ord.compare, x, v); + if (c === 0) { + return v; + } + _param = c < 0 ? param.l : param.r; + continue ; }; }; var find_first_aux = function (_v0, f, _param) { while(true) { var param = _param; var v0 = _v0; - if (!param) { + if (/* tag */typeof param === "number") { return v0; } var v = param.v; @@ -647,25 +647,25 @@ function Make(Ord) { var find_first = function (f, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - if (Curry._1(f, v)) { - return find_first_aux(v, f, param.l); - } - _param = param.r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var v = param.v; + if (Curry._1(f, v)) { + return find_first_aux(v, f, param.l); + } + _param = param.r; + continue ; }; }; var find_first_opt_aux = function (_v0, f, _param) { while(true) { var param = _param; var v0 = _v0; - if (!param) { + if (/* tag */typeof param === "number") { return Caml_option.some(v0); } var v = param.v; @@ -681,7 +681,7 @@ function Make(Ord) { var find_first_opt = function (f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -696,7 +696,7 @@ function Make(Ord) { while(true) { var param = _param; var v0 = _v0; - if (!param) { + if (/* tag */typeof param === "number") { return v0; } var v = param.v; @@ -712,25 +712,25 @@ function Make(Ord) { var find_last = function (f, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - if (Curry._1(f, v)) { - return find_last_aux(v, f, param.r); - } - _param = param.l; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var v = param.v; + if (Curry._1(f, v)) { + return find_last_aux(v, f, param.r); + } + _param = param.l; + continue ; }; }; var find_last_opt_aux = function (_v0, f, _param) { while(true) { var param = _param; var v0 = _v0; - if (!param) { + if (/* tag */typeof param === "number") { return Caml_option.some(v0); } var v = param.v; @@ -746,7 +746,7 @@ function Make(Ord) { var find_last_opt = function (f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -760,7 +760,7 @@ function Make(Ord) { var find_opt = function (x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -780,7 +780,7 @@ function Make(Ord) { } }; var map = function (f, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Empty */0; } var r = t.r; diff --git a/lib/es6/stream.js b/lib/es6/stream.js index c1eb722914..4df812b1ae 100644 --- a/lib/es6/stream.js +++ b/lib/es6/stream.js @@ -31,7 +31,7 @@ function data(param) { function get_data(count, _d) { while(true) { var d = _d; - if (typeof d === "number") { + if (/* tag */typeof d === "number") { return d; } switch (d.TAG | 0) { @@ -40,7 +40,7 @@ function get_data(count, _d) { case /* Sapp */1 : var d2 = d._1; var match = get_data(count, d._0); - if (typeof match === "number") { + if (/* tag */typeof match === "number") { _d = d2; continue ; } @@ -102,7 +102,7 @@ function get_data(count, _d) { function peek_data(s) { while(true) { var f = s.data; - if (typeof f === "number") { + if (/* tag */typeof f === "number") { return ; } switch (f.TAG | 0) { @@ -110,7 +110,7 @@ function peek_data(s) { return Caml_option.some(f._0); case /* Sapp */1 : var d = get_data(s.count, s.data); - if (typeof d === "number") { + if (/* tag */typeof d === "number") { return ; } if (d.TAG === /* Scons */0) { @@ -153,7 +153,7 @@ function peek(s) { function junk_data(s) { while(true) { var g = s.data; - if (typeof g !== "number") { + if (/* tag */typeof g !== "number") { switch (g.TAG | 0) { case /* Scons */0 : s.count = s.count + 1 | 0; @@ -428,7 +428,7 @@ function slazy(f) { } function dump_data(f, param) { - if (typeof param === "number") { + if (/* tag */typeof param === "number") { console.log("Sempty"); return ; } diff --git a/lib/js/caml_module.js b/lib/js/caml_module.js index db178b5731..f6f712ed81 100644 --- a/lib/js/caml_module.js +++ b/lib/js/caml_module.js @@ -11,7 +11,7 @@ function init_mod(loc, shape) { }; }; var loop = function (shape, struct_, idx) { - if (typeof shape === "number") { + if (/* tag */typeof shape === "number") { switch (shape) { case /* Function */0 : struct_[idx] = undef_module; @@ -56,7 +56,7 @@ function init_mod(loc, shape) { function update_mod(shape, o, n) { var aux = function (shape, o, n, parent, i) { - if (typeof shape === "number") { + if (/* tag */typeof shape === "number") { switch (shape) { case /* Function */0 : parent[i] = n; @@ -79,7 +79,7 @@ function update_mod(shape, o, n) { return ; } }; - if (typeof shape === "number") { + if (/* tag */typeof shape === "number") { throw { RE_EXN_ID: "Assert_failure", _1: [ diff --git a/lib/js/hashtbl.js b/lib/js/hashtbl.js index 8c52241161..81700f257a 100644 --- a/lib/js/hashtbl.js +++ b/lib/js/hashtbl.js @@ -92,7 +92,7 @@ function reset(h) { } function copy_bucketlist(param) { - if (!param) { + if (/* tag */typeof param === "number") { return /* Empty */0; } var key = param.key; @@ -102,7 +102,7 @@ function copy_bucketlist(param) { while(true) { var param = _param; var prec = _prec; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var key = param.key; @@ -113,9 +113,7 @@ function copy_bucketlist(param) { data: data, next: next }; - if (prec) { - prec.next = r; - } else { + if (/* tag */typeof prec === "number") { throw { RE_EXN_ID: "Assert_failure", _1: [ @@ -126,6 +124,7 @@ function copy_bucketlist(param) { Error: new Error() }; } + prec.next = r; _param = next; _prec = r; continue ; @@ -167,7 +166,7 @@ function resize(indexfun, h) { var insert_bucket = function (_cell) { while(true) { var cell = _cell; - if (!cell) { + if (/* tag */typeof cell === "number") { return ; } var key = cell.key; @@ -180,10 +179,10 @@ function resize(indexfun, h) { }); var nidx = Curry._2(indexfun, h, key); var tail = Caml_array.get(ndata_tail, nidx); - if (tail) { - tail.next = cell$1; - } else { + if (/* tag */typeof tail === "number") { Caml_array.set(ndata, nidx, cell$1); + } else { + tail.next = cell$1; } Caml_array.set(ndata_tail, nidx, cell$1); _cell = next; @@ -198,7 +197,7 @@ function resize(indexfun, h) { } for(var i$1 = 0; i$1 < nsize; ++i$1){ var tail = Caml_array.get(ndata_tail, i$1); - if (tail) { + if (/* tag */typeof tail !== "number") { tail.next = /* Empty */0; } @@ -231,18 +230,18 @@ function remove(h, key) { while(true) { var c = _c; var prec = _prec; - if (!c) { + if (/* tag */typeof c === "number") { return ; } var k = c.key; var next = c.next; if (Caml_obj.equal(k, key)) { h.size = h.size - 1 | 0; - if (prec) { + if (/* tag */typeof prec === "number") { + return Caml_array.set(h.data, i, next); + } else { prec.next = next; return ; - } else { - return Caml_array.set(h.data, i, next); } } _c = next; @@ -253,66 +252,66 @@ function remove(h, key) { function find(h, key) { var match = Caml_array.get(h.data, key_index(h, key)); - if (match) { - var k1 = match.key; - var d1 = match.data; - var next1 = match.next; - if (Caml_obj.equal(key, k1)) { - return d1; - } - if (next1) { - var k2 = next1.key; - var d2 = next1.data; - var next2 = next1.next; - if (Caml_obj.equal(key, k2)) { - return d2; - } - if (next2) { - var k3 = next2.key; - var d3 = next2.data; - var next3 = next2.next; - if (Caml_obj.equal(key, k3)) { - return d3; - } else { - var _param = next3; - while(true) { - var param = _param; - if (param) { - var k = param.key; - var data = param.data; - var next = param.next; - if (Caml_obj.equal(key, k)) { - return data; - } - _param = next; - continue ; - } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; - }; - } - } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; - } + if (/* tag */typeof match === "number") { throw { RE_EXN_ID: "Not_found", Error: new Error() }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var k1 = match.key; + var d1 = match.data; + var next1 = match.next; + if (Caml_obj.equal(key, k1)) { + return d1; + } + if (/* tag */typeof next1 === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + var k2 = next1.key; + var d2 = next1.data; + var next2 = next1.next; + if (Caml_obj.equal(key, k2)) { + return d2; + } + if (/* tag */typeof next2 === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + var k3 = next2.key; + var d3 = next2.data; + var next3 = next2.next; + if (Caml_obj.equal(key, k3)) { + return d3; + } else { + var _param = next3; + while(true) { + var param = _param; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + var k = param.key; + var data = param.data; + var next = param.next; + if (Caml_obj.equal(key, k)) { + return data; + } + _param = next; + continue ; + }; + } } function find_opt(h, key) { var match = Caml_array.get(h.data, key_index(h, key)); - if (!match) { + if (/* tag */typeof match === "number") { return ; } var k1 = match.key; @@ -321,7 +320,7 @@ function find_opt(h, key) { if (Caml_obj.equal(key, k1)) { return Caml_option.some(d1); } - if (!next1) { + if (/* tag */typeof next1 === "number") { return ; } var k2 = next1.key; @@ -330,7 +329,7 @@ function find_opt(h, key) { if (Caml_obj.equal(key, k2)) { return Caml_option.some(d2); } - if (!next2) { + if (/* tag */typeof next2 === "number") { return ; } var k3 = next2.key; @@ -342,7 +341,7 @@ function find_opt(h, key) { var _param = next3; while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var k = param.key; @@ -361,7 +360,7 @@ function find_all(h, key) { var find_in_bucket = function (_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return /* [] */0; } var k = param.key; @@ -383,7 +382,7 @@ function find_all(h, key) { function replace_bucket(key, data, _slot) { while(true) { var slot = _slot; - if (!slot) { + if (/* tag */typeof slot === "number") { return true; } var k = slot.key; @@ -421,7 +420,7 @@ function mem(h, key) { var _param = Caml_array.get(h.data, key_index(h, key)); while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } var k = param.key; @@ -438,7 +437,7 @@ function iter(f, h) { var do_bucket = function (_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var key = param.key; @@ -477,12 +476,12 @@ function filter_map_inplace_bucket(f, h, i, _prec, _slot) { while(true) { var slot = _slot; var prec = _prec; - if (!slot) { - if (prec) { + if (/* tag */typeof slot === "number") { + if (/* tag */typeof prec === "number") { + return Caml_array.set(h.data, i, /* Empty */0); + } else { prec.next = /* Empty */0; return ; - } else { - return Caml_array.set(h.data, i, /* Empty */0); } } var key = slot.key; @@ -490,10 +489,10 @@ function filter_map_inplace_bucket(f, h, i, _prec, _slot) { var next = slot.next; var data$1 = Curry._2(f, key, data); if (data$1 !== undefined) { - if (prec) { - prec.next = slot; - } else { + if (/* tag */typeof prec === "number") { Caml_array.set(h.data, i, slot); + } else { + prec.next = slot; } slot.data = Caml_option.valFromOption(data$1); _slot = next; @@ -532,7 +531,7 @@ function fold(f, h, init) { while(true) { var accu = _accu; var b = _b; - if (!b) { + if (/* tag */typeof b === "number") { return accu; } var key = b.key; @@ -571,7 +570,7 @@ function bucket_length(_accu, _param) { while(true) { var param = _param; var accu = _accu; - if (!param) { + if (/* tag */typeof param === "number") { return accu; } var next = param.next; @@ -623,18 +622,18 @@ function MakeSeeded(H) { while(true) { var c = _c; var prec = _prec; - if (!c) { + if (/* tag */typeof c === "number") { return ; } var k = c.key; var next = c.next; if (Curry._2(H.equal, k, key)) { h.size = h.size - 1 | 0; - if (prec) { + if (/* tag */typeof prec === "number") { + return Caml_array.set(h.data, i, next); + } else { prec.next = next; return ; - } else { - return Caml_array.set(h.data, i, next); } } _c = next; @@ -644,65 +643,65 @@ function MakeSeeded(H) { }; var find = function (h, key) { var match = Caml_array.get(h.data, key_index(h, key)); - if (match) { - var k1 = match.key; - var d1 = match.data; - var next1 = match.next; - if (Curry._2(H.equal, key, k1)) { - return d1; - } - if (next1) { - var k2 = next1.key; - var d2 = next1.data; - var next2 = next1.next; - if (Curry._2(H.equal, key, k2)) { - return d2; - } - if (next2) { - var k3 = next2.key; - var d3 = next2.data; - var next3 = next2.next; - if (Curry._2(H.equal, key, k3)) { - return d3; - } else { - var _param = next3; - while(true) { - var param = _param; - if (param) { - var k = param.key; - var data = param.data; - var next = param.next; - if (Curry._2(H.equal, key, k)) { - return data; - } - _param = next; - continue ; - } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; - }; - } - } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; - } + if (/* tag */typeof match === "number") { throw { RE_EXN_ID: "Not_found", Error: new Error() }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var k1 = match.key; + var d1 = match.data; + var next1 = match.next; + if (Curry._2(H.equal, key, k1)) { + return d1; + } + if (/* tag */typeof next1 === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + var k2 = next1.key; + var d2 = next1.data; + var next2 = next1.next; + if (Curry._2(H.equal, key, k2)) { + return d2; + } + if (/* tag */typeof next2 === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + var k3 = next2.key; + var d3 = next2.data; + var next3 = next2.next; + if (Curry._2(H.equal, key, k3)) { + return d3; + } else { + var _param = next3; + while(true) { + var param = _param; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + var k = param.key; + var data = param.data; + var next = param.next; + if (Curry._2(H.equal, key, k)) { + return data; + } + _param = next; + continue ; + }; + } }; var find_opt = function (h, key) { var match = Caml_array.get(h.data, key_index(h, key)); - if (!match) { + if (/* tag */typeof match === "number") { return ; } var k1 = match.key; @@ -711,7 +710,7 @@ function MakeSeeded(H) { if (Curry._2(H.equal, key, k1)) { return Caml_option.some(d1); } - if (!next1) { + if (/* tag */typeof next1 === "number") { return ; } var k2 = next1.key; @@ -720,7 +719,7 @@ function MakeSeeded(H) { if (Curry._2(H.equal, key, k2)) { return Caml_option.some(d2); } - if (!next2) { + if (/* tag */typeof next2 === "number") { return ; } var k3 = next2.key; @@ -732,7 +731,7 @@ function MakeSeeded(H) { var _param = next3; while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var k = param.key; @@ -750,7 +749,7 @@ function MakeSeeded(H) { var find_in_bucket = function (_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return /* [] */0; } var k = param.key; @@ -771,7 +770,7 @@ function MakeSeeded(H) { var replace_bucket = function (key, data, _slot) { while(true) { var slot = _slot; - if (!slot) { + if (/* tag */typeof slot === "number") { return true; } var k = slot.key; @@ -807,7 +806,7 @@ function MakeSeeded(H) { var _param = Caml_array.get(h.data, key_index(h, key)); while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } var k = param.key; @@ -865,18 +864,18 @@ function Make(H) { while(true) { var c = _c; var prec = _prec; - if (!c) { + if (/* tag */typeof c === "number") { return ; } var k = c.key; var next = c.next; if (Curry._2(equal, k, key)) { h.size = h.size - 1 | 0; - if (prec) { + if (/* tag */typeof prec === "number") { + return Caml_array.set(h.data, i, next); + } else { prec.next = next; return ; - } else { - return Caml_array.set(h.data, i, next); } } _c = next; @@ -886,65 +885,65 @@ function Make(H) { }; var find = function (h, key) { var match = Caml_array.get(h.data, key_index(h, key)); - if (match) { - var k1 = match.key; - var d1 = match.data; - var next1 = match.next; - if (Curry._2(equal, key, k1)) { - return d1; - } - if (next1) { - var k2 = next1.key; - var d2 = next1.data; - var next2 = next1.next; - if (Curry._2(equal, key, k2)) { - return d2; - } - if (next2) { - var k3 = next2.key; - var d3 = next2.data; - var next3 = next2.next; - if (Curry._2(equal, key, k3)) { - return d3; - } else { - var _param = next3; - while(true) { - var param = _param; - if (param) { - var k = param.key; - var data = param.data; - var next = param.next; - if (Curry._2(equal, key, k)) { - return data; - } - _param = next; - continue ; - } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; - }; - } - } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; - } + if (/* tag */typeof match === "number") { throw { RE_EXN_ID: "Not_found", Error: new Error() }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var k1 = match.key; + var d1 = match.data; + var next1 = match.next; + if (Curry._2(equal, key, k1)) { + return d1; + } + if (/* tag */typeof next1 === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + var k2 = next1.key; + var d2 = next1.data; + var next2 = next1.next; + if (Curry._2(equal, key, k2)) { + return d2; + } + if (/* tag */typeof next2 === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + var k3 = next2.key; + var d3 = next2.data; + var next3 = next2.next; + if (Curry._2(equal, key, k3)) { + return d3; + } else { + var _param = next3; + while(true) { + var param = _param; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + var k = param.key; + var data = param.data; + var next = param.next; + if (Curry._2(equal, key, k)) { + return data; + } + _param = next; + continue ; + }; + } }; var find_opt = function (h, key) { var match = Caml_array.get(h.data, key_index(h, key)); - if (!match) { + if (/* tag */typeof match === "number") { return ; } var k1 = match.key; @@ -953,7 +952,7 @@ function Make(H) { if (Curry._2(equal, key, k1)) { return Caml_option.some(d1); } - if (!next1) { + if (/* tag */typeof next1 === "number") { return ; } var k2 = next1.key; @@ -962,7 +961,7 @@ function Make(H) { if (Curry._2(equal, key, k2)) { return Caml_option.some(d2); } - if (!next2) { + if (/* tag */typeof next2 === "number") { return ; } var k3 = next2.key; @@ -974,7 +973,7 @@ function Make(H) { var _param = next3; while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var k = param.key; @@ -992,7 +991,7 @@ function Make(H) { var find_in_bucket = function (_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return /* [] */0; } var k = param.key; @@ -1013,7 +1012,7 @@ function Make(H) { var replace_bucket = function (key, data, _slot) { while(true) { var slot = _slot; - if (!slot) { + if (/* tag */typeof slot === "number") { return true; } var k = slot.key; @@ -1049,7 +1048,7 @@ function Make(H) { var _param = Caml_array.get(h.data, key_index(h, key)); while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } var k = param.key; diff --git a/lib/js/map.js b/lib/js/map.js index a0a5f705f2..17e5215f8a 100644 --- a/lib/js/map.js +++ b/lib/js/map.js @@ -5,10 +5,10 @@ var Caml_option = require("./caml_option.js"); function Make(funarg) { var height = function (param) { - if (param) { - return param.h; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return param.h; } }; var create = function (l, x, d, r) { @@ -32,26 +32,28 @@ function Make(funarg) { }; }; var bal = function (l, x, d, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l.r; - var ld = l.d; - var lv = l.v; - var ll = l.l; - if (height(ll) >= height(lr)) { - return create(ll, lv, ld, create(lr, x, d, r)); - } - if (lr) { - return create(create(ll, lv, ld, lr.l), lr.v, lr.d, create(lr.r, x, d, r)); - } + if (/* tag */typeof l === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var lr = l.r; + var ld = l.d; + var lv = l.v; + var ll = l.l; + if (height(ll) >= height(lr)) { + return create(ll, lv, ld, create(lr, x, d, r)); + } + if (/* tag */typeof lr !== "number") { + return create(create(ll, lv, ld, lr.l), lr.v, lr.d, create(lr.r, x, d, r)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -67,23 +69,23 @@ function Make(funarg) { h: hl >= hr ? hl + 1 | 0 : hr + 1 | 0 }; } - if (r) { - var rr = r.r; - var rd = r.d; - var rv = r.v; - var rl = r.l; - if (height(rr) >= height(rl)) { - return create(create(l, x, d, rl), rv, rd, rr); - } - if (rl) { - return create(create(l, x, d, rl.l), rl.v, rl.d, create(rl.r, rv, rd, rr)); - } + if (/* tag */typeof r === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var rr = r.r; + var rd = r.d; + var rv = r.v; + var rl = r.l; + if (height(rr) >= height(rl)) { + return create(create(l, x, d, rl), rv, rd, rr); + } + if (/* tag */typeof rl !== "number") { + return create(create(l, x, d, rl.l), rl.v, rl.d, create(rl.r, rv, rd, rr)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -91,14 +93,14 @@ function Make(funarg) { }; }; var is_empty = function (param) { - if (param) { - return false; - } else { + if (/* tag */typeof param === "number") { return true; + } else { + return false; } }; var add = function (x, data, m) { - if (!m) { + if (/* tag */typeof m === "number") { return /* Node */{ l: /* Empty */0, v: x, @@ -143,63 +145,63 @@ function Make(funarg) { var find = function (x, _param) { while(true) { var param = _param; - if (param) { - var c = Curry._2(funarg.compare, x, param.v); - if (c === 0) { - return param.d; - } - _param = c < 0 ? param.l : param.r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var c = Curry._2(funarg.compare, x, param.v); + if (c === 0) { + return param.d; + } + _param = c < 0 ? param.l : param.r; + continue ; }; }; var find_first = function (f, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - if (Curry._1(f, v)) { - var _v0 = v; - var _d0 = param.d; - var _param$1 = param.l; - while(true) { - var param$1 = _param$1; - var d0 = _d0; - var v0 = _v0; - if (!param$1) { - return [ - v0, - d0 - ]; - } - var v$1 = param$1.v; - if (Curry._1(f, v$1)) { - _param$1 = param$1.l; - _d0 = param$1.d; - _v0 = v$1; - continue ; - } - _param$1 = param$1.r; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + var v = param.v; + if (Curry._1(f, v)) { + var _v0 = v; + var _d0 = param.d; + var _param$1 = param.l; + while(true) { + var param$1 = _param$1; + var d0 = _d0; + var v0 = _v0; + if (/* tag */typeof param$1 === "number") { + return [ + v0, + d0 + ]; + } + var v$1 = param$1.v; + if (Curry._1(f, v$1)) { + _param$1 = param$1.l; + _d0 = param$1.d; + _v0 = v$1; continue ; - }; - } - _param = param.r; - continue ; + } + _param$1 = param$1.r; + continue ; + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + _param = param.r; + continue ; }; }; var find_first_opt = function (f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -211,7 +213,7 @@ function Make(funarg) { var param$1 = _param$1; var d0 = _d0; var v0 = _v0; - if (!param$1) { + if (/* tag */typeof param$1 === "number") { return [ v0, d0 @@ -235,46 +237,46 @@ function Make(funarg) { var find_last = function (f, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - if (Curry._1(f, v)) { - var _v0 = v; - var _d0 = param.d; - var _param$1 = param.r; - while(true) { - var param$1 = _param$1; - var d0 = _d0; - var v0 = _v0; - if (!param$1) { - return [ - v0, - d0 - ]; - } - var v$1 = param$1.v; - if (Curry._1(f, v$1)) { - _param$1 = param$1.r; - _d0 = param$1.d; - _v0 = v$1; - continue ; - } - _param$1 = param$1.l; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + var v = param.v; + if (Curry._1(f, v)) { + var _v0 = v; + var _d0 = param.d; + var _param$1 = param.r; + while(true) { + var param$1 = _param$1; + var d0 = _d0; + var v0 = _v0; + if (/* tag */typeof param$1 === "number") { + return [ + v0, + d0 + ]; + } + var v$1 = param$1.v; + if (Curry._1(f, v$1)) { + _param$1 = param$1.r; + _d0 = param$1.d; + _v0 = v$1; continue ; - }; - } - _param = param.l; - continue ; + } + _param$1 = param$1.l; + continue ; + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + _param = param.l; + continue ; }; }; var find_last_opt = function (f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -286,7 +288,7 @@ function Make(funarg) { var param$1 = _param$1; var d0 = _d0; var v0 = _v0; - if (!param$1) { + if (/* tag */typeof param$1 === "number") { return [ v0, d0 @@ -310,7 +312,7 @@ function Make(funarg) { var find_opt = function (x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var c = Curry._2(funarg.compare, x, param.v); @@ -324,7 +326,7 @@ function Make(funarg) { var mem = function (x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } var c = Curry._2(funarg.compare, x, param.v); @@ -338,31 +340,31 @@ function Make(funarg) { var min_binding = function (_param) { while(true) { var param = _param; - if (param) { - var l = param.l; - if (!l) { - return [ - param.v, - param.d - ]; - } - _param = l; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var l = param.l; + if (/* tag */typeof l === "number") { + return [ + param.v, + param.d + ]; + } + _param = l; + continue ; }; }; var min_binding_opt = function (_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var l = param.l; - if (!l) { + if (/* tag */typeof l === "number") { return [ param.v, param.d @@ -375,31 +377,31 @@ function Make(funarg) { var max_binding = function (_param) { while(true) { var param = _param; - if (param) { - var r = param.r; - if (!r) { - return [ - param.v, - param.d - ]; - } - _param = r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var r = param.r; + if (/* tag */typeof r === "number") { + return [ + param.v, + param.d + ]; + } + _param = r; + continue ; }; }; var max_binding_opt = function (_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var r = param.r; - if (!r) { + if (/* tag */typeof r === "number") { return [ param.v, param.d @@ -410,32 +412,32 @@ function Make(funarg) { }; }; var remove_min_binding = function (param) { - if (param) { - var l = param.l; - if (l) { - return bal(remove_min_binding(l), param.v, param.d, param.r); - } else { - return param.r; - } + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Invalid_argument", + _1: "Map.remove_min_elt", + Error: new Error() + }; + } + var l = param.l; + if (/* tag */typeof l === "number") { + return param.r; + } else { + return bal(remove_min_binding(l), param.v, param.d, param.r); } - throw { - RE_EXN_ID: "Invalid_argument", - _1: "Map.remove_min_elt", - Error: new Error() - }; }; var merge = function (t1, t2) { - if (!t1) { + if (/* tag */typeof t1 === "number") { return t2; } - if (!t2) { + if (/* tag */typeof t2 === "number") { return t1; } var match = min_binding(t2); return bal(t1, match[0], match[1], remove_min_binding(t2)); }; var remove = function (x, m) { - if (!m) { + if (/* tag */typeof m === "number") { return /* Empty */0; } var r = m.r; @@ -462,62 +464,62 @@ function Make(funarg) { } }; var update = function (x, f, m) { - if (m) { - var r = m.r; - var d = m.d; - var v = m.v; - var l = m.l; - var c = Curry._2(funarg.compare, x, v); - if (c === 0) { - var data = Curry._1(f, Caml_option.some(d)); - if (data === undefined) { - return merge(l, r); - } - var data$1 = Caml_option.valFromOption(data); - if (d === data$1) { - return m; - } else { - return /* Node */{ - l: l, - v: x, - d: data$1, - r: r, - h: m.h - }; - } + if (/* tag */typeof m === "number") { + var data = Curry._1(f, undefined); + if (data !== undefined) { + return /* Node */{ + l: /* Empty */0, + v: x, + d: Caml_option.valFromOption(data), + r: /* Empty */0, + h: 1 + }; + } else { + return /* Empty */0; } - if (c < 0) { - var ll = update(x, f, l); - if (l === ll) { - return m; - } else { - return bal(ll, v, d, r); - } + } + var r = m.r; + var d = m.d; + var v = m.v; + var l = m.l; + var c = Curry._2(funarg.compare, x, v); + if (c === 0) { + var data$1 = Curry._1(f, Caml_option.some(d)); + if (data$1 === undefined) { + return merge(l, r); + } + var data$2 = Caml_option.valFromOption(data$1); + if (d === data$2) { + return m; + } else { + return /* Node */{ + l: l, + v: x, + d: data$2, + r: r, + h: m.h + }; } - var rr = update(x, f, r); - if (r === rr) { + } + if (c < 0) { + var ll = update(x, f, l); + if (l === ll) { return m; } else { - return bal(l, v, d, rr); + return bal(ll, v, d, r); } } - var data$2 = Curry._1(f, undefined); - if (data$2 !== undefined) { - return /* Node */{ - l: /* Empty */0, - v: x, - d: Caml_option.valFromOption(data$2), - r: /* Empty */0, - h: 1 - }; + var rr = update(x, f, r); + if (r === rr) { + return m; } else { - return /* Empty */0; + return bal(l, v, d, rr); } }; var iter = function (f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } iter(f, param.l); @@ -527,7 +529,7 @@ function Make(funarg) { }; }; var map = function (f, param) { - if (!param) { + if (/* tag */typeof param === "number") { return /* Empty */0; } var l$p = map(f, param.l); @@ -542,7 +544,7 @@ function Make(funarg) { }; }; var mapi = function (f, param) { - if (!param) { + if (/* tag */typeof param === "number") { return /* Empty */0; } var v = param.v; @@ -561,7 +563,7 @@ function Make(funarg) { while(true) { var accu = _accu; var m = _m; - if (!m) { + if (/* tag */typeof m === "number") { return accu; } _accu = Curry._3(f, m.v, m.d, fold(f, m.l, accu)); @@ -572,7 +574,7 @@ function Make(funarg) { var for_all = function (p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return true; } if (!Curry._2(p, param.v, param.d)) { @@ -588,7 +590,7 @@ function Make(funarg) { var exists = function (p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } if (Curry._2(p, param.v, param.d)) { @@ -602,28 +604,28 @@ function Make(funarg) { }; }; var add_min_binding = function (k, x, param) { - if (param) { - return bal(add_min_binding(k, x, param.l), param.v, param.d, param.r); - } else { + if (/* tag */typeof param === "number") { return singleton(k, x); + } else { + return bal(add_min_binding(k, x, param.l), param.v, param.d, param.r); } }; var add_max_binding = function (k, x, param) { - if (param) { - return bal(param.l, param.v, param.d, add_max_binding(k, x, param.r)); - } else { + if (/* tag */typeof param === "number") { return singleton(k, x); + } else { + return bal(param.l, param.v, param.d, add_max_binding(k, x, param.r)); } }; var join = function (l, v, d, r) { - if (!l) { + if (/* tag */typeof l === "number") { return add_min_binding(v, d, r); } - if (!r) { + var lh = l.h; + if (/* tag */typeof r === "number") { return add_max_binding(v, d, l); } var rh = r.h; - var lh = l.h; if (lh > (rh + 2 | 0)) { return bal(l.l, l.v, l.d, join(l.r, v, d, r)); } else if (rh > (lh + 2 | 0)) { @@ -633,10 +635,10 @@ function Make(funarg) { } }; var concat = function (t1, t2) { - if (!t1) { + if (/* tag */typeof t1 === "number") { return t2; } - if (!t2) { + if (/* tag */typeof t2 === "number") { return t1; } var match = min_binding(t2); @@ -650,7 +652,7 @@ function Make(funarg) { } }; var split = function (x, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, undefined, @@ -685,42 +687,45 @@ function Make(funarg) { ]; }; var merge$1 = function (f, s1, s2) { - if (s1) { + if (/* tag */typeof s1 === "number") { + if (/* tag */typeof s2 === "number") { + return /* Empty */0; + } + + } else { var v1 = s1.v; if (s1.h >= height(s2)) { var match = split(v1, s2); return concat_or_join(merge$1(f, s1.l, match[0]), v1, Curry._3(f, v1, Caml_option.some(s1.d), match[1]), merge$1(f, s1.r, match[2])); } - } else if (!s2) { - return /* Empty */0; } - if (s2) { - var v2 = s2.v; - var match$1 = split(v2, s1); - return concat_or_join(merge$1(f, match$1[0], s2.l), v2, Curry._3(f, v2, match$1[1], Caml_option.some(s2.d)), merge$1(f, match$1[2], s2.r)); + if (/* tag */typeof s2 === "number") { + throw { + RE_EXN_ID: "Assert_failure", + _1: [ + "map.ml", + 393, + 10 + ], + Error: new Error() + }; } - throw { - RE_EXN_ID: "Assert_failure", - _1: [ - "map.ml", - 393, - 10 - ], - Error: new Error() - }; + var v2 = s2.v; + var match$1 = split(v2, s1); + return concat_or_join(merge$1(f, match$1[0], s2.l), v2, Curry._3(f, v2, match$1[1], Caml_option.some(s2.d)), merge$1(f, match$1[2], s2.r)); }; var union = function (f, s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return s2; } - if (!s2) { + var d1 = s1.d; + var v1 = s1.v; + if (/* tag */typeof s2 === "number") { return s1; } var d2 = s2.d; var v2 = s2.v; - var d1 = s1.d; - var v1 = s1.v; if (s1.h >= s2.h) { var match = split(v1, s2); var d2$1 = match[1]; @@ -743,7 +748,7 @@ function Make(funarg) { } }; var filter = function (p, m) { - if (!m) { + if (/* tag */typeof m === "number") { return /* Empty */0; } var r = m.r; @@ -764,7 +769,7 @@ function Make(funarg) { } }; var partition = function (p, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, /* Empty */0 @@ -795,7 +800,7 @@ function Make(funarg) { while(true) { var e = _e; var m = _m; - if (!m) { + if (/* tag */typeof m === "number") { return e; } _e = /* More */{ @@ -814,14 +819,14 @@ function Make(funarg) { while(true) { var e2 = _e2; var e1 = _e1; - if (!e1) { - if (e2) { - return -1; - } else { + if (/* tag */typeof e1 === "number") { + if (/* tag */typeof e2 === "number") { return 0; + } else { + return -1; } } - if (!e2) { + if (/* tag */typeof e2 === "number") { return 1; } var c = Curry._2(funarg.compare, e1._0, e2._0); @@ -843,14 +848,14 @@ function Make(funarg) { while(true) { var e2 = _e2; var e1 = _e1; - if (!e1) { - if (e2) { - return false; - } else { + if (/* tag */typeof e1 === "number") { + if (/* tag */typeof e2 === "number") { return true; + } else { + return false; } } - if (!e2) { + if (/* tag */typeof e2 === "number") { return false; } if (Curry._2(funarg.compare, e1._0, e2._0) !== 0) { @@ -865,17 +870,17 @@ function Make(funarg) { }; }; var cardinal = function (param) { - if (param) { - return (cardinal(param.l) + 1 | 0) + cardinal(param.r) | 0; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return (cardinal(param.l) + 1 | 0) + cardinal(param.r) | 0; } }; var bindings_aux = function (_accu, _param) { while(true) { var param = _param; var accu = _accu; - if (!param) { + if (/* tag */typeof param === "number") { return accu; } _param = param.l; diff --git a/lib/js/mapLabels.js b/lib/js/mapLabels.js index 164884dcaa..7212153a62 100644 --- a/lib/js/mapLabels.js +++ b/lib/js/mapLabels.js @@ -5,10 +5,10 @@ var Caml_option = require("./caml_option.js"); function Make(Ord) { var height = function (param) { - if (param) { - return param.h; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return param.h; } }; var create = function (l, x, d, r) { @@ -32,26 +32,28 @@ function Make(Ord) { }; }; var bal = function (l, x, d, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l.r; - var ld = l.d; - var lv = l.v; - var ll = l.l; - if (height(ll) >= height(lr)) { - return create(ll, lv, ld, create(lr, x, d, r)); - } - if (lr) { - return create(create(ll, lv, ld, lr.l), lr.v, lr.d, create(lr.r, x, d, r)); - } + if (/* tag */typeof l === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var lr = l.r; + var ld = l.d; + var lv = l.v; + var ll = l.l; + if (height(ll) >= height(lr)) { + return create(ll, lv, ld, create(lr, x, d, r)); + } + if (/* tag */typeof lr !== "number") { + return create(create(ll, lv, ld, lr.l), lr.v, lr.d, create(lr.r, x, d, r)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -67,23 +69,23 @@ function Make(Ord) { h: hl >= hr ? hl + 1 | 0 : hr + 1 | 0 }; } - if (r) { - var rr = r.r; - var rd = r.d; - var rv = r.v; - var rl = r.l; - if (height(rr) >= height(rl)) { - return create(create(l, x, d, rl), rv, rd, rr); - } - if (rl) { - return create(create(l, x, d, rl.l), rl.v, rl.d, create(rl.r, rv, rd, rr)); - } + if (/* tag */typeof r === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var rr = r.r; + var rd = r.d; + var rv = r.v; + var rl = r.l; + if (height(rr) >= height(rl)) { + return create(create(l, x, d, rl), rv, rd, rr); + } + if (/* tag */typeof rl !== "number") { + return create(create(l, x, d, rl.l), rl.v, rl.d, create(rl.r, rv, rd, rr)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -91,14 +93,14 @@ function Make(Ord) { }; }; var is_empty = function (param) { - if (param) { - return false; - } else { + if (/* tag */typeof param === "number") { return true; + } else { + return false; } }; var add = function (x, data, m) { - if (!m) { + if (/* tag */typeof m === "number") { return /* Node */{ l: /* Empty */0, v: x, @@ -143,18 +145,18 @@ function Make(Ord) { var find = function (x, _param) { while(true) { var param = _param; - if (param) { - var c = Curry._2(Ord.compare, x, param.v); - if (c === 0) { - return param.d; - } - _param = c < 0 ? param.l : param.r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var c = Curry._2(Ord.compare, x, param.v); + if (c === 0) { + return param.d; + } + _param = c < 0 ? param.l : param.r; + continue ; }; }; var find_first_aux = function (_v0, _d0, f, _param) { @@ -162,7 +164,7 @@ function Make(Ord) { var param = _param; var d0 = _d0; var v0 = _v0; - if (!param) { + if (/* tag */typeof param === "number") { return [ v0, d0 @@ -182,18 +184,18 @@ function Make(Ord) { var find_first = function (f, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - if (Curry._1(f, v)) { - return find_first_aux(v, param.d, f, param.l); - } - _param = param.r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var v = param.v; + if (Curry._1(f, v)) { + return find_first_aux(v, param.d, f, param.l); + } + _param = param.r; + continue ; }; }; var find_first_opt_aux = function (_v0, _d0, f, _param) { @@ -201,7 +203,7 @@ function Make(Ord) { var param = _param; var d0 = _d0; var v0 = _v0; - if (!param) { + if (/* tag */typeof param === "number") { return [ v0, d0 @@ -221,7 +223,7 @@ function Make(Ord) { var find_first_opt = function (f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -237,7 +239,7 @@ function Make(Ord) { var param = _param; var d0 = _d0; var v0 = _v0; - if (!param) { + if (/* tag */typeof param === "number") { return [ v0, d0 @@ -257,18 +259,18 @@ function Make(Ord) { var find_last = function (f, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - if (Curry._1(f, v)) { - return find_last_aux(v, param.d, f, param.r); - } - _param = param.l; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var v = param.v; + if (Curry._1(f, v)) { + return find_last_aux(v, param.d, f, param.r); + } + _param = param.l; + continue ; }; }; var find_last_opt_aux = function (_v0, _d0, f, _param) { @@ -276,7 +278,7 @@ function Make(Ord) { var param = _param; var d0 = _d0; var v0 = _v0; - if (!param) { + if (/* tag */typeof param === "number") { return [ v0, d0 @@ -296,7 +298,7 @@ function Make(Ord) { var find_last_opt = function (f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -310,7 +312,7 @@ function Make(Ord) { var find_opt = function (x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var c = Curry._2(Ord.compare, x, param.v); @@ -324,7 +326,7 @@ function Make(Ord) { var mem = function (x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } var c = Curry._2(Ord.compare, x, param.v); @@ -338,31 +340,31 @@ function Make(Ord) { var min_binding = function (_param) { while(true) { var param = _param; - if (param) { - var l = param.l; - if (!l) { - return [ - param.v, - param.d - ]; - } - _param = l; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var l = param.l; + if (/* tag */typeof l === "number") { + return [ + param.v, + param.d + ]; + } + _param = l; + continue ; }; }; var min_binding_opt = function (_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var l = param.l; - if (!l) { + if (/* tag */typeof l === "number") { return [ param.v, param.d @@ -375,31 +377,31 @@ function Make(Ord) { var max_binding = function (_param) { while(true) { var param = _param; - if (param) { - var r = param.r; - if (!r) { - return [ - param.v, - param.d - ]; - } - _param = r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var r = param.r; + if (/* tag */typeof r === "number") { + return [ + param.v, + param.d + ]; + } + _param = r; + continue ; }; }; var max_binding_opt = function (_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var r = param.r; - if (!r) { + if (/* tag */typeof r === "number") { return [ param.v, param.d @@ -410,32 +412,32 @@ function Make(Ord) { }; }; var remove_min_binding = function (param) { - if (param) { - var l = param.l; - if (l) { - return bal(remove_min_binding(l), param.v, param.d, param.r); - } else { - return param.r; - } + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Invalid_argument", + _1: "Map.remove_min_elt", + Error: new Error() + }; + } + var l = param.l; + if (/* tag */typeof l === "number") { + return param.r; + } else { + return bal(remove_min_binding(l), param.v, param.d, param.r); } - throw { - RE_EXN_ID: "Invalid_argument", - _1: "Map.remove_min_elt", - Error: new Error() - }; }; var merge = function (t1, t2) { - if (!t1) { + if (/* tag */typeof t1 === "number") { return t2; } - if (!t2) { + if (/* tag */typeof t2 === "number") { return t1; } var match = min_binding(t2); return bal(t1, match[0], match[1], remove_min_binding(t2)); }; var remove = function (x, m) { - if (!m) { + if (/* tag */typeof m === "number") { return /* Empty */0; } var r = m.r; @@ -462,62 +464,62 @@ function Make(Ord) { } }; var update = function (x, f, m) { - if (m) { - var r = m.r; - var d = m.d; - var v = m.v; - var l = m.l; - var c = Curry._2(Ord.compare, x, v); - if (c === 0) { - var data = Curry._1(f, Caml_option.some(d)); - if (data === undefined) { - return merge(l, r); - } - var data$1 = Caml_option.valFromOption(data); - if (d === data$1) { - return m; - } else { - return /* Node */{ - l: l, - v: x, - d: data$1, - r: r, - h: m.h - }; - } + if (/* tag */typeof m === "number") { + var data = Curry._1(f, undefined); + if (data !== undefined) { + return /* Node */{ + l: /* Empty */0, + v: x, + d: Caml_option.valFromOption(data), + r: /* Empty */0, + h: 1 + }; + } else { + return /* Empty */0; } - if (c < 0) { - var ll = update(x, f, l); - if (l === ll) { - return m; - } else { - return bal(ll, v, d, r); - } + } + var r = m.r; + var d = m.d; + var v = m.v; + var l = m.l; + var c = Curry._2(Ord.compare, x, v); + if (c === 0) { + var data$1 = Curry._1(f, Caml_option.some(d)); + if (data$1 === undefined) { + return merge(l, r); } - var rr = update(x, f, r); - if (r === rr) { + var data$2 = Caml_option.valFromOption(data$1); + if (d === data$2) { return m; } else { - return bal(l, v, d, rr); + return /* Node */{ + l: l, + v: x, + d: data$2, + r: r, + h: m.h + }; } } - var data$2 = Curry._1(f, undefined); - if (data$2 !== undefined) { - return /* Node */{ - l: /* Empty */0, - v: x, - d: Caml_option.valFromOption(data$2), - r: /* Empty */0, - h: 1 - }; + if (c < 0) { + var ll = update(x, f, l); + if (l === ll) { + return m; + } else { + return bal(ll, v, d, r); + } + } + var rr = update(x, f, r); + if (r === rr) { + return m; } else { - return /* Empty */0; + return bal(l, v, d, rr); } }; var iter = function (f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } iter(f, param.l); @@ -527,7 +529,7 @@ function Make(Ord) { }; }; var map = function (f, param) { - if (!param) { + if (/* tag */typeof param === "number") { return /* Empty */0; } var l$p = map(f, param.l); @@ -542,7 +544,7 @@ function Make(Ord) { }; }; var mapi = function (f, param) { - if (!param) { + if (/* tag */typeof param === "number") { return /* Empty */0; } var v = param.v; @@ -561,7 +563,7 @@ function Make(Ord) { while(true) { var accu = _accu; var m = _m; - if (!m) { + if (/* tag */typeof m === "number") { return accu; } _accu = Curry._3(f, m.v, m.d, fold(f, m.l, accu)); @@ -572,7 +574,7 @@ function Make(Ord) { var for_all = function (p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return true; } if (!Curry._2(p, param.v, param.d)) { @@ -588,7 +590,7 @@ function Make(Ord) { var exists = function (p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } if (Curry._2(p, param.v, param.d)) { @@ -602,28 +604,28 @@ function Make(Ord) { }; }; var add_min_binding = function (k, x, param) { - if (param) { - return bal(add_min_binding(k, x, param.l), param.v, param.d, param.r); - } else { + if (/* tag */typeof param === "number") { return singleton(k, x); + } else { + return bal(add_min_binding(k, x, param.l), param.v, param.d, param.r); } }; var add_max_binding = function (k, x, param) { - if (param) { - return bal(param.l, param.v, param.d, add_max_binding(k, x, param.r)); - } else { + if (/* tag */typeof param === "number") { return singleton(k, x); + } else { + return bal(param.l, param.v, param.d, add_max_binding(k, x, param.r)); } }; var join = function (l, v, d, r) { - if (!l) { + if (/* tag */typeof l === "number") { return add_min_binding(v, d, r); } - if (!r) { + var lh = l.h; + if (/* tag */typeof r === "number") { return add_max_binding(v, d, l); } var rh = r.h; - var lh = l.h; if (lh > (rh + 2 | 0)) { return bal(l.l, l.v, l.d, join(l.r, v, d, r)); } else if (rh > (lh + 2 | 0)) { @@ -633,10 +635,10 @@ function Make(Ord) { } }; var concat = function (t1, t2) { - if (!t1) { + if (/* tag */typeof t1 === "number") { return t2; } - if (!t2) { + if (/* tag */typeof t2 === "number") { return t1; } var match = min_binding(t2); @@ -650,7 +652,7 @@ function Make(Ord) { } }; var split = function (x, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, undefined, @@ -685,42 +687,45 @@ function Make(Ord) { ]; }; var merge$1 = function (f, s1, s2) { - if (s1) { + if (/* tag */typeof s1 === "number") { + if (/* tag */typeof s2 === "number") { + return /* Empty */0; + } + + } else { var v1 = s1.v; if (s1.h >= height(s2)) { var match = split(v1, s2); return concat_or_join(merge$1(f, s1.l, match[0]), v1, Curry._3(f, v1, Caml_option.some(s1.d), match[1]), merge$1(f, s1.r, match[2])); } - } else if (!s2) { - return /* Empty */0; } - if (s2) { - var v2 = s2.v; - var match$1 = split(v2, s1); - return concat_or_join(merge$1(f, match$1[0], s2.l), v2, Curry._3(f, v2, match$1[1], Caml_option.some(s2.d)), merge$1(f, match$1[2], s2.r)); + if (/* tag */typeof s2 === "number") { + throw { + RE_EXN_ID: "Assert_failure", + _1: [ + "mapLabels.ml", + 393, + 10 + ], + Error: new Error() + }; } - throw { - RE_EXN_ID: "Assert_failure", - _1: [ - "mapLabels.ml", - 393, - 10 - ], - Error: new Error() - }; + var v2 = s2.v; + var match$1 = split(v2, s1); + return concat_or_join(merge$1(f, match$1[0], s2.l), v2, Curry._3(f, v2, match$1[1], Caml_option.some(s2.d)), merge$1(f, match$1[2], s2.r)); }; var union = function (f, s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return s2; } - if (!s2) { + var d1 = s1.d; + var v1 = s1.v; + if (/* tag */typeof s2 === "number") { return s1; } var d2 = s2.d; var v2 = s2.v; - var d1 = s1.d; - var v1 = s1.v; if (s1.h >= s2.h) { var match = split(v1, s2); var d2$1 = match[1]; @@ -743,7 +748,7 @@ function Make(Ord) { } }; var filter = function (p, m) { - if (!m) { + if (/* tag */typeof m === "number") { return /* Empty */0; } var r = m.r; @@ -764,7 +769,7 @@ function Make(Ord) { } }; var partition = function (p, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, /* Empty */0 @@ -795,7 +800,7 @@ function Make(Ord) { while(true) { var e = _e; var m = _m; - if (!m) { + if (/* tag */typeof m === "number") { return e; } _e = /* More */{ @@ -814,14 +819,14 @@ function Make(Ord) { while(true) { var e2 = _e2; var e1 = _e1; - if (!e1) { - if (e2) { - return -1; - } else { + if (/* tag */typeof e1 === "number") { + if (/* tag */typeof e2 === "number") { return 0; + } else { + return -1; } } - if (!e2) { + if (/* tag */typeof e2 === "number") { return 1; } var c = Curry._2(Ord.compare, e1._0, e2._0); @@ -843,14 +848,14 @@ function Make(Ord) { while(true) { var e2 = _e2; var e1 = _e1; - if (!e1) { - if (e2) { - return false; - } else { + if (/* tag */typeof e1 === "number") { + if (/* tag */typeof e2 === "number") { return true; + } else { + return false; } } - if (!e2) { + if (/* tag */typeof e2 === "number") { return false; } if (Curry._2(Ord.compare, e1._0, e2._0) !== 0) { @@ -865,17 +870,17 @@ function Make(Ord) { }; }; var cardinal = function (param) { - if (param) { - return (cardinal(param.l) + 1 | 0) + cardinal(param.r) | 0; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return (cardinal(param.l) + 1 | 0) + cardinal(param.r) | 0; } }; var bindings_aux = function (_accu, _param) { while(true) { var param = _param; var accu = _accu; - if (!param) { + if (/* tag */typeof param === "number") { return accu; } _param = param.l; diff --git a/lib/js/moreLabels.js b/lib/js/moreLabels.js index 364df10b20..03acaedc08 100644 --- a/lib/js/moreLabels.js +++ b/lib/js/moreLabels.js @@ -35,10 +35,10 @@ var Hashtbl = { var $$Map = { Make: (function (funarg) { var height = function (param) { - if (param) { - return param.h; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return param.h; } }; var create = function (l, x, d, r) { @@ -62,26 +62,28 @@ var $$Map = { }; }; var bal = function (l, x, d, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l.r; - var ld = l.d; - var lv = l.v; - var ll = l.l; - if (height(ll) >= height(lr)) { - return create(ll, lv, ld, create(lr, x, d, r)); - } - if (lr) { - return create(create(ll, lv, ld, lr.l), lr.v, lr.d, create(lr.r, x, d, r)); - } + if (/* tag */typeof l === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var lr = l.r; + var ld = l.d; + var lv = l.v; + var ll = l.l; + if (height(ll) >= height(lr)) { + return create(ll, lv, ld, create(lr, x, d, r)); + } + if (/* tag */typeof lr !== "number") { + return create(create(ll, lv, ld, lr.l), lr.v, lr.d, create(lr.r, x, d, r)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -97,23 +99,23 @@ var $$Map = { h: hl >= hr ? hl + 1 | 0 : hr + 1 | 0 }; } - if (r) { - var rr = r.r; - var rd = r.d; - var rv = r.v; - var rl = r.l; - if (height(rr) >= height(rl)) { - return create(create(l, x, d, rl), rv, rd, rr); - } - if (rl) { - return create(create(l, x, d, rl.l), rl.v, rl.d, create(rl.r, rv, rd, rr)); - } + if (/* tag */typeof r === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", Error: new Error() }; } + var rr = r.r; + var rd = r.d; + var rv = r.v; + var rl = r.l; + if (height(rr) >= height(rl)) { + return create(create(l, x, d, rl), rv, rd, rr); + } + if (/* tag */typeof rl !== "number") { + return create(create(l, x, d, rl.l), rl.v, rl.d, create(rl.r, rv, rd, rr)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Map.bal", @@ -121,14 +123,14 @@ var $$Map = { }; }; var is_empty = function (param) { - if (param) { - return false; - } else { + if (/* tag */typeof param === "number") { return true; + } else { + return false; } }; var add = function (x, data, m) { - if (!m) { + if (/* tag */typeof m === "number") { return /* Node */{ l: /* Empty */0, v: x, @@ -173,18 +175,18 @@ var $$Map = { var find = function (x, _param) { while(true) { var param = _param; - if (param) { - var c = Curry._2(funarg.compare, x, param.v); - if (c === 0) { - return param.d; - } - _param = c < 0 ? param.l : param.r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var c = Curry._2(funarg.compare, x, param.v); + if (c === 0) { + return param.d; + } + _param = c < 0 ? param.l : param.r; + continue ; }; }; var find_first_aux = function (_v0, _d0, f, _param) { @@ -192,7 +194,7 @@ var $$Map = { var param = _param; var d0 = _d0; var v0 = _v0; - if (!param) { + if (/* tag */typeof param === "number") { return [ v0, d0 @@ -212,18 +214,18 @@ var $$Map = { var find_first = function (f, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - if (Curry._1(f, v)) { - return find_first_aux(v, param.d, f, param.l); - } - _param = param.r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var v = param.v; + if (Curry._1(f, v)) { + return find_first_aux(v, param.d, f, param.l); + } + _param = param.r; + continue ; }; }; var find_first_opt_aux = function (_v0, _d0, f, _param) { @@ -231,7 +233,7 @@ var $$Map = { var param = _param; var d0 = _d0; var v0 = _v0; - if (!param) { + if (/* tag */typeof param === "number") { return [ v0, d0 @@ -251,7 +253,7 @@ var $$Map = { var find_first_opt = function (f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -267,7 +269,7 @@ var $$Map = { var param = _param; var d0 = _d0; var v0 = _v0; - if (!param) { + if (/* tag */typeof param === "number") { return [ v0, d0 @@ -287,18 +289,18 @@ var $$Map = { var find_last = function (f, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - if (Curry._1(f, v)) { - return find_last_aux(v, param.d, f, param.r); - } - _param = param.l; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var v = param.v; + if (Curry._1(f, v)) { + return find_last_aux(v, param.d, f, param.r); + } + _param = param.l; + continue ; }; }; var find_last_opt_aux = function (_v0, _d0, f, _param) { @@ -306,7 +308,7 @@ var $$Map = { var param = _param; var d0 = _d0; var v0 = _v0; - if (!param) { + if (/* tag */typeof param === "number") { return [ v0, d0 @@ -326,7 +328,7 @@ var $$Map = { var find_last_opt = function (f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -340,7 +342,7 @@ var $$Map = { var find_opt = function (x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var c = Curry._2(funarg.compare, x, param.v); @@ -354,7 +356,7 @@ var $$Map = { var mem = function (x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } var c = Curry._2(funarg.compare, x, param.v); @@ -368,31 +370,31 @@ var $$Map = { var min_binding = function (_param) { while(true) { var param = _param; - if (param) { - var l = param.l; - if (!l) { - return [ - param.v, - param.d - ]; - } - _param = l; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var l = param.l; + if (/* tag */typeof l === "number") { + return [ + param.v, + param.d + ]; + } + _param = l; + continue ; }; }; var min_binding_opt = function (_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var l = param.l; - if (!l) { + if (/* tag */typeof l === "number") { return [ param.v, param.d @@ -405,31 +407,31 @@ var $$Map = { var max_binding = function (_param) { while(true) { var param = _param; - if (param) { - var r = param.r; - if (!r) { - return [ - param.v, - param.d - ]; - } - _param = r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var r = param.r; + if (/* tag */typeof r === "number") { + return [ + param.v, + param.d + ]; + } + _param = r; + continue ; }; }; var max_binding_opt = function (_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var r = param.r; - if (!r) { + if (/* tag */typeof r === "number") { return [ param.v, param.d @@ -440,32 +442,32 @@ var $$Map = { }; }; var remove_min_binding = function (param) { - if (param) { - var l = param.l; - if (l) { - return bal(remove_min_binding(l), param.v, param.d, param.r); - } else { - return param.r; - } + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Invalid_argument", + _1: "Map.remove_min_elt", + Error: new Error() + }; + } + var l = param.l; + if (/* tag */typeof l === "number") { + return param.r; + } else { + return bal(remove_min_binding(l), param.v, param.d, param.r); } - throw { - RE_EXN_ID: "Invalid_argument", - _1: "Map.remove_min_elt", - Error: new Error() - }; }; var merge = function (t1, t2) { - if (!t1) { + if (/* tag */typeof t1 === "number") { return t2; } - if (!t2) { + if (/* tag */typeof t2 === "number") { return t1; } var match = min_binding(t2); return bal(t1, match[0], match[1], remove_min_binding(t2)); }; var remove = function (x, m) { - if (!m) { + if (/* tag */typeof m === "number") { return /* Empty */0; } var r = m.r; @@ -492,62 +494,62 @@ var $$Map = { } }; var update = function (x, f, m) { - if (m) { - var r = m.r; - var d = m.d; - var v = m.v; - var l = m.l; - var c = Curry._2(funarg.compare, x, v); - if (c === 0) { - var data = Curry._1(f, Caml_option.some(d)); - if (data === undefined) { - return merge(l, r); - } - var data$1 = Caml_option.valFromOption(data); - if (d === data$1) { - return m; - } else { - return /* Node */{ - l: l, - v: x, - d: data$1, - r: r, - h: m.h - }; - } + if (/* tag */typeof m === "number") { + var data = Curry._1(f, undefined); + if (data !== undefined) { + return /* Node */{ + l: /* Empty */0, + v: x, + d: Caml_option.valFromOption(data), + r: /* Empty */0, + h: 1 + }; + } else { + return /* Empty */0; } - if (c < 0) { - var ll = update(x, f, l); - if (l === ll) { - return m; - } else { - return bal(ll, v, d, r); - } + } + var r = m.r; + var d = m.d; + var v = m.v; + var l = m.l; + var c = Curry._2(funarg.compare, x, v); + if (c === 0) { + var data$1 = Curry._1(f, Caml_option.some(d)); + if (data$1 === undefined) { + return merge(l, r); } - var rr = update(x, f, r); - if (r === rr) { + var data$2 = Caml_option.valFromOption(data$1); + if (d === data$2) { return m; } else { - return bal(l, v, d, rr); + return /* Node */{ + l: l, + v: x, + d: data$2, + r: r, + h: m.h + }; } } - var data$2 = Curry._1(f, undefined); - if (data$2 !== undefined) { - return /* Node */{ - l: /* Empty */0, - v: x, - d: Caml_option.valFromOption(data$2), - r: /* Empty */0, - h: 1 - }; + if (c < 0) { + var ll = update(x, f, l); + if (l === ll) { + return m; + } else { + return bal(ll, v, d, r); + } + } + var rr = update(x, f, r); + if (r === rr) { + return m; } else { - return /* Empty */0; + return bal(l, v, d, rr); } }; var iter = function (f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } iter(f, param.l); @@ -557,7 +559,7 @@ var $$Map = { }; }; var map = function (f, param) { - if (!param) { + if (/* tag */typeof param === "number") { return /* Empty */0; } var l$p = map(f, param.l); @@ -572,7 +574,7 @@ var $$Map = { }; }; var mapi = function (f, param) { - if (!param) { + if (/* tag */typeof param === "number") { return /* Empty */0; } var v = param.v; @@ -591,7 +593,7 @@ var $$Map = { while(true) { var accu = _accu; var m = _m; - if (!m) { + if (/* tag */typeof m === "number") { return accu; } _accu = Curry._3(f, m.v, m.d, fold(f, m.l, accu)); @@ -602,7 +604,7 @@ var $$Map = { var for_all = function (p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return true; } if (!Curry._2(p, param.v, param.d)) { @@ -618,7 +620,7 @@ var $$Map = { var exists = function (p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } if (Curry._2(p, param.v, param.d)) { @@ -632,28 +634,28 @@ var $$Map = { }; }; var add_min_binding = function (k, x, param) { - if (param) { - return bal(add_min_binding(k, x, param.l), param.v, param.d, param.r); - } else { + if (/* tag */typeof param === "number") { return singleton(k, x); + } else { + return bal(add_min_binding(k, x, param.l), param.v, param.d, param.r); } }; var add_max_binding = function (k, x, param) { - if (param) { - return bal(param.l, param.v, param.d, add_max_binding(k, x, param.r)); - } else { + if (/* tag */typeof param === "number") { return singleton(k, x); + } else { + return bal(param.l, param.v, param.d, add_max_binding(k, x, param.r)); } }; var join = function (l, v, d, r) { - if (!l) { + if (/* tag */typeof l === "number") { return add_min_binding(v, d, r); } - if (!r) { + var lh = l.h; + if (/* tag */typeof r === "number") { return add_max_binding(v, d, l); } var rh = r.h; - var lh = l.h; if (lh > (rh + 2 | 0)) { return bal(l.l, l.v, l.d, join(l.r, v, d, r)); } else if (rh > (lh + 2 | 0)) { @@ -663,10 +665,10 @@ var $$Map = { } }; var concat = function (t1, t2) { - if (!t1) { + if (/* tag */typeof t1 === "number") { return t2; } - if (!t2) { + if (/* tag */typeof t2 === "number") { return t1; } var match = min_binding(t2); @@ -680,7 +682,7 @@ var $$Map = { } }; var split = function (x, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, undefined, @@ -715,42 +717,45 @@ var $$Map = { ]; }; var merge$1 = function (f, s1, s2) { - if (s1) { + if (/* tag */typeof s1 === "number") { + if (/* tag */typeof s2 === "number") { + return /* Empty */0; + } + + } else { var v1 = s1.v; if (s1.h >= height(s2)) { var match = split(v1, s2); return concat_or_join(merge$1(f, s1.l, match[0]), v1, Curry._3(f, v1, Caml_option.some(s1.d), match[1]), merge$1(f, s1.r, match[2])); } - } else if (!s2) { - return /* Empty */0; } - if (s2) { - var v2 = s2.v; - var match$1 = split(v2, s1); - return concat_or_join(merge$1(f, match$1[0], s2.l), v2, Curry._3(f, v2, match$1[1], Caml_option.some(s2.d)), merge$1(f, match$1[2], s2.r)); + if (/* tag */typeof s2 === "number") { + throw { + RE_EXN_ID: "Assert_failure", + _1: [ + "mapLabels.ml", + 393, + 10 + ], + Error: new Error() + }; } - throw { - RE_EXN_ID: "Assert_failure", - _1: [ - "mapLabels.ml", - 393, - 10 - ], - Error: new Error() - }; + var v2 = s2.v; + var match$1 = split(v2, s1); + return concat_or_join(merge$1(f, match$1[0], s2.l), v2, Curry._3(f, v2, match$1[1], Caml_option.some(s2.d)), merge$1(f, match$1[2], s2.r)); }; var union = function (f, s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return s2; } - if (!s2) { + var d1 = s1.d; + var v1 = s1.v; + if (/* tag */typeof s2 === "number") { return s1; } var d2 = s2.d; var v2 = s2.v; - var d1 = s1.d; - var v1 = s1.v; if (s1.h >= s2.h) { var match = split(v1, s2); var d2$1 = match[1]; @@ -773,7 +778,7 @@ var $$Map = { } }; var filter = function (p, m) { - if (!m) { + if (/* tag */typeof m === "number") { return /* Empty */0; } var r = m.r; @@ -794,7 +799,7 @@ var $$Map = { } }; var partition = function (p, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, /* Empty */0 @@ -825,7 +830,7 @@ var $$Map = { while(true) { var e = _e; var m = _m; - if (!m) { + if (/* tag */typeof m === "number") { return e; } _e = /* More */{ @@ -844,14 +849,14 @@ var $$Map = { while(true) { var e2 = _e2; var e1 = _e1; - if (!e1) { - if (e2) { - return -1; - } else { + if (/* tag */typeof e1 === "number") { + if (/* tag */typeof e2 === "number") { return 0; + } else { + return -1; } } - if (!e2) { + if (/* tag */typeof e2 === "number") { return 1; } var c = Curry._2(funarg.compare, e1._0, e2._0); @@ -873,14 +878,14 @@ var $$Map = { while(true) { var e2 = _e2; var e1 = _e1; - if (!e1) { - if (e2) { - return false; - } else { + if (/* tag */typeof e1 === "number") { + if (/* tag */typeof e2 === "number") { return true; + } else { + return false; } } - if (!e2) { + if (/* tag */typeof e2 === "number") { return false; } if (Curry._2(funarg.compare, e1._0, e2._0) !== 0) { @@ -895,17 +900,17 @@ var $$Map = { }; }; var cardinal = function (param) { - if (param) { - return (cardinal(param.l) + 1 | 0) + cardinal(param.r) | 0; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return (cardinal(param.l) + 1 | 0) + cardinal(param.r) | 0; } }; var bindings_aux = function (_accu, _param) { while(true) { var param = _param; var accu = _accu; - if (!param) { + if (/* tag */typeof param === "number") { return accu; } _param = param.l; @@ -964,15 +969,17 @@ var $$Map = { var $$Set = { Make: (function (funarg) { var height = function (param) { - if (param) { - return param.h; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return param.h; } }; var create = function (l, v, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; return /* Node */{ l: l, v: v, @@ -981,25 +988,27 @@ var $$Set = { }; }; var bal = function (l, v, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l.r; - var lv = l.v; - var ll = l.l; - if (height(ll) >= height(lr)) { - return create(ll, lv, create(lr, v, r)); - } - if (lr) { - return create(create(ll, lv, lr.l), lr.v, create(lr.r, v, r)); - } + if (/* tag */typeof l === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", Error: new Error() }; } + var lr = l.r; + var lv = l.v; + var ll = l.l; + if (height(ll) >= height(lr)) { + return create(ll, lv, create(lr, v, r)); + } + if (/* tag */typeof lr !== "number") { + return create(create(ll, lv, lr.l), lr.v, create(lr.r, v, r)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", @@ -1014,22 +1023,22 @@ var $$Set = { h: hl >= hr ? hl + 1 | 0 : hr + 1 | 0 }; } - if (r) { - var rr = r.r; - var rv = r.v; - var rl = r.l; - if (height(rr) >= height(rl)) { - return create(create(l, v, rl), rv, rr); - } - if (rl) { - return create(create(l, v, rl.l), rl.v, create(rl.r, rv, rr)); - } + if (/* tag */typeof r === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", Error: new Error() }; } + var rr = r.r; + var rv = r.v; + var rl = r.l; + if (height(rr) >= height(rl)) { + return create(create(l, v, rl), rv, rr); + } + if (/* tag */typeof rl !== "number") { + return create(create(l, v, rl.l), rl.v, create(rl.r, rv, rr)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", @@ -1037,7 +1046,7 @@ var $$Set = { }; }; var add = function (x, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Node */{ l: /* Empty */0, v: x, @@ -1076,28 +1085,28 @@ var $$Set = { }; }; var add_min_element = function (x, param) { - if (param) { - return bal(add_min_element(x, param.l), param.v, param.r); - } else { + if (/* tag */typeof param === "number") { return singleton(x); + } else { + return bal(add_min_element(x, param.l), param.v, param.r); } }; var add_max_element = function (x, param) { - if (param) { - return bal(param.l, param.v, add_max_element(x, param.r)); - } else { + if (/* tag */typeof param === "number") { return singleton(x); + } else { + return bal(param.l, param.v, add_max_element(x, param.r)); } }; var join = function (l, v, r) { - if (!l) { + if (/* tag */typeof l === "number") { return add_min_element(v, r); } - if (!r) { + var lh = l.h; + if (/* tag */typeof r === "number") { return add_max_element(v, l); } var rh = r.h; - var lh = l.h; if (lh > (rh + 2 | 0)) { return bal(l.l, l.v, join(l.r, v, r)); } else if (rh > (lh + 2 | 0)) { @@ -1109,28 +1118,28 @@ var $$Set = { var min_elt = function (_param) { while(true) { var param = _param; - if (param) { - var l = param.l; - if (!l) { - return param.v; - } - _param = l; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var l = param.l; + if (/* tag */typeof l === "number") { + return param.v; + } + _param = l; + continue ; }; }; var min_elt_opt = function (_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var l = param.l; - if (!l) { + if (/* tag */typeof l === "number") { return Caml_option.some(param.v); } _param = l; @@ -1140,28 +1149,28 @@ var $$Set = { var max_elt = function (_param) { while(true) { var param = _param; - if (param) { - var r = param.r; - if (!r) { - return param.v; - } - _param = r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var r = param.r; + if (/* tag */typeof r === "number") { + return param.v; + } + _param = r; + continue ; }; }; var max_elt_opt = function (_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var r = param.r; - if (!r) { + if (/* tag */typeof r === "number") { return Caml_option.some(param.v); } _param = r; @@ -1169,44 +1178,40 @@ var $$Set = { }; }; var remove_min_elt = function (param) { - if (param) { - var l = param.l; - if (l) { - return bal(remove_min_elt(l), param.v, param.r); - } else { - return param.r; - } + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Invalid_argument", + _1: "Set.remove_min_elt", + Error: new Error() + }; + } + var l = param.l; + if (/* tag */typeof l === "number") { + return param.r; + } else { + return bal(remove_min_elt(l), param.v, param.r); } - throw { - RE_EXN_ID: "Invalid_argument", - _1: "Set.remove_min_elt", - Error: new Error() - }; }; var merge = function (t1, t2) { - if (t1) { - if (t2) { - return bal(t1, min_elt(t2), remove_min_elt(t2)); - } else { - return t1; - } - } else { + if (/* tag */typeof t1 === "number") { return t2; + } else if (/* tag */typeof t2 === "number") { + return t1; + } else { + return bal(t1, min_elt(t2), remove_min_elt(t2)); } }; var concat = function (t1, t2) { - if (t1) { - if (t2) { - return join(t1, min_elt(t2), remove_min_elt(t2)); - } else { - return t1; - } - } else { + if (/* tag */typeof t1 === "number") { return t2; + } else if (/* tag */typeof t2 === "number") { + return t1; + } else { + return join(t1, min_elt(t2), remove_min_elt(t2)); } }; var split = function (x, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, false, @@ -1240,16 +1245,16 @@ var $$Set = { ]; }; var is_empty = function (param) { - if (param) { - return false; - } else { + if (/* tag */typeof param === "number") { return true; + } else { + return false; } }; var mem = function (x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } var c = Curry._2(funarg.compare, x, param.v); @@ -1261,7 +1266,7 @@ var $$Set = { }; }; var remove = function (x, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Empty */0; } var r = t.r; @@ -1287,16 +1292,16 @@ var $$Set = { } }; var union = function (s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return s2; } - if (!s2) { + var h1 = s1.h; + var v1 = s1.v; + if (/* tag */typeof s2 === "number") { return s1; } var h2 = s2.h; var v2 = s2.v; - var h1 = s1.h; - var v1 = s1.v; if (h1 >= h2) { if (h2 === 1) { return add(v2, s1); @@ -1311,10 +1316,10 @@ var $$Set = { return join(union(match$1[0], s2.l), v2, union(match$1[2], s2.r)); }; var inter = function (s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return /* Empty */0; } - if (!s2) { + if (/* tag */typeof s2 === "number") { return /* Empty */0; } var r1 = s1.r; @@ -1329,10 +1334,10 @@ var $$Set = { } }; var diff = function (s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return /* Empty */0; } - if (!s2) { + if (/* tag */typeof s2 === "number") { return s1; } var r1 = s1.r; @@ -1350,7 +1355,7 @@ var $$Set = { while(true) { var e = _e; var s = _s; - if (!s) { + if (/* tag */typeof s === "number") { return e; } _e = /* More */{ @@ -1366,14 +1371,14 @@ var $$Set = { while(true) { var e2 = _e2; var e1 = _e1; - if (!e1) { - if (e2) { - return -1; - } else { + if (/* tag */typeof e1 === "number") { + if (/* tag */typeof e2 === "number") { return 0; + } else { + return -1; } } - if (!e2) { + if (/* tag */typeof e2 === "number") { return 1; } var c = Curry._2(funarg.compare, e1._0, e2._0); @@ -1395,17 +1400,17 @@ var $$Set = { while(true) { var s2 = _s2; var s1 = _s1; - if (!s1) { + if (/* tag */typeof s1 === "number") { return true; } - if (!s2) { + var r1 = s1.r; + var v1 = s1.v; + var l1 = s1.l; + if (/* tag */typeof s2 === "number") { return false; } var r2 = s2.r; var l2 = s2.l; - var r1 = s1.r; - var v1 = s1.v; - var l1 = s1.l; var c = Curry._2(funarg.compare, v1, s2.v); if (c === 0) { if (!subset(l1, l2)) { @@ -1442,7 +1447,7 @@ var $$Set = { var iter = function (f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } iter(f, param.l); @@ -1455,7 +1460,7 @@ var $$Set = { while(true) { var accu = _accu; var s = _s; - if (!s) { + if (/* tag */typeof s === "number") { return accu; } _accu = Curry._2(f, s.v, fold(f, s.l, accu)); @@ -1466,7 +1471,7 @@ var $$Set = { var for_all = function (p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return true; } if (!Curry._1(p, param.v)) { @@ -1482,7 +1487,7 @@ var $$Set = { var exists = function (p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } if (Curry._1(p, param.v)) { @@ -1496,7 +1501,7 @@ var $$Set = { }; }; var filter = function (p, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Empty */0; } var r = t.r; @@ -1516,7 +1521,7 @@ var $$Set = { } }; var partition = function (p, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, /* Empty */0 @@ -1543,17 +1548,17 @@ var $$Set = { } }; var cardinal = function (param) { - if (param) { - return (cardinal(param.l) + 1 | 0) + cardinal(param.r) | 0; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return (cardinal(param.l) + 1 | 0) + cardinal(param.r) | 0; } }; var elements_aux = function (_accu, _param) { while(true) { var param = _param; var accu = _accu; - if (!param) { + if (/* tag */typeof param === "number") { return accu; } _param = param.l; @@ -1570,26 +1575,26 @@ var $$Set = { var find = function (x, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - var c = Curry._2(funarg.compare, x, v); - if (c === 0) { - return v; - } - _param = c < 0 ? param.l : param.r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var v = param.v; + var c = Curry._2(funarg.compare, x, v); + if (c === 0) { + return v; + } + _param = c < 0 ? param.l : param.r; + continue ; }; }; var find_first_aux = function (_v0, f, _param) { while(true) { var param = _param; var v0 = _v0; - if (!param) { + if (/* tag */typeof param === "number") { return v0; } var v = param.v; @@ -1605,25 +1610,25 @@ var $$Set = { var find_first = function (f, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - if (Curry._1(f, v)) { - return find_first_aux(v, f, param.l); - } - _param = param.r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var v = param.v; + if (Curry._1(f, v)) { + return find_first_aux(v, f, param.l); + } + _param = param.r; + continue ; }; }; var find_first_opt_aux = function (_v0, f, _param) { while(true) { var param = _param; var v0 = _v0; - if (!param) { + if (/* tag */typeof param === "number") { return Caml_option.some(v0); } var v = param.v; @@ -1639,7 +1644,7 @@ var $$Set = { var find_first_opt = function (f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -1654,7 +1659,7 @@ var $$Set = { while(true) { var param = _param; var v0 = _v0; - if (!param) { + if (/* tag */typeof param === "number") { return v0; } var v = param.v; @@ -1670,25 +1675,25 @@ var $$Set = { var find_last = function (f, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - if (Curry._1(f, v)) { - return find_last_aux(v, f, param.r); - } - _param = param.l; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var v = param.v; + if (Curry._1(f, v)) { + return find_last_aux(v, f, param.r); + } + _param = param.l; + continue ; }; }; var find_last_opt_aux = function (_v0, f, _param) { while(true) { var param = _param; var v0 = _v0; - if (!param) { + if (/* tag */typeof param === "number") { return Caml_option.some(v0); } var v = param.v; @@ -1704,7 +1709,7 @@ var $$Set = { var find_last_opt = function (f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -1718,7 +1723,7 @@ var $$Set = { var find_opt = function (x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -1738,7 +1743,7 @@ var $$Set = { } }; var map = function (f, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Empty */0; } var r = t.r; diff --git a/lib/js/queue.js b/lib/js/queue.js index 2e7ec96f00..3e1e32c0e1 100644 --- a/lib/js/queue.js +++ b/lib/js/queue.js @@ -25,20 +25,20 @@ function add(x, q) { next: /* Nil */0 }; var last = q.last; - if (last) { - q.length = q.length + 1 | 0; - last.next = cell; - q.last = cell; - } else { + if (/* tag */typeof last === "number") { q.length = 1; q.first = cell; q.last = cell; + return ; } + q.length = q.length + 1 | 0; + last.next = cell; + q.last = cell; } function peek(q) { var match = q.first; - if (match) { + if (/* tag */typeof match !== "number") { return match.content; } throw { @@ -49,22 +49,21 @@ function peek(q) { function take(q) { var match = q.first; - if (match) { - var content = match.content; - var next = match.next; - if (next) { - q.length = q.length - 1 | 0; - q.first = next; - return content; - } else { - clear(q); - return content; - } + if (/* tag */typeof match === "number") { + throw { + RE_EXN_ID: Empty, + Error: new Error() + }; } - throw { - RE_EXN_ID: Empty, - Error: new Error() - }; + var content = match.content; + var next = match.next; + if (/* tag */typeof next === "number") { + clear(q); + return content; + } + q.length = q.length - 1 | 0; + q.first = next; + return content; } function copy(q) { @@ -78,23 +77,23 @@ function copy(q) { while(true) { var cell = _cell; var prev = _prev; - if (cell) { - var next = cell.next; - var res = /* Cons */{ - content: cell.content, - next: /* Nil */0 - }; - if (prev) { - prev.next = res; - } else { - q_res.first = res; - } - _cell = next; - _prev = res; - continue ; + if (/* tag */typeof cell === "number") { + q_res.last = prev; + return q_res; + } + var next = cell.next; + var res = /* Cons */{ + content: cell.content, + next: /* Nil */0 + }; + if (/* tag */typeof prev === "number") { + q_res.first = res; + } else { + prev.next = res; } - q_res.last = prev; - return q_res; + _cell = next; + _prev = res; + continue ; }; } @@ -110,7 +109,7 @@ function iter(f, q) { var _cell = q.first; while(true) { var cell = _cell; - if (!cell) { + if (/* tag */typeof cell === "number") { return ; } var next = cell.next; @@ -126,7 +125,7 @@ function fold(f, accu, q) { while(true) { var cell = _cell; var accu$1 = _accu; - if (!cell) { + if (/* tag */typeof cell === "number") { return accu$1; } var next = cell.next; @@ -142,17 +141,16 @@ function transfer(q1, q2) { return ; } var last = q2.last; - if (last) { - q2.length = q2.length + q1.length | 0; - last.next = q1.first; - q2.last = q1.last; - return clear(q1); - } else { + if (/* tag */typeof last === "number") { q2.length = q1.length; q2.first = q1.first; q2.last = q1.last; return clear(q1); } + q2.length = q2.length + q1.length | 0; + last.next = q1.first; + q2.last = q1.last; + clear(q1); } var push = add; diff --git a/lib/js/set.js b/lib/js/set.js index b52ab620bd..b2be2ce778 100644 --- a/lib/js/set.js +++ b/lib/js/set.js @@ -6,15 +6,17 @@ var Caml_option = require("./caml_option.js"); function Make(funarg) { var height = function (param) { - if (param) { - return param.h; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return param.h; } }; var create = function (l, v, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; return /* Node */{ l: l, v: v, @@ -23,25 +25,27 @@ function Make(funarg) { }; }; var bal = function (l, v, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l.r; - var lv = l.v; - var ll = l.l; - if (height(ll) >= height(lr)) { - return create(ll, lv, create(lr, v, r)); - } - if (lr) { - return create(create(ll, lv, lr.l), lr.v, create(lr.r, v, r)); - } + if (/* tag */typeof l === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", Error: new Error() }; } + var lr = l.r; + var lv = l.v; + var ll = l.l; + if (height(ll) >= height(lr)) { + return create(ll, lv, create(lr, v, r)); + } + if (/* tag */typeof lr !== "number") { + return create(create(ll, lv, lr.l), lr.v, create(lr.r, v, r)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", @@ -56,22 +60,22 @@ function Make(funarg) { h: hl >= hr ? hl + 1 | 0 : hr + 1 | 0 }; } - if (r) { - var rr = r.r; - var rv = r.v; - var rl = r.l; - if (height(rr) >= height(rl)) { - return create(create(l, v, rl), rv, rr); - } - if (rl) { - return create(create(l, v, rl.l), rl.v, create(rl.r, rv, rr)); - } + if (/* tag */typeof r === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", Error: new Error() }; } + var rr = r.r; + var rv = r.v; + var rl = r.l; + if (height(rr) >= height(rl)) { + return create(create(l, v, rl), rv, rr); + } + if (/* tag */typeof rl !== "number") { + return create(create(l, v, rl.l), rl.v, create(rl.r, rv, rr)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", @@ -79,7 +83,7 @@ function Make(funarg) { }; }; var add = function (x, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Node */{ l: /* Empty */0, v: x, @@ -118,28 +122,28 @@ function Make(funarg) { }; }; var add_min_element = function (x, param) { - if (param) { - return bal(add_min_element(x, param.l), param.v, param.r); - } else { + if (/* tag */typeof param === "number") { return singleton(x); + } else { + return bal(add_min_element(x, param.l), param.v, param.r); } }; var add_max_element = function (x, param) { - if (param) { - return bal(param.l, param.v, add_max_element(x, param.r)); - } else { + if (/* tag */typeof param === "number") { return singleton(x); + } else { + return bal(param.l, param.v, add_max_element(x, param.r)); } }; var join = function (l, v, r) { - if (!l) { + if (/* tag */typeof l === "number") { return add_min_element(v, r); } - if (!r) { + var lh = l.h; + if (/* tag */typeof r === "number") { return add_max_element(v, l); } var rh = r.h; - var lh = l.h; if (lh > (rh + 2 | 0)) { return bal(l.l, l.v, join(l.r, v, r)); } else if (rh > (lh + 2 | 0)) { @@ -151,28 +155,28 @@ function Make(funarg) { var min_elt = function (_param) { while(true) { var param = _param; - if (param) { - var l = param.l; - if (!l) { - return param.v; - } - _param = l; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var l = param.l; + if (/* tag */typeof l === "number") { + return param.v; + } + _param = l; + continue ; }; }; var min_elt_opt = function (_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var l = param.l; - if (!l) { + if (/* tag */typeof l === "number") { return Caml_option.some(param.v); } _param = l; @@ -182,28 +186,28 @@ function Make(funarg) { var max_elt = function (_param) { while(true) { var param = _param; - if (param) { - var r = param.r; - if (!r) { - return param.v; - } - _param = r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var r = param.r; + if (/* tag */typeof r === "number") { + return param.v; + } + _param = r; + continue ; }; }; var max_elt_opt = function (_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var r = param.r; - if (!r) { + if (/* tag */typeof r === "number") { return Caml_option.some(param.v); } _param = r; @@ -211,33 +215,31 @@ function Make(funarg) { }; }; var remove_min_elt = function (param) { - if (param) { - var l = param.l; - if (l) { - return bal(remove_min_elt(l), param.v, param.r); - } else { - return param.r; - } + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Invalid_argument", + _1: "Set.remove_min_elt", + Error: new Error() + }; + } + var l = param.l; + if (/* tag */typeof l === "number") { + return param.r; + } else { + return bal(remove_min_elt(l), param.v, param.r); } - throw { - RE_EXN_ID: "Invalid_argument", - _1: "Set.remove_min_elt", - Error: new Error() - }; }; var concat = function (t1, t2) { - if (t1) { - if (t2) { - return join(t1, min_elt(t2), remove_min_elt(t2)); - } else { - return t1; - } - } else { + if (/* tag */typeof t1 === "number") { return t2; + } else if (/* tag */typeof t2 === "number") { + return t1; + } else { + return join(t1, min_elt(t2), remove_min_elt(t2)); } }; var split = function (x, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, false, @@ -271,16 +273,16 @@ function Make(funarg) { ]; }; var is_empty = function (param) { - if (param) { - return false; - } else { + if (/* tag */typeof param === "number") { return true; + } else { + return false; } }; var mem = function (x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } var c = Curry._2(funarg.compare, x, param.v); @@ -292,7 +294,7 @@ function Make(funarg) { }; }; var remove = function (x, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Empty */0; } var r = t.r; @@ -300,14 +302,12 @@ function Make(funarg) { var l = t.l; var c = Curry._2(funarg.compare, x, v); if (c === 0) { - if (l) { - if (r) { - return bal(l, min_elt(r), remove_min_elt(r)); - } else { - return l; - } - } else { + if (/* tag */typeof l === "number") { return r; + } else if (/* tag */typeof r === "number") { + return l; + } else { + return bal(l, min_elt(r), remove_min_elt(r)); } } if (c < 0) { @@ -326,16 +326,16 @@ function Make(funarg) { } }; var union = function (s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return s2; } - if (!s2) { + var h1 = s1.h; + var v1 = s1.v; + if (/* tag */typeof s2 === "number") { return s1; } var h2 = s2.h; var v2 = s2.v; - var h1 = s1.h; - var v1 = s1.v; if (h1 >= h2) { if (h2 === 1) { return add(v2, s1); @@ -350,10 +350,10 @@ function Make(funarg) { return join(union(match$1[0], s2.l), v2, union(match$1[2], s2.r)); }; var inter = function (s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return /* Empty */0; } - if (!s2) { + if (/* tag */typeof s2 === "number") { return /* Empty */0; } var r1 = s1.r; @@ -368,10 +368,10 @@ function Make(funarg) { } }; var diff = function (s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return /* Empty */0; } - if (!s2) { + if (/* tag */typeof s2 === "number") { return s1; } var r1 = s1.r; @@ -389,7 +389,7 @@ function Make(funarg) { while(true) { var e = _e; var s = _s; - if (!s) { + if (/* tag */typeof s === "number") { return e; } _e = /* More */{ @@ -407,14 +407,14 @@ function Make(funarg) { while(true) { var e2 = _e2; var e1 = _e1; - if (!e1) { - if (e2) { - return -1; - } else { + if (/* tag */typeof e1 === "number") { + if (/* tag */typeof e2 === "number") { return 0; + } else { + return -1; } } - if (!e2) { + if (/* tag */typeof e2 === "number") { return 1; } var c = Curry._2(funarg.compare, e1._0, e2._0); @@ -433,17 +433,17 @@ function Make(funarg) { while(true) { var s2 = _s2; var s1 = _s1; - if (!s1) { + if (/* tag */typeof s1 === "number") { return true; } - if (!s2) { + var r1 = s1.r; + var v1 = s1.v; + var l1 = s1.l; + if (/* tag */typeof s2 === "number") { return false; } var r2 = s2.r; var l2 = s2.l; - var r1 = s1.r; - var v1 = s1.v; - var l1 = s1.l; var c = Curry._2(funarg.compare, v1, s2.v); if (c === 0) { if (!subset(l1, l2)) { @@ -480,7 +480,7 @@ function Make(funarg) { var iter = function (f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } iter(f, param.l); @@ -493,7 +493,7 @@ function Make(funarg) { while(true) { var accu = _accu; var s = _s; - if (!s) { + if (/* tag */typeof s === "number") { return accu; } _accu = Curry._2(f, s.v, fold(f, s.l, accu)); @@ -504,7 +504,7 @@ function Make(funarg) { var for_all = function (p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return true; } if (!Curry._1(p, param.v)) { @@ -520,7 +520,7 @@ function Make(funarg) { var exists = function (p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } if (Curry._1(p, param.v)) { @@ -534,7 +534,7 @@ function Make(funarg) { }; }; var filter = function (p, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Empty */0; } var r = t.r; @@ -554,7 +554,7 @@ function Make(funarg) { } }; var partition = function (p, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, /* Empty */0 @@ -581,17 +581,17 @@ function Make(funarg) { } }; var cardinal = function (param) { - if (param) { - return (cardinal(param.l) + 1 | 0) + cardinal(param.r) | 0; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return (cardinal(param.l) + 1 | 0) + cardinal(param.r) | 0; } }; var elements_aux = function (_accu, _param) { while(true) { var param = _param; var accu = _accu; - if (!param) { + if (/* tag */typeof param === "number") { return accu; } _param = param.l; @@ -608,58 +608,58 @@ function Make(funarg) { var find = function (x, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - var c = Curry._2(funarg.compare, x, v); - if (c === 0) { - return v; - } - _param = c < 0 ? param.l : param.r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var v = param.v; + var c = Curry._2(funarg.compare, x, v); + if (c === 0) { + return v; + } + _param = c < 0 ? param.l : param.r; + continue ; }; }; var find_first = function (f, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - if (Curry._1(f, v)) { - var _v0 = v; - var _param$1 = param.l; - while(true) { - var param$1 = _param$1; - var v0 = _v0; - if (!param$1) { - return v0; - } - var v$1 = param$1.v; - if (Curry._1(f, v$1)) { - _param$1 = param$1.l; - _v0 = v$1; - continue ; - } - _param$1 = param$1.r; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + var v = param.v; + if (Curry._1(f, v)) { + var _v0 = v; + var _param$1 = param.l; + while(true) { + var param$1 = _param$1; + var v0 = _v0; + if (/* tag */typeof param$1 === "number") { + return v0; + } + var v$1 = param$1.v; + if (Curry._1(f, v$1)) { + _param$1 = param$1.l; + _v0 = v$1; continue ; - }; - } - _param = param.r; - continue ; + } + _param$1 = param$1.r; + continue ; + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + _param = param.r; + continue ; }; }; var find_first_opt = function (f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -669,7 +669,7 @@ function Make(funarg) { while(true) { var param$1 = _param$1; var v0 = _v0; - if (!param$1) { + if (/* tag */typeof param$1 === "number") { return Caml_option.some(v0); } var v$1 = param$1.v; @@ -689,40 +689,40 @@ function Make(funarg) { var find_last = function (f, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - if (Curry._1(f, v)) { - var _v0 = v; - var _param$1 = param.r; - while(true) { - var param$1 = _param$1; - var v0 = _v0; - if (!param$1) { - return v0; - } - var v$1 = param$1.v; - if (Curry._1(f, v$1)) { - _param$1 = param$1.r; - _v0 = v$1; - continue ; - } - _param$1 = param$1.l; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; + } + var v = param.v; + if (Curry._1(f, v)) { + var _v0 = v; + var _param$1 = param.r; + while(true) { + var param$1 = _param$1; + var v0 = _v0; + if (/* tag */typeof param$1 === "number") { + return v0; + } + var v$1 = param$1.v; + if (Curry._1(f, v$1)) { + _param$1 = param$1.r; + _v0 = v$1; continue ; - }; - } - _param = param.l; - continue ; + } + _param$1 = param$1.l; + continue ; + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + _param = param.l; + continue ; }; }; var find_last_opt = function (f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -732,7 +732,7 @@ function Make(funarg) { while(true) { var param$1 = _param$1; var v0 = _v0; - if (!param$1) { + if (/* tag */typeof param$1 === "number") { return Caml_option.some(v0); } var v$1 = param$1.v; @@ -752,7 +752,7 @@ function Make(funarg) { var find_opt = function (x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -765,7 +765,7 @@ function Make(funarg) { }; }; var map = function (f, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Empty */0; } var r = t.r; diff --git a/lib/js/setLabels.js b/lib/js/setLabels.js index 8688ef3c3f..9c51e792dd 100644 --- a/lib/js/setLabels.js +++ b/lib/js/setLabels.js @@ -6,15 +6,17 @@ var Caml_option = require("./caml_option.js"); function Make(Ord) { var height = function (param) { - if (param) { - return param.h; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return param.h; } }; var create = function (l, v, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; return /* Node */{ l: l, v: v, @@ -23,25 +25,27 @@ function Make(Ord) { }; }; var bal = function (l, v, r) { - var hl = l ? l.h : 0; - var hr = r ? r.h : 0; + var hl; + hl = /* tag */typeof l === "number" ? 0 : l.h; + var hr; + hr = /* tag */typeof r === "number" ? 0 : r.h; if (hl > (hr + 2 | 0)) { - if (l) { - var lr = l.r; - var lv = l.v; - var ll = l.l; - if (height(ll) >= height(lr)) { - return create(ll, lv, create(lr, v, r)); - } - if (lr) { - return create(create(ll, lv, lr.l), lr.v, create(lr.r, v, r)); - } + if (/* tag */typeof l === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", Error: new Error() }; } + var lr = l.r; + var lv = l.v; + var ll = l.l; + if (height(ll) >= height(lr)) { + return create(ll, lv, create(lr, v, r)); + } + if (/* tag */typeof lr !== "number") { + return create(create(ll, lv, lr.l), lr.v, create(lr.r, v, r)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", @@ -56,22 +60,22 @@ function Make(Ord) { h: hl >= hr ? hl + 1 | 0 : hr + 1 | 0 }; } - if (r) { - var rr = r.r; - var rv = r.v; - var rl = r.l; - if (height(rr) >= height(rl)) { - return create(create(l, v, rl), rv, rr); - } - if (rl) { - return create(create(l, v, rl.l), rl.v, create(rl.r, rv, rr)); - } + if (/* tag */typeof r === "number") { throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", Error: new Error() }; } + var rr = r.r; + var rv = r.v; + var rl = r.l; + if (height(rr) >= height(rl)) { + return create(create(l, v, rl), rv, rr); + } + if (/* tag */typeof rl !== "number") { + return create(create(l, v, rl.l), rl.v, create(rl.r, rv, rr)); + } throw { RE_EXN_ID: "Invalid_argument", _1: "Set.bal", @@ -79,7 +83,7 @@ function Make(Ord) { }; }; var add = function (x, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Node */{ l: /* Empty */0, v: x, @@ -118,28 +122,28 @@ function Make(Ord) { }; }; var add_min_element = function (x, param) { - if (param) { - return bal(add_min_element(x, param.l), param.v, param.r); - } else { + if (/* tag */typeof param === "number") { return singleton(x); + } else { + return bal(add_min_element(x, param.l), param.v, param.r); } }; var add_max_element = function (x, param) { - if (param) { - return bal(param.l, param.v, add_max_element(x, param.r)); - } else { + if (/* tag */typeof param === "number") { return singleton(x); + } else { + return bal(param.l, param.v, add_max_element(x, param.r)); } }; var join = function (l, v, r) { - if (!l) { + if (/* tag */typeof l === "number") { return add_min_element(v, r); } - if (!r) { + var lh = l.h; + if (/* tag */typeof r === "number") { return add_max_element(v, l); } var rh = r.h; - var lh = l.h; if (lh > (rh + 2 | 0)) { return bal(l.l, l.v, join(l.r, v, r)); } else if (rh > (lh + 2 | 0)) { @@ -151,28 +155,28 @@ function Make(Ord) { var min_elt = function (_param) { while(true) { var param = _param; - if (param) { - var l = param.l; - if (!l) { - return param.v; - } - _param = l; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var l = param.l; + if (/* tag */typeof l === "number") { + return param.v; + } + _param = l; + continue ; }; }; var min_elt_opt = function (_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var l = param.l; - if (!l) { + if (/* tag */typeof l === "number") { return Caml_option.some(param.v); } _param = l; @@ -182,28 +186,28 @@ function Make(Ord) { var max_elt = function (_param) { while(true) { var param = _param; - if (param) { - var r = param.r; - if (!r) { - return param.v; - } - _param = r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var r = param.r; + if (/* tag */typeof r === "number") { + return param.v; + } + _param = r; + continue ; }; }; var max_elt_opt = function (_param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var r = param.r; - if (!r) { + if (/* tag */typeof r === "number") { return Caml_option.some(param.v); } _param = r; @@ -211,44 +215,40 @@ function Make(Ord) { }; }; var remove_min_elt = function (param) { - if (param) { - var l = param.l; - if (l) { - return bal(remove_min_elt(l), param.v, param.r); - } else { - return param.r; - } + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Invalid_argument", + _1: "Set.remove_min_elt", + Error: new Error() + }; + } + var l = param.l; + if (/* tag */typeof l === "number") { + return param.r; + } else { + return bal(remove_min_elt(l), param.v, param.r); } - throw { - RE_EXN_ID: "Invalid_argument", - _1: "Set.remove_min_elt", - Error: new Error() - }; }; var merge = function (t1, t2) { - if (t1) { - if (t2) { - return bal(t1, min_elt(t2), remove_min_elt(t2)); - } else { - return t1; - } - } else { + if (/* tag */typeof t1 === "number") { return t2; + } else if (/* tag */typeof t2 === "number") { + return t1; + } else { + return bal(t1, min_elt(t2), remove_min_elt(t2)); } }; var concat = function (t1, t2) { - if (t1) { - if (t2) { - return join(t1, min_elt(t2), remove_min_elt(t2)); - } else { - return t1; - } - } else { + if (/* tag */typeof t1 === "number") { return t2; + } else if (/* tag */typeof t2 === "number") { + return t1; + } else { + return join(t1, min_elt(t2), remove_min_elt(t2)); } }; var split = function (x, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, false, @@ -282,16 +282,16 @@ function Make(Ord) { ]; }; var is_empty = function (param) { - if (param) { - return false; - } else { + if (/* tag */typeof param === "number") { return true; + } else { + return false; } }; var mem = function (x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } var c = Curry._2(Ord.compare, x, param.v); @@ -303,7 +303,7 @@ function Make(Ord) { }; }; var remove = function (x, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Empty */0; } var r = t.r; @@ -329,16 +329,16 @@ function Make(Ord) { } }; var union = function (s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return s2; } - if (!s2) { + var h1 = s1.h; + var v1 = s1.v; + if (/* tag */typeof s2 === "number") { return s1; } var h2 = s2.h; var v2 = s2.v; - var h1 = s1.h; - var v1 = s1.v; if (h1 >= h2) { if (h2 === 1) { return add(v2, s1); @@ -353,10 +353,10 @@ function Make(Ord) { return join(union(match$1[0], s2.l), v2, union(match$1[2], s2.r)); }; var inter = function (s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return /* Empty */0; } - if (!s2) { + if (/* tag */typeof s2 === "number") { return /* Empty */0; } var r1 = s1.r; @@ -371,10 +371,10 @@ function Make(Ord) { } }; var diff = function (s1, s2) { - if (!s1) { + if (/* tag */typeof s1 === "number") { return /* Empty */0; } - if (!s2) { + if (/* tag */typeof s2 === "number") { return s1; } var r1 = s1.r; @@ -392,7 +392,7 @@ function Make(Ord) { while(true) { var e = _e; var s = _s; - if (!s) { + if (/* tag */typeof s === "number") { return e; } _e = /* More */{ @@ -408,14 +408,14 @@ function Make(Ord) { while(true) { var e2 = _e2; var e1 = _e1; - if (!e1) { - if (e2) { - return -1; - } else { + if (/* tag */typeof e1 === "number") { + if (/* tag */typeof e2 === "number") { return 0; + } else { + return -1; } } - if (!e2) { + if (/* tag */typeof e2 === "number") { return 1; } var c = Curry._2(Ord.compare, e1._0, e2._0); @@ -437,17 +437,17 @@ function Make(Ord) { while(true) { var s2 = _s2; var s1 = _s1; - if (!s1) { + if (/* tag */typeof s1 === "number") { return true; } - if (!s2) { + var r1 = s1.r; + var v1 = s1.v; + var l1 = s1.l; + if (/* tag */typeof s2 === "number") { return false; } var r2 = s2.r; var l2 = s2.l; - var r1 = s1.r; - var v1 = s1.v; - var l1 = s1.l; var c = Curry._2(Ord.compare, v1, s2.v); if (c === 0) { if (!subset(l1, l2)) { @@ -484,7 +484,7 @@ function Make(Ord) { var iter = function (f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } iter(f, param.l); @@ -497,7 +497,7 @@ function Make(Ord) { while(true) { var accu = _accu; var s = _s; - if (!s) { + if (/* tag */typeof s === "number") { return accu; } _accu = Curry._2(f, s.v, fold(f, s.l, accu)); @@ -508,7 +508,7 @@ function Make(Ord) { var for_all = function (p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return true; } if (!Curry._1(p, param.v)) { @@ -524,7 +524,7 @@ function Make(Ord) { var exists = function (p, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return false; } if (Curry._1(p, param.v)) { @@ -538,7 +538,7 @@ function Make(Ord) { }; }; var filter = function (p, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Empty */0; } var r = t.r; @@ -558,7 +558,7 @@ function Make(Ord) { } }; var partition = function (p, param) { - if (!param) { + if (/* tag */typeof param === "number") { return [ /* Empty */0, /* Empty */0 @@ -585,17 +585,17 @@ function Make(Ord) { } }; var cardinal = function (param) { - if (param) { - return (cardinal(param.l) + 1 | 0) + cardinal(param.r) | 0; - } else { + if (/* tag */typeof param === "number") { return 0; + } else { + return (cardinal(param.l) + 1 | 0) + cardinal(param.r) | 0; } }; var elements_aux = function (_accu, _param) { while(true) { var param = _param; var accu = _accu; - if (!param) { + if (/* tag */typeof param === "number") { return accu; } _param = param.l; @@ -612,26 +612,26 @@ function Make(Ord) { var find = function (x, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - var c = Curry._2(Ord.compare, x, v); - if (c === 0) { - return v; - } - _param = c < 0 ? param.l : param.r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var v = param.v; + var c = Curry._2(Ord.compare, x, v); + if (c === 0) { + return v; + } + _param = c < 0 ? param.l : param.r; + continue ; }; }; var find_first_aux = function (_v0, f, _param) { while(true) { var param = _param; var v0 = _v0; - if (!param) { + if (/* tag */typeof param === "number") { return v0; } var v = param.v; @@ -647,25 +647,25 @@ function Make(Ord) { var find_first = function (f, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - if (Curry._1(f, v)) { - return find_first_aux(v, f, param.l); - } - _param = param.r; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var v = param.v; + if (Curry._1(f, v)) { + return find_first_aux(v, f, param.l); + } + _param = param.r; + continue ; }; }; var find_first_opt_aux = function (_v0, f, _param) { while(true) { var param = _param; var v0 = _v0; - if (!param) { + if (/* tag */typeof param === "number") { return Caml_option.some(v0); } var v = param.v; @@ -681,7 +681,7 @@ function Make(Ord) { var find_first_opt = function (f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -696,7 +696,7 @@ function Make(Ord) { while(true) { var param = _param; var v0 = _v0; - if (!param) { + if (/* tag */typeof param === "number") { return v0; } var v = param.v; @@ -712,25 +712,25 @@ function Make(Ord) { var find_last = function (f, _param) { while(true) { var param = _param; - if (param) { - var v = param.v; - if (Curry._1(f, v)) { - return find_last_aux(v, f, param.r); - } - _param = param.l; - continue ; + if (/* tag */typeof param === "number") { + throw { + RE_EXN_ID: "Not_found", + Error: new Error() + }; } - throw { - RE_EXN_ID: "Not_found", - Error: new Error() - }; + var v = param.v; + if (Curry._1(f, v)) { + return find_last_aux(v, f, param.r); + } + _param = param.l; + continue ; }; }; var find_last_opt_aux = function (_v0, f, _param) { while(true) { var param = _param; var v0 = _v0; - if (!param) { + if (/* tag */typeof param === "number") { return Caml_option.some(v0); } var v = param.v; @@ -746,7 +746,7 @@ function Make(Ord) { var find_last_opt = function (f, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -760,7 +760,7 @@ function Make(Ord) { var find_opt = function (x, _param) { while(true) { var param = _param; - if (!param) { + if (/* tag */typeof param === "number") { return ; } var v = param.v; @@ -780,7 +780,7 @@ function Make(Ord) { } }; var map = function (f, t) { - if (!t) { + if (/* tag */typeof t === "number") { return /* Empty */0; } var r = t.r; diff --git a/lib/js/stream.js b/lib/js/stream.js index 7a550fbdc7..ed0f234881 100644 --- a/lib/js/stream.js +++ b/lib/js/stream.js @@ -31,7 +31,7 @@ function data(param) { function get_data(count, _d) { while(true) { var d = _d; - if (typeof d === "number") { + if (/* tag */typeof d === "number") { return d; } switch (d.TAG | 0) { @@ -40,7 +40,7 @@ function get_data(count, _d) { case /* Sapp */1 : var d2 = d._1; var match = get_data(count, d._0); - if (typeof match === "number") { + if (/* tag */typeof match === "number") { _d = d2; continue ; } @@ -102,7 +102,7 @@ function get_data(count, _d) { function peek_data(s) { while(true) { var f = s.data; - if (typeof f === "number") { + if (/* tag */typeof f === "number") { return ; } switch (f.TAG | 0) { @@ -110,7 +110,7 @@ function peek_data(s) { return Caml_option.some(f._0); case /* Sapp */1 : var d = get_data(s.count, s.data); - if (typeof d === "number") { + if (/* tag */typeof d === "number") { return ; } if (d.TAG === /* Scons */0) { @@ -153,7 +153,7 @@ function peek(s) { function junk_data(s) { while(true) { var g = s.data; - if (typeof g !== "number") { + if (/* tag */typeof g !== "number") { switch (g.TAG | 0) { case /* Scons */0 : s.count = s.count + 1 | 0; @@ -428,7 +428,7 @@ function slazy(f) { } function dump_data(f, param) { - if (typeof param === "number") { + if (/* tag */typeof param === "number") { console.log("Sempty"); return ; }