Skip to content

Commit a3facce

Browse files
authored
Merge pull request #31 from DarthGandalf/fixcrash
Don't fail when cargo build has errors. And show those errors.
2 parents cf88f4e + 6feafa0 commit a3facce

File tree

2 files changed

+20
-7
lines changed

2 files changed

+20
-7
lines changed

src/cargo.js

+12-5
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ export const handleCargo = async function (self, result) {
5454
const data = JSON.parse(line);
5555
switch (data.reason) {
5656
case 'compiler-message':
57+
case 'message':
5758
switch (data.message.level) {
5859
case 'warning':
5960
self.emitWarning(new Error(data.message.rendered));
@@ -78,16 +79,22 @@ export const handleCargo = async function (self, result) {
7879
}
7980
}
8081

82+
if (result.code) {
83+
throw new BuildError(result);
84+
}
85+
8186
if (hasError) {
8287
throw new BuildError('Cargo build failed');
8388
}
8489

85-
const depFile = wasmFile.slice(0, -'.wasm'.length) + '.d';
86-
const depContents = await fse.readFile(depFile, 'utf-8');
87-
const deps = parseDependencies(depContents, wasmFile);
90+
if (wasmFile) {
91+
const depFile = wasmFile.slice(0, -'.wasm'.length) + '.d';
92+
const depContents = await fse.readFile(depFile, 'utf-8');
93+
const deps = parseDependencies(depContents, wasmFile);
8894

89-
for (let dep of deps) {
90-
self.addDependency(dep);
95+
for (let dep of deps) {
96+
self.addDependency(dep);
97+
}
9198
}
9299

93100
return {wasmFile, jsFile};

test/__snapshots__/index.test.js.snap

+8-2
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,13 @@ Set {
2424

2525
exports[`rust-native-wasm-loader loads a simple cargo project with errors: errors 1`] = `
2626
Array [
27-
"Module build failed: BuildError: Cargo build failed",
27+
"Module build failed: BuildError: Error: Command failed: cargo build --message-format=json --target=wasm32-unknown-unknown --release
28+
Compiling myerrorlib v0.1.0 (file://test/fixtures/myerrorlib)
29+
error: Could not compile \`myerrorlib\`.
30+
31+
Caused by:
32+
process didn't exit successfully: \`rustc --crate-name myerrorlib src/lib.rs --error-format json --crate-type cdylib --emit=dep-info,link -C opt-level=3 -C metadata=204ae3df9e4f5f06 --out-dir test/fixtures/myerrorlib/target/wasm32-unknown-unknown/release/deps --target wasm32-unknown-unknown -C linker=lld -L dependency=test/fixtures/myerrorlib/target/wasm32-unknown-unknown/release/deps -L dependency=test/fixtures/myerrorlib/target/release/deps\` (exit code: 101)
33+
",
2834
"error: aborting due to previous error
2935
3036
",
@@ -40,7 +46,7 @@ Array [
4046
]
4147
`;
4248

43-
exports[`rust-native-wasm-loader loads a simple cargo project with errors: failure 1`] = `"Module build failed: BuildError: Cargo build failed"`;
49+
exports[`rust-native-wasm-loader loads a simple cargo project with errors: failure 1`] = `"Module build failed: BuildError: Error: Command failed: cargo build --message-format=json --target=wasm32-unknown-unknown --release"`;
4450

4551
exports[`rust-native-wasm-loader loads a simple cargo project with errors: warnings 1`] = `Array []`;
4652

0 commit comments

Comments
 (0)