Skip to content

Commit 50dad7f

Browse files
committed
Work around napi-rs crash when cloning an error
napi-rs/napi-rs#1640
1 parent bd517fd commit 50dad7f

2 files changed

Lines changed: 19 additions & 1 deletion

File tree

node/src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,7 @@ mod bundle {
372372
0,
373373
move |ctx: ThreadSafeCallContext<VisitMessage>| {
374374
if let Err(err) = ctx.value.stylesheet.visit(&mut visitor) {
375-
ctx.value.tx.send(Err(err.clone())).expect("send error");
375+
ctx.value.tx.send(Err(err)).expect("send error");
376376
return Ok(());
377377
}
378378
ctx.value.tx.send(Ok(Default::default())).expect("send error");

node/test/bundle.test.mjs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -373,4 +373,22 @@ test('should throw with location info on syntax errors', async () => {
373373
});
374374
});
375375

376+
test('should support throwing in visitors', async () => {
377+
let error = undefined;
378+
try {
379+
await bundleAsync({
380+
filename: 'tests/testdata/a.css',
381+
visitor: {
382+
Rule() {
383+
throw new Error('Some error')
384+
}
385+
}
386+
});
387+
} catch (err) {
388+
error = err;
389+
}
390+
391+
assert.equal(error.message, 'Some error');
392+
});
393+
376394
test.run();

0 commit comments

Comments
 (0)