Skip to content

Commit 87bd0a1

Browse files
committed
add tests
1 parent c4abe7c commit 87bd0a1

File tree

2 files changed

+53
-33
lines changed

2 files changed

+53
-33
lines changed

jscomp/test/record_regression.js

Lines changed: 48 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,12 @@ var ir2 = {
8181
x3: 3
8282
};
8383

84+
var ir3 = {
85+
TAG: /* V1 */1,
86+
y0: "v0",
87+
y1: 1
88+
};
89+
8490
var pm0;
8591

8692
pm0 = ir0.TAG === /* V0 */0 ? [
@@ -117,39 +123,47 @@ pm2 = ir2.TAG === /* V0 */0 ? [
117123
"v1"
118124
];
119125

120-
var pm3;
121-
122-
if (ir2.TAG === /* V0 */0) {
123-
var x2 = 2;
124-
var x1 = "v1";
125-
var x0 = "v0";
126-
pm3 = Caml_obj.equal(x1, "x1") ? [
127-
x0,
128-
"x1!",
129-
x2,
130-
3
131-
] : (
132-
x1 !== undefined ? [
133-
x0,
134-
x1,
135-
x2,
136-
3
137-
] : [
138-
x0,
139-
"not existed",
140-
x2,
141-
3
142-
]
143-
);
144-
} else {
145-
pm3 = [
146-
"v0",
147-
"not existed",
148-
undefined,
149-
"v1"
150-
];
126+
function inlinedRecord(ir) {
127+
if (ir.TAG !== /* V0 */0) {
128+
return [
129+
ir.y0,
130+
"n/a",
131+
undefined,
132+
ir.y1
133+
];
134+
}
135+
var x3 = ir.x3;
136+
var x2 = ir.x2;
137+
var x1 = ir.x1;
138+
var x0 = ir.x0;
139+
if (Caml_obj.equal(x1, "x1")) {
140+
return [
141+
x0,
142+
"x1!",
143+
x2,
144+
x3
145+
];
146+
} else if (x1 !== undefined) {
147+
return [
148+
x0,
149+
x1,
150+
x2,
151+
x3
152+
];
153+
} else {
154+
return [
155+
x0,
156+
"not existed",
157+
x2,
158+
x3
159+
];
160+
}
151161
}
152162

163+
var pm3 = inlinedRecord(ir2);
164+
165+
var pm4 = inlinedRecord(ir3);
166+
153167
var f2 = {
154168
x: 3,
155169
y: 3,
@@ -197,8 +211,11 @@ exports.foo2 = foo2;
197211
exports.ir0 = ir0;
198212
exports.ir1 = ir1;
199213
exports.ir2 = ir2;
214+
exports.ir3 = ir3;
200215
exports.pm0 = pm0;
201216
exports.pm1 = pm1;
202217
exports.pm2 = pm2;
218+
exports.inlinedRecord = inlinedRecord;
203219
exports.pm3 = pm3;
220+
exports.pm4 = pm4;
204221
/* Not a pure module */

jscomp/test/record_regression.res

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ type inlinedRecord = V0({x0: string, x1?: string, x2?: int, x3: int}) | V1({y0:
115115
let ir0 = V0({x0: "v0", x3: 3})
116116
let ir1 = V0({x0: "v0", x1: "v1", x3: 3})
117117
let ir2 = V0({x0: "v0", x1: "v1", x2: 2, x3: 3})
118+
let ir3 = V1({y0: "v0", y1: 1})
118119

119120
let pm0 = switch ir0 {
120121
| V0({x0, x3}) => (x0, x3)
@@ -128,11 +129,13 @@ let pm2 = switch ir2 {
128129
| V0({x0, x1, x2, x3}) => (x0, x1, x2, x3)
129130
| V1({y0, y1}) => (y0, None, None, y1)
130131
}
131-
let pm3 = switch ir2 {
132+
let inlinedRecord = ir => switch ir {
132133
| V0({x0, x1, x2, x3}) if x1 == Some("x1") => (x0, "x1!", x2, x3)
133134
| V0({x0, x1, x2, x3}) => switch x1 {
134135
| Some(x1) => (x0, x1, x2, x3)
135136
| None => (x0, "not existed", x2, x3)
136137
}
137-
| V1({y0, y1}) => (y0, "not existed", None, y1)
138+
| V1({y0, y1}) => (y0, "n/a", None, y1)
138139
}
140+
let pm3 = inlinedRecord(ir2)
141+
let pm4 = inlinedRecord(ir3)

0 commit comments

Comments
 (0)