Skip to content

Commit 68fc7bc

Browse files
cover additional fully sync generator case
1 parent e3e3f41 commit 68fc7bc

File tree

3 files changed

+22
-4
lines changed

3 files changed

+22
-4
lines changed

modules/Coroutine.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,9 @@ function resolveSyncIterator(i, step, cb) {
8080
.then(data => resolveSyncIterator(i, i.next(data), cb))
8181
.catch(error => resolveSyncIterator(i, i.throw(error), cb));
8282
} else {
83-
return resolveSyncIterator(i, i.next(step.value), cb);
83+
let isErrorLike = step.value instanceof Error;
84+
let nextStep = isErrorLike ? i.throw(step.value) : i.next(step.value);
85+
return resolveSyncIterator(i, nextStep, cb);
8486
}
8587
} else {
8688
return cb(step.value);

modules/__tests__/Coroutine-test.js

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,23 @@ describe('Coroutine', () => {
6262
expect(tree.toJSON()).toEqual(result.toJSON());
6363
});
6464

65-
it('should rethrow exceptions back to generator', async () => {
65+
it('should rethrow exceptions back to generator in async mode', () => {
66+
function* render() {
67+
try {
68+
yield new Error('Boom');
69+
} catch (error) {
70+
return <p>{error.message}</p>;
71+
}
72+
}
73+
74+
let TestComponent = Coroutine.create(render);
75+
let tree = Renderer.create(<TestComponent />);
76+
77+
let result = Renderer.create(<p>Boom</p>);
78+
expect(tree.toJSON()).toEqual(result.toJSON());
79+
});
80+
81+
it('should rethrow exceptions back to generator in async mode', async () => {
6682
function* render() {
6783
try {
6884
yield Promise.reject(new Error('Boom'));

package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,11 +62,11 @@
6262
},
6363
"size-limit": [
6464
{
65-
"limit": "776 B",
65+
"limit": "800 B",
6666
"path": "build/react-coroutine.js"
6767
},
6868
{
69-
"limit": "782 B",
69+
"limit": "804 B",
7070
"path": "build/react-coroutine.module.js"
7171
}
7272
]

0 commit comments

Comments
 (0)