From 80350266613bebda46cf9d558710864127659990 Mon Sep 17 00:00:00 2001 From: Antal Spector-Zabusky Date: Wed, 1 Feb 2023 10:00:28 -0500 Subject: [PATCH] Fix `nlocal` in the generated Lambda for list comprehensions (#113) --- lambda/transl_list_comprehension.ml | 4 +++- .../tests/comprehensions/comprehensions_from_quickcheck.ml | 6 +----- testsuite/tests/comprehensions/list_comprehensions_pure.ml | 4 ---- .../comprehensions/list_comprehensions_side_effects.ml | 4 ---- 4 files changed, 4 insertions(+), 14 deletions(-) diff --git a/lambda/transl_list_comprehension.ml b/lambda/transl_list_comprehension.ml index 09710a41802..e8310840cbb 100644 --- a/lambda/transl_list_comprehension.ml +++ b/lambda/transl_list_comprehension.ml @@ -235,7 +235,9 @@ let rec translate_bindings in let body_func = Lambda.lfunction - ~kind:(Curried { nlocal = 1 }) (* The accumulator is local *) + ~kind:(Curried { nlocal = 2 }) + (* Only the accumulator is local, but since the function itself is + local, [nlocal] has to be equal to the number of parameters *) ~params:[element, element_kind; inner_acc, Pgenval] ~return:Pgenval ~attr:default_function_attribute diff --git a/testsuite/tests/comprehensions/comprehensions_from_quickcheck.ml b/testsuite/tests/comprehensions/comprehensions_from_quickcheck.ml index 2e07cd9ab0d..634f9d6a852 100644 --- a/testsuite/tests/comprehensions/comprehensions_from_quickcheck.ml +++ b/testsuite/tests/comprehensions/comprehensions_from_quickcheck.ml @@ -1,9 +1,5 @@ (* TEST - skip - * reason = "locals bug" -*) -(* - flags = "-extension comprehensions_experimental -extension immutable_arrays" + flags = "-extension comprehensions_experimental -extension immutable_arrays_experimental" * expect *) diff --git a/testsuite/tests/comprehensions/list_comprehensions_pure.ml b/testsuite/tests/comprehensions/list_comprehensions_pure.ml index d0b4c73a806..f17a2cdba9b 100644 --- a/testsuite/tests/comprehensions/list_comprehensions_pure.ml +++ b/testsuite/tests/comprehensions/list_comprehensions_pure.ml @@ -1,8 +1,4 @@ (* TEST - skip - * reason = "locals bug" -*) -(* flags = "-extension comprehensions_experimental" * expect *) diff --git a/testsuite/tests/comprehensions/list_comprehensions_side_effects.ml b/testsuite/tests/comprehensions/list_comprehensions_side_effects.ml index ad68362f3f1..a997a61d766 100644 --- a/testsuite/tests/comprehensions/list_comprehensions_side_effects.ml +++ b/testsuite/tests/comprehensions/list_comprehensions_side_effects.ml @@ -1,8 +1,4 @@ (* TEST - skip - * reason = "locals bug" -*) -(* flags = "-extension comprehensions_experimental" *)