Skip to content

Commit daeefe7

Browse files
committed
Fix issue with arrays and creation of recursive values.
Not clear where the reference to ocaml/ocaml#6939 comes from, as that issue is about unboxed float arrays. See https://forum.rescript-lang.org/t/recursive-type-usage-problem/3717
1 parent cbaf97c commit daeefe7

File tree

7 files changed

+30
-17
lines changed

7 files changed

+30
-17
lines changed

jscomp/ml/rec_check.ml

+1-4
Original file line numberDiff line numberDiff line change
@@ -236,10 +236,7 @@ let rec expression : Env.env -> Typedtree.expression -> Use.t =
236236
let arg env (_, eo) = option expression env eo in
237237
Use.(join (inspect (expression env e)) (inspect (list arg env args)))
238238
| Texp_tuple exprs -> Use.guard (list expression env exprs)
239-
| Texp_array exprs ->
240-
(* This is counted as a use, because constructing a generic array
241-
involves inspecting the elements (PR#6939). *)
242-
Use.inspect (list expression env exprs)
239+
| Texp_array exprs -> Use.guard (list expression env exprs)
243240
| Texp_construct (_, desc, exprs) ->
244241
let access_constructor =
245242
match desc.cstr_tag with

jscomp/test/build.ninja

+2-1
Large diffs are not rendered by default.

jscomp/test/rec_array_test.js

+19
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
'use strict';
2+
3+
var Caml_obj = require("../../lib/js/caml_obj.js");
4+
5+
var vicky = {};
6+
7+
var teacher = {};
8+
9+
Caml_obj.update_dummy(vicky, {
10+
taughtBy: teacher
11+
});
12+
13+
Caml_obj.update_dummy(teacher, {
14+
students: [vicky]
15+
});
16+
17+
exports.vicky = vicky;
18+
exports.teacher = teacher;
19+
/* No side effect */

jscomp/test/rec_array_test.res

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
type rec student = {taughtBy: teacher}
2+
and teacher = {students: array<student>}
3+
4+
let rec vicky = { taughtBy: teacher }
5+
and teacher = {students: [vicky]}

lib/4.06.1/unstable/js_compiler.ml

+1-4
Original file line numberDiff line numberDiff line change
@@ -38300,10 +38300,7 @@ let rec expression : Env.env -> Typedtree.expression -> Use.t =
3830038300
let arg env (_, eo) = option expression env eo in
3830138301
Use.(join (inspect (expression env e)) (inspect (list arg env args)))
3830238302
| Texp_tuple exprs -> Use.guard (list expression env exprs)
38303-
| Texp_array exprs ->
38304-
(* This is counted as a use, because constructing a generic array
38305-
involves inspecting the elements (PR#6939). *)
38306-
Use.inspect (list expression env exprs)
38303+
| Texp_array exprs -> Use.guard (list expression env exprs)
3830738304
| Texp_construct (_, desc, exprs) ->
3830838305
let access_constructor =
3830938306
match desc.cstr_tag with

lib/4.06.1/unstable/js_playground_compiler.ml

+1-4
Original file line numberDiff line numberDiff line change
@@ -38300,10 +38300,7 @@ let rec expression : Env.env -> Typedtree.expression -> Use.t =
3830038300
let arg env (_, eo) = option expression env eo in
3830138301
Use.(join (inspect (expression env e)) (inspect (list arg env args)))
3830238302
| Texp_tuple exprs -> Use.guard (list expression env exprs)
38303-
| Texp_array exprs ->
38304-
(* This is counted as a use, because constructing a generic array
38305-
involves inspecting the elements (PR#6939). *)
38306-
Use.inspect (list expression env exprs)
38303+
| Texp_array exprs -> Use.guard (list expression env exprs)
3830738304
| Texp_construct (_, desc, exprs) ->
3830838305
let access_constructor =
3830938306
match desc.cstr_tag with

lib/4.06.1/whole_compiler.ml

+1-4
Original file line numberDiff line numberDiff line change
@@ -212831,10 +212831,7 @@ let rec expression : Env.env -> Typedtree.expression -> Use.t =
212831212831
let arg env (_, eo) = option expression env eo in
212832212832
Use.(join (inspect (expression env e)) (inspect (list arg env args)))
212833212833
| Texp_tuple exprs -> Use.guard (list expression env exprs)
212834-
| Texp_array exprs ->
212835-
(* This is counted as a use, because constructing a generic array
212836-
involves inspecting the elements (PR#6939). *)
212837-
Use.inspect (list expression env exprs)
212834+
| Texp_array exprs -> Use.guard (list expression env exprs)
212838212835
| Texp_construct (_, desc, exprs) ->
212839212836
let access_constructor =
212840212837
match desc.cstr_tag with

0 commit comments

Comments
 (0)