From fbfe239730bd5069026ae4e5356e93d3f3bfcb53 Mon Sep 17 00:00:00 2001 From: Pierre-Marie Pédrot Date: Mon, 24 Jul 2017 19:37:03 +0200 Subject: Correctly pushing variables for tuple patterns. --- src/tac2intern.ml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/tac2intern.ml b/src/tac2intern.ml index b63e6a0cd8..ffbdaf4b9b 100644 --- a/src/tac2intern.ml +++ b/src/tac2intern.ml @@ -817,11 +817,13 @@ and intern_case env loc e pl = end | p -> todo ~loc:(loc_of_patexpr p) () in - let ids = Array.map_of_list map pl in - let tc = GTypTuple (List.map (fun _ -> GTypVar (fresh_id env)) pl) in + let ids = List.map map pl in + let targs = List.map (fun _ -> GTypVar (fresh_id env)) pl in + let tc = GTypTuple targs in let () = unify ~loc:(loc_of_tacexpr e) env t tc in + let env = List.fold_left2 (fun env na t -> push_name na (monomorphic t) env) env ids targs in let (b, tb) = intern_rec env b in - (GTacCse (e', GCaseTuple len, [||], [|ids, b|]), tb) + (GTacCse (e', GCaseTuple len, [||], [|Array.of_list ids, b|]), tb) | (p, _) :: _ -> todo ~loc:(loc_of_patexpr p) () end | PKind_variant kn -> -- cgit v1.2.3