Skip to content

Commit a7c5d74

Browse files
committed
reverse bindings fix
1 parent 9aeb061 commit a7c5d74

File tree

1 file changed

+6
-4
lines changed

1 file changed

+6
-4
lines changed

ppx_regexp/transformations.ml

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -362,11 +362,12 @@ let transform_cases ~mode ~loc cases =
362362
in
363363

364364
let rec group acc current_group = function
365-
| [] -> if current_group = [] then List.rev acc else List.rev (current_group :: acc)
365+
| [] -> if current_group = [] then List.rev acc else List.rev (List.rev current_group :: acc)
366366
| case :: rest ->
367367
if current_group = [] || can_merge_into_group case current_group then group acc (case :: current_group) rest
368368
else group (List.rev current_group :: acc) [ case ] rest
369369
in
370+
370371
group [] [] parsed_cases
371372
in
372373

@@ -378,10 +379,11 @@ let transform_cases ~mode ~loc cases =
378379
let handlers = nG, bs, rhs, guard in
379380
let re_data = re, flags in
380381
match List.assoc_opt key patterns with
381-
| Some (re_data, existing) -> (key, (re_data, handlers :: existing)) :: List.remove_assoc key patterns
382+
| Some (re_data, existing) ->
383+
(key, (re_data, existing @ [ handlers ])) :: List.remove_assoc key patterns (* Append instead of prepend *)
382384
| None -> (key, (re_data, [ handlers ])) :: patterns
383385
in
384-
List.fold_left add_case [] cases |> List.map (fun ((_, _), (re_data, handlers)) -> re_data, List.rev handlers) |> List.rev
386+
List.fold_left add_case [] cases |> List.map (fun ((_, _), (re_data, handlers)) -> re_data, handlers) |> List.rev
385387
in
386388

387389
let add_offsets patterns =
@@ -405,7 +407,7 @@ let transform_cases ~mode ~loc cases =
405407
Bindings.wrap_group_bindings ~captured_acc:[] ~loc guarded offset (List.rev bs)
406408
in
407409

408-
name, [%expr fun _g -> [%e chain_guards (List.rev handlers)]]
410+
name, [%expr fun _g -> [%e chain_guards handlers]]
409411
in
410412

411413
let unique_patterns = deduplicate_patterns cases_in_group in

0 commit comments

Comments
 (0)