Skip to content

Commit 8936365

Browse files
authored
Propagate errors in preprocess instead of unwrapping (#1648)
Closes #1647
1 parent 4642b6b commit 8936365

8 files changed

Lines changed: 19 additions & 11 deletions

File tree

crates/c/src/lib.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ enum Scalar {
173173
}
174174

175175
impl WorldGenerator for C {
176-
fn preprocess(&mut self, resolve: &Resolve, world: WorldId) {
176+
fn preprocess(&mut self, resolve: &Resolve, world: WorldId) -> Result<()> {
177177
self.world = self
178178
.opts
179179
.rename_world
@@ -204,6 +204,7 @@ impl WorldGenerator for C {
204204
}
205205
}
206206
}
207+
Ok(())
207208
}
208209

209210
fn import_interface(

crates/core/src/lib.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ pub trait WorldGenerator {
2828
resolve.generate_nominal_type_ids(id);
2929
}
3030
let world = &resolve.worlds[id];
31-
self.preprocess(resolve, id);
31+
self.preprocess(resolve, id)?;
3232

3333
fn unwrap_name(key: &WorldKey) -> &str {
3434
match key {
@@ -95,8 +95,9 @@ pub trait WorldGenerator {
9595
let _ = (resolve, world, files);
9696
}
9797

98-
fn preprocess(&mut self, resolve: &Resolve, world: WorldId) {
98+
fn preprocess(&mut self, resolve: &Resolve, world: WorldId) -> Result<()> {
9999
let _ = (resolve, world);
100+
Ok(())
100101
}
101102

102103
fn import_interface(

crates/cpp/src/lib.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -487,7 +487,7 @@ struct FileContext {
487487
}
488488

489489
impl WorldGenerator for Cpp {
490-
fn preprocess(&mut self, resolve: &Resolve, world: WorldId) {
490+
fn preprocess(&mut self, resolve: &Resolve, world: WorldId) -> anyhow::Result<()> {
491491
let name = &resolve.worlds[world].name;
492492
self.world = name.to_string();
493493
self.types.analyze(resolve);
@@ -511,6 +511,7 @@ impl WorldGenerator for Cpp {
511511
"#,
512512
self.world.to_snake_case(),
513513
);
514+
Ok(())
514515
}
515516

516517
fn import_interface(

crates/csharp/src/world_generator.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -144,7 +144,7 @@ impl CSharp {
144144
}
145145

146146
impl WorldGenerator for CSharp {
147-
fn preprocess(&mut self, resolve: &Resolve, world: WorldId) {
147+
fn preprocess(&mut self, resolve: &Resolve, world: WorldId) -> anyhow::Result<()> {
148148
let name = &resolve.worlds[world].name;
149149
self.types.analyze(resolve);
150150
self.types.collect_equal_types(resolve, world, &|a| {
@@ -171,6 +171,7 @@ impl WorldGenerator for CSharp {
171171
});
172172
self.name = name.to_string();
173173
self.sizes.fill(resolve);
174+
Ok(())
174175
}
175176

176177
fn import_interface(

crates/go/src/lib.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -724,10 +724,11 @@ impl WorldGenerator for Go {
724724
false
725725
}
726726

727-
fn preprocess(&mut self, resolve: &Resolve, world: WorldId) {
727+
fn preprocess(&mut self, resolve: &Resolve, world: WorldId) -> Result<()> {
728728
_ = world;
729729
self.sizes.fill(resolve);
730730
self.imports.insert(remote_pkg("runtime"));
731+
Ok(())
731732
}
732733

733734
fn import_interface(

crates/markdown/src/lib.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ impl Opts {
3737
}
3838

3939
impl WorldGenerator for Markdown {
40-
fn preprocess(&mut self, resolve: &Resolve, world: WorldId) {
40+
fn preprocess(&mut self, resolve: &Resolve, world: WorldId) -> Result<()> {
4141
self.sizes.fill(resolve);
4242

4343
let world = &resolve.worlds[world];
@@ -109,6 +109,7 @@ impl WorldGenerator for Markdown {
109109
}
110110
}
111111
r#gen.push_str("\n");
112+
Ok(())
112113
}
113114

114115
fn import_interface(

crates/moonbit/src/lib.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,7 @@ impl MoonBit {
244244
/// - Inline FFI helpers and builtins are collected and written once into the
245245
/// final export FFI module. Async helpers are emitted when required.
246246
impl WorldGenerator for MoonBit {
247-
fn preprocess(&mut self, resolve: &Resolve, world: WorldId) {
247+
fn preprocess(&mut self, resolve: &Resolve, world: WorldId) -> Result<()> {
248248
self.pkg_resolver.resolve = resolve.clone();
249249
self.project_name = self
250250
.opts
@@ -256,6 +256,7 @@ impl WorldGenerator for MoonBit {
256256
}))
257257
.unwrap_or("generated".into());
258258
self.sizes.fill(resolve);
259+
Ok(())
259260
}
260261

261262
fn import_interface(

crates/rust/src/lib.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1069,7 +1069,7 @@ macro_rules! __export_{world_name}_impl {{
10691069
}
10701070

10711071
impl WorldGenerator for RustWasm {
1072-
fn preprocess(&mut self, resolve: &Resolve, world: WorldId) {
1072+
fn preprocess(&mut self, resolve: &Resolve, world: WorldId) -> Result<()> {
10731073
wit_bindgen_core::generated_preamble(&mut self.src_preamble, env!("CARGO_PKG_VERSION"));
10741074

10751075
// Render some generator options to assist with debugging and/or to help
@@ -1239,14 +1239,15 @@ impl WorldGenerator for RustWasm {
12391239
self.with.generate_by_default = self.opts.generate_all;
12401240
for (key, item) in world.imports.iter() {
12411241
if let WorldItem::Interface { id, .. } = item {
1242-
self.name_interface(resolve, *id, &key, false).unwrap();
1242+
self.name_interface(resolve, *id, &key, false)?;
12431243
}
12441244
}
12451245
for (key, item) in world.exports.iter() {
12461246
if let WorldItem::Interface { id, .. } = item {
1247-
self.name_interface(resolve, *id, &key, true).unwrap();
1247+
self.name_interface(resolve, *id, &key, true)?;
12481248
}
12491249
}
1250+
Ok(())
12501251
}
12511252

12521253
fn import_interface(

0 commit comments

Comments
 (0)