@@ -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