Skip to content

Commit f1432ad

Browse files
DZakhcristianoc
authored andcommitted
Remove unreachable case with const extention cases
1 parent ffb6e9a commit f1432ad

File tree

1 file changed

+13
-23
lines changed

1 file changed

+13
-23
lines changed

jscomp/ml/matching.ml

Lines changed: 13 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2273,13 +2273,13 @@ let split_variant_cases tag_lambda_list =
22732273
sort_int_lambda_list const,
22742274
sort_int_lambda_list nonconst
22752275

2276-
let split_extension_cases tag_lambda_list =
2276+
let get_extension_cases tag_lambda_list =
22772277
let rec split_rec = function
2278-
[] -> ([], [])
2278+
[] -> []
22792279
| (cstr, act) :: rem ->
2280-
let (consts, nonconsts) = split_rec rem in
2280+
let nonconsts = split_rec rem in
22812281
match cstr with
2282-
| Cstr_extension(path, _) -> (consts, (path, act) :: nonconsts)
2282+
| Cstr_extension(path, _) -> ((path, act) :: nonconsts)
22832283
| _ -> assert false in
22842284
split_rec tag_lambda_list
22852285

@@ -2293,35 +2293,25 @@ let combine_constructor sw_names loc arg ex_pat cstr partial ctx def
22932293
let fail, local_jumps =
22942294
mk_failaction_neg partial ctx def in
22952295
let lambda1 =
2296-
let consts, nonconsts = split_extension_cases tag_lambda_list in
2297-
let default, consts, nonconsts =
2296+
let extension_cases = get_extension_cases tag_lambda_list in
2297+
let default, extension_cases =
22982298
match fail with
22992299
| None ->
2300-
begin match consts, nonconsts with
2301-
| _, (_, act)::rem -> act, consts, rem
2302-
| (_, act)::rem, _ -> act, rem, nonconsts
2303-
| _ -> assert false
2300+
begin match extension_cases with
2301+
| (_, act)::rem -> act, rem
2302+
| _ -> failwith "Empty extension case list is not possible"
23042303
end
2305-
| Some fail -> fail, consts, nonconsts in
2306-
let nonconst_lambda =
2307-
match nonconsts with
2308-
[] -> default
2304+
| Some fail -> fail, extension_cases in
2305+
match extension_cases with
2306+
| [] -> default
23092307
| _ ->
23102308
List.fold_right
23112309
(fun (path, act) rem ->
23122310
let ext = transl_extension_path ex_pat.pat_env path in
23132311
Lifthenelse(Lprim(extension_slot_eq , [arg; ext], loc),
23142312
act, rem))
2315-
nonconsts
2313+
extension_cases
23162314
default
2317-
in
2318-
List.fold_right
2319-
(fun (path, act) rem ->
2320-
let ext = transl_extension_path ex_pat.pat_env path in
2321-
Lifthenelse(Lprim(extension_slot_eq , [arg; ext], loc),
2322-
act, rem))
2323-
consts
2324-
nonconst_lambda
23252315
in
23262316
lambda1, jumps_union local_jumps total1
23272317
end else begin

0 commit comments

Comments
 (0)