Skip to content

Commit 7c225b3

Browse files
committed
Fix Generator.asIteratorObject signature
1 parent 353a590 commit 7c225b3

4 files changed

Lines changed: 46 additions & 2 deletions

File tree

packages/@rescript/runtime/Stdlib_Generator.res

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ external asIterable: t<'yield, 'return, 'next> => Stdlib_Iterable.t<'yield> = "%
66
external asIteratorObject: t<'yield, 'return, 'next> => Stdlib_IteratorObject.t<
77
'yield,
88
'return,
9-
unknown,
9+
'next,
1010
> = "%identity"
1111

1212
@send

packages/@rescript/runtime/Stdlib_Generator.resi

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ external asIterable: t<'yield, 'return, 'next> => Stdlib_Iterable.t<'yield> = "%
2929
external asIteratorObject: t<'yield, 'return, 'next> => Stdlib_IteratorObject.t<
3030
'yield,
3131
'return,
32-
unknown,
32+
'next,
3333
> = "%identity"
3434

3535
/**

tests/tests/src/stdlib/Stdlib_IteratorTests.mjs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -362,6 +362,29 @@ Test.run([
362362
4
363363
]);
364364

365+
Test.run([
366+
[
367+
"Stdlib_IteratorTests.res",
368+
258,
369+
13,
370+
51
371+
],
372+
"Generator.asIteratorObject nextValue"
373+
], (generatorWithNext => {
374+
let match = generatorWithNext.next();
375+
if (match.done !== false) {
376+
return;
377+
}
378+
let match$1 = generatorWithNext.next(41);
379+
if (match$1.done !== false || match$1.value !== 42) {
380+
return;
381+
}
382+
return "nextValue";
383+
})((function* () {
384+
let injected = yield 1;
385+
yield injected + 1 | 0;
386+
})()), eq, "nextValue");
387+
365388
let generatorReturnValueResult = {
366389
contents: undefined
367390
};

tests/tests/src/stdlib/Stdlib_IteratorTests.res

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -255,6 +255,27 @@ Test.run(
255255
[2, 4],
256256
)
257257
258+
Test.run(
259+
__POS_OF__("Generator.asIteratorObject nextValue"),
260+
{
261+
let generatorWithNext: Generator.t<int, unit, int> = %raw(`(function* () {
262+
let injected = yield 1
263+
yield injected + 1
264+
})()`)
265+
266+
switch generatorWithNext->Generator.next {
267+
| Yield({value: 1}) =>
268+
switch generatorWithNext->Generator.asIteratorObject->IteratorObject.nextValue(41) {
269+
| Yield({value: 42}) => Some("nextValue")
270+
| _ => None
271+
}
272+
| _ => None
273+
}
274+
},
275+
eq,
276+
Some("nextValue"),
277+
)
278+
258279
let generatorReturnValueResult = ref(None)
259280
let generatorReturnValue: Generator.t<int, string, unit> = %raw(`(function* () {
260281
yield 1

0 commit comments

Comments
 (0)