Skip to content

Commit

Permalink
Rework only_interfaces to the interfaces field (bytecodealliance#…
Browse files Browse the repository at this point in the history
…6210)

* Rework `only_interfaces` to the `interfaces` field

* Fix the docs

* Remove only_interfaces test from the component-macro package
  • Loading branch information
elliottt authored and eduardomourar committed Apr 16, 2023
1 parent 7727bb5 commit 653d306
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 26 deletions.
21 changes: 15 additions & 6 deletions crates/component-macro/src/bindgen.rs
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,16 @@ impl Parse for Config {
Opt::Async(val) => opts.async_ = val,
Opt::TrappableErrorType(val) => opts.trappable_error_type = val,
Opt::DuplicateIfNecessary(val) => opts.duplicate_if_necessary = val,
Opt::OnlyInterfaces(val) => opts.only_interfaces = val,
Opt::Interfaces(s) => {
if source.is_some() {
return Err(Error::new(s.span(), "cannot specify a second source"));
}
source = Some(Source::Inline(format!(
"default world interfaces {{ {} }}",
s.value()
)));
opts.only_interfaces = true;
}
Opt::With(val) => opts.with.extend(val),
}
}
Expand Down Expand Up @@ -136,7 +145,7 @@ mod kw {
syn::custom_keyword!(trappable_error_type);
syn::custom_keyword!(world);
syn::custom_keyword!(duplicate_if_necessary);
syn::custom_keyword!(only_interfaces);
syn::custom_keyword!(interfaces);
syn::custom_keyword!(with);
}

Expand All @@ -148,7 +157,7 @@ enum Opt {
Async(bool),
TrappableErrorType(Vec<TrappableError>),
DuplicateIfNecessary(bool),
OnlyInterfaces(bool),
Interfaces(syn::LitStr),
With(HashMap<String, String>),
}

Expand Down Expand Up @@ -198,10 +207,10 @@ impl Parse for Opt {
})
.collect(),
))
} else if l.peek(kw::only_interfaces) {
input.parse::<kw::only_interfaces>()?;
} else if l.peek(kw::interfaces) {
input.parse::<kw::interfaces>()?;
input.parse::<Token![:]>()?;
Ok(Opt::OnlyInterfaces(input.parse::<syn::LitBool>()?.value))
Ok(Opt::Interfaces(input.parse::<syn::LitStr>()?))
} else if l.peek(kw::with) {
input.parse::<kw::with>()?;
input.parse::<Token![:]>()?;
Expand Down
7 changes: 0 additions & 7 deletions crates/component-macro/tests/codegen.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,13 +21,6 @@ macro_rules! gentest {
duplicate_if_necessary: true,
});
}
mod interfaces_only {
wasmtime::component::bindgen!({
path: $path,
world: $name,
only_interfaces: true,
});
}
}
// ...
};
Expand Down
10 changes: 5 additions & 5 deletions crates/wasmtime/src/component/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -292,11 +292,11 @@ pub(crate) use self::store::ComponentStoreData;
/// interface::ErrorType: RustErrorType,
/// },
///
/// // Restrict the code generated to what's needed for the imported
/// // interfaces of the world file provided. This option is most useful
/// // in conjunction with the `with` option that permits remapping of
/// // interface names in generated code.
/// only_interfaces: true,
/// // Restrict the code generated to what's needed for the interface
/// // imports in the inlined WIT document fragment.
/// interfaces: "
/// import foo: package.foo;
/// ",
///
/// // Remap interface names to module names, imported from elswhere.
/// // Using this option will prevent any code from being generated
Expand Down
11 changes: 3 additions & 8 deletions tests/all/component_model/bindgen/results.rs
Original file line number Diff line number Diff line change
Expand Up @@ -639,15 +639,10 @@ mod with_remapping {

mod interfaces {
wasmtime::component::bindgen!({
inline: "
default world result-playground {
import imports: interface {
empty-error: func(a: float64) -> result<float64>
}
export empty-error: func(a: float64) -> result<float64>
interfaces: "
import imports: interface {
empty-error: func(a: float64) -> result<float64>
}",
only_interfaces: true,
});
}

Expand Down

0 comments on commit 653d306

Please sign in to comment.