diff --git a/Cargo.lock b/Cargo.lock index 77d21a5f..ed1a1f6f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -959,7 +959,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -1255,28 +1255,28 @@ checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" name = "hello-component-client" version = "0.1.0" dependencies = [ - "wit-bindgen 0.58.0", + "wit-bindgen 0.59.0", ] [[package]] name = "hello-component-rpc-client" version = "0.1.0" dependencies = [ - "wit-bindgen 0.58.0", + "wit-bindgen 0.59.0", ] [[package]] name = "hello-component-rpc-server" version = "0.1.0" dependencies = [ - "wit-bindgen 0.58.0", + "wit-bindgen 0.59.0", ] [[package]] name = "hello-component-server" version = "0.1.0" dependencies = [ - "wit-bindgen 0.58.0", + "wit-bindgen 0.59.0", ] [[package]] @@ -1289,7 +1289,7 @@ dependencies = [ "tracing", "tracing-subscriber", "wasi 0.14.7+wasi-0.2.4", - "wit-bindgen 0.58.0", + "wit-bindgen 0.59.0", "wit-bindgen-wrpc", "wrpc-transport", ] @@ -2351,7 +2351,7 @@ dependencies = [ "once_cell", "socket2", "tracing", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -2433,7 +2433,7 @@ dependencies = [ name = "reactor" version = "0.1.0" dependencies = [ - "wit-bindgen 0.58.0", + "wit-bindgen 0.59.0", ] [[package]] @@ -2550,14 +2550,14 @@ dependencies = [ name = "resources-component-client" version = "0.1.0" dependencies = [ - "wit-bindgen 0.58.0", + "wit-bindgen 0.59.0", ] [[package]] name = "resources-component-server" version = "0.1.0" dependencies = [ - "wit-bindgen 0.58.0", + "wit-bindgen 0.59.0", ] [[package]] @@ -2614,7 +2614,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -2682,7 +2682,7 @@ dependencies = [ "security-framework", "security-framework-sys", "webpki-root-certs", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -2921,7 +2921,7 @@ checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" name = "streams-io-component-server" version = "0.1.0" dependencies = [ - "wit-bindgen 0.58.0", + "wit-bindgen 0.59.0", ] [[package]] @@ -3121,7 +3121,7 @@ dependencies = [ "getrandom 0.4.3", "once_cell", "rustix", - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -3139,7 +3139,7 @@ version = "0.0.0" dependencies = [ "codegen-macro", "wit-bindgen-core", - "wit-parser 0.251.0", + "wit-parser 0.253.0", ] [[package]] @@ -3615,12 +3615,6 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" -[[package]] -name = "unicode-xid" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" - [[package]] name = "untrusted" version = "0.9.0" @@ -3729,14 +3723,14 @@ name = "wasi-keyvalue-component-client" version = "0.1.0" dependencies = [ "anyhow", - "wit-bindgen 0.58.0", + "wit-bindgen 0.59.0", ] [[package]] name = "wasi-keyvalue-component-server" version = "0.1.0" dependencies = [ - "wit-bindgen 0.58.0", + "wit-bindgen 0.59.0", ] [[package]] @@ -3940,12 +3934,12 @@ dependencies = [ [[package]] name = "wasm-encoder" -version = "0.251.0" +version = "0.253.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a879a421bd17c528b74721b2abf4c62e8f1d1889c2ba8c3c50d02deaf2ce395" +checksum = "59972d6cd272259de647b7c1f1912e45e289c75ffd4be04e10695507cd7e1b59" dependencies = [ "leb128fmt", - "wasmparser 0.251.0", + "wasmparser 0.253.0", ] [[package]] @@ -3980,14 +3974,14 @@ dependencies = [ [[package]] name = "wasm-metadata" -version = "0.251.0" +version = "0.253.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f998ccc6e012f7b86865eb2a106c8a0422017a1a88977ce01a69f2244be2e57" +checksum = "b3f45816ef616806f48498bcd831377de578c4fa51db0c83ab8ceb78cc13523b" dependencies = [ "anyhow", "indexmap", - "wasm-encoder 0.251.0", - "wasmparser 0.251.0", + "wasm-encoder 0.253.0", + "wasmparser 0.253.0", ] [[package]] @@ -4039,9 +4033,9 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.251.0" +version = "0.253.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "437970b35b1a85cfde9c74b2398352d8d653f3bd8e3a3db0c063ea8f5b4b36ff" +checksum = "19db11f87d2486580e1e8b6f494c54df7e0566b87d0b599db843c24019667339" dependencies = [ "bitflags", "hashbrown 0.17.1", @@ -4482,7 +4476,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.52.0", + "windows-sys 0.61.2", ] [[package]] @@ -4609,45 +4603,45 @@ checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" [[package]] name = "wit-bindgen" -version = "0.58.0" +version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a43552cfa071f246cfd99e5dbb23710dfe7336b3259e09339818483359470749" +checksum = "94c5e45f6d4cfaca727c1c48989ab3e05bb289bf84fbad226e1cfbbef2c04b7f" dependencies = [ "wit-bindgen-rust-macro", ] [[package]] name = "wit-bindgen-core" -version = "0.58.0" +version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4738d1c9a78e97bc7f664bfafd5d8e67d7bb26faa5c41e6d628e8bbdad3ec351" +checksum = "05cf25dc4bb1981c16aa549ec66c6762b7752bfb8b7c3b3936ae13100298dc72" dependencies = [ "anyhow", "heck", - "wit-parser 0.251.0", + "wit-parser 0.253.0", ] [[package]] name = "wit-bindgen-rust" -version = "0.58.0" +version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1130ce1f531bc9f9a75922244aa773bf5e2117fda1ef4a86b9f98d6b8135eb46" +checksum = "407ee2b474af1a366766fe91b8255b7935e5e3c3afb9c304e91ac3d154287ff1" dependencies = [ "anyhow", "heck", "indexmap", "prettyplease", "syn 2.0.119", - "wasm-metadata 0.251.0", + "wasm-metadata 0.253.0", "wit-bindgen-core", - "wit-component 0.251.0", + "wit-component 0.253.0", ] [[package]] name = "wit-bindgen-rust-macro" -version = "0.58.0" +version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07296369e4d598e7e79b64eef66f724d83324ea671bcf677d78fc5cf92604ae5" +checksum = "37386eba32427684ffe37a0f765f63ce2ece03efb1ad28c23cf69562fdc67ec0" dependencies = [ "anyhow", "prettyplease", @@ -4730,14 +4724,14 @@ dependencies = [ "serde", "serde_json", "toml 1.1.6+spec-1.1.0", - "wit-parser 0.251.0", + "wit-parser 0.253.0", ] [[package]] name = "wit-component" -version = "0.251.0" +version = "0.253.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83a5e60173c413659c689f0581b0cf5d1a2404077568f9ffdce748a9eb2fc913" +checksum = "dbbd2500ac3488489ee8c6e59b79d7e47e6da5bfb019efd35d5dca57b78af624" dependencies = [ "anyhow", "bitflags", @@ -4746,10 +4740,10 @@ dependencies = [ "serde", "serde_derive", "serde_json", - "wasm-encoder 0.251.0", - "wasm-metadata 0.251.0", - "wasmparser 0.251.0", - "wit-parser 0.251.0", + "wasm-encoder 0.253.0", + "wasm-metadata 0.253.0", + "wasmparser 0.253.0", + "wit-parser 0.253.0", ] [[package]] @@ -4792,9 +4786,9 @@ dependencies = [ [[package]] name = "wit-parser" -version = "0.251.0" +version = "0.253.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e960732e824fab95099971a09e638979347c94ca48568d3c854c945729196947" +checksum = "4d997b8e5920fcbeec742b58e583325d6419a6aca617ae8075c406a61c65ba8a" dependencies = [ "anyhow", "hashbrown 0.17.1", @@ -4805,8 +4799,8 @@ dependencies = [ "serde", "serde_derive", "serde_json", - "unicode-xid", - "wasmparser 0.251.0", + "unicode-ident", + "wasmparser 0.253.0", ] [[package]] @@ -4917,7 +4911,7 @@ dependencies = [ name = "wrpc-introspect" version = "0.7.0" dependencies = [ - "wit-parser 0.251.0", + "wit-parser 0.253.0", ] [[package]] @@ -5031,7 +5025,7 @@ dependencies = [ "wasm-tokio", "wasmtime", "wasmtime-wasi", - "wit-parser 0.251.0", + "wit-parser 0.253.0", "wrpc-introspect", "wrpc-transport", ] diff --git a/Cargo.toml b/Cargo.toml index f98cda7a..06f61eba 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -192,15 +192,15 @@ wasmtime = { version = "48", default-features = false } wasmtime-cli-flags = { version = "48", default-features = false } wasmtime-wasi = { version = "48", default-features = false } wasmtime-wasi-http = { version = "48", default-features = false } -wit-bindgen = { version = "0.58", default-features = false } -wit-bindgen-core = { version = "0.58", default-features = false } +wit-bindgen = { version = "0.59", default-features = false } +wit-bindgen-core = { version = "0.59", default-features = false } wit-bindgen-wrpc = { version = "0.11", default-features = false, path = "./crates/wit-bindgen" } wit-bindgen-wrpc-go = { version = "0.13", default-features = false, path = "./crates/wit-bindgen-go" } wit-bindgen-wrpc-rust = { version = "0.11", default-features = false, path = "./crates/wit-bindgen-rust" } wit-bindgen-wrpc-rust-macro = { version = "0.11", default-features = false, path = "./crates/wit-bindgen-rust-macro" } wit-bindgen-wrpc-test = { version = "0.1", default-features = false, path = "./crates/wit-bindgen-test" } wit-component = { version = "0.259", default-features = false } -wit-parser = { version = "0.251", default-features = false } +wit-parser = { version = "0.253", default-features = false } wrpc-cli = { version = "0.8", path = "./crates/cli", default-features = false } wrpc-http = { version = "0.1", path = "./crates/http", default-features = false } wrpc-introspect = { version = "0.7", default-features = false, path = "./crates/introspect" } diff --git a/crates/wit-bindgen-go/src/lib.rs b/crates/wit-bindgen-go/src/lib.rs index 022ad953..38541a82 100644 --- a/crates/wit-bindgen-go/src/lib.rs +++ b/crates/wit-bindgen-go/src/lib.rs @@ -470,7 +470,7 @@ fn gofmt(src: &mut String) { } impl WorldGenerator for GoWrpc { - fn preprocess(&mut self, resolve: &Resolve, world: WorldId) { + fn preprocess(&mut self, resolve: &Resolve, world: WorldId) -> Result<()> { self.types.analyze(resolve); self.world = Some(world); @@ -490,6 +490,7 @@ impl WorldGenerator for GoWrpc { self.with.insert(k.clone(), v.clone().into()); } self.with.generate_by_default = self.opts.generate_all; + Ok(()) } fn import_interface( diff --git a/crates/wit-bindgen-rust-macro/src/lib.rs b/crates/wit-bindgen-rust-macro/src/lib.rs index 9e516751..8236a43f 100644 --- a/crates/wit-bindgen-rust-macro/src/lib.rs +++ b/crates/wit-bindgen-rust-macro/src/lib.rs @@ -7,7 +7,7 @@ use syn::parse::{Error, Parse, ParseStream, Result}; use syn::punctuated::Punctuated; use syn::spanned::Spanned; use syn::{LitStr, Token, braced, token}; -use wit_bindgen_core::wit_parser::{PackageId, Resolve, UnresolvedPackageGroup, WorldId}; +use wit_bindgen_core::wit_parser::{PackageId, Resolve, WorldId}; use wit_bindgen_wrpc_rust::{Opts, WithOption}; #[proc_macro] @@ -236,7 +236,7 @@ fn parse_source( if let Some(p) = path { parse(p)?; } - pkgs.push(resolve.push_group(UnresolvedPackageGroup::parse("macro-input", s)?)?); + pkgs.push(resolve.push_str("macro-input", s)?); } Some(Source::Paths(p)) => parse(p)?, None => parse(&[root.join("wit")])?, diff --git a/crates/wit-bindgen-rust/src/lib.rs b/crates/wit-bindgen-rust/src/lib.rs index 8edb6543..9f237b6a 100644 --- a/crates/wit-bindgen-rust/src/lib.rs +++ b/crates/wit-bindgen-rust/src/lib.rs @@ -492,7 +492,7 @@ pub fn serve<'a, T: {wrpc_transport}::Serve, H: {bound} + ::core::marker::Send + } impl WorldGenerator for RustWrpc { - fn preprocess(&mut self, resolve: &Resolve, world: WorldId) { + fn preprocess(&mut self, resolve: &Resolve, world: WorldId) -> Result<()> { wit_bindgen_core::generated_preamble(&mut self.src_preamble, env!("CARGO_PKG_VERSION")); // Render some generator options to assist with debugging and/or to help @@ -537,6 +537,7 @@ impl WorldGenerator for RustWrpc { self.with.insert(k.clone(), v.clone().into()); } self.with.generate_by_default = self.opts.generate_all; + Ok(()) } fn import_interface( diff --git a/crates/wit-bindgen/src/lib.rs b/crates/wit-bindgen/src/lib.rs index 140fcbea..d189b6f7 100644 --- a/crates/wit-bindgen/src/lib.rs +++ b/crates/wit-bindgen/src/lib.rs @@ -901,6 +901,74 @@ pub use wit_bindgen_wrpc_rust_macro::generate; /// enable_method_chaining: true /// }); /// ``` +/// +/// The `merge_structurally_equal_types` option is not supported (upstream #1468, +/// exposed in the macro by #1633): +/// +/// ```compile_fail +/// wit_bindgen_wrpc::generate!({ +/// inline: r#" +/// package test:merge-structurally-equal-types; +/// +/// interface blag { +/// variant kind1 { a, b(u64), c } +/// variant kind2 { a, b(u64), c } +/// record kind3 { a: input-stream } +/// record kind4 { a: input-stream } +/// record tree { l: t1, r: t1 } +/// record t1 { l: t2, r: t2 } +/// record t2 { l: t3, r: t3 } +/// record t3 { l: kind1, r: kind2 } +/// record t-stream { tree: tree, %stream: option> } +/// resource input-stream { +/// read: func(len: u64) -> list; +/// } +/// f: func(x: kind1) -> kind2; +/// g: func(x: kind3) -> kind4; +/// h: func(x: t-stream) -> tree; +/// } +/// +/// interface blah { +/// use blag.{input-stream, kind4, t-stream}; +/// variant kind5 { a, b(u64), c } +/// variant kind6 { a, c, b(u64) } +/// record kind7 { a: borrow } +/// record tt { l: t2, r: t2 } +/// record t1 { l: t3, r: t3 } +/// record t2 { l: t1, r: t1 } +/// record t3 { l: kind5, r: kind5 } +/// variant custom-result { ok(tt), err } +/// f: func(x: kind6) -> kind5; +/// g: func(x: kind7) -> kind4; +/// h: func(x: t-stream) -> custom-result; +/// +/// record r1 { a: u8 } +/// type a1 = u8; +/// record r2 { a: a1 } +/// alias-type: func(x: r1) -> r2; +/// } +/// +/// interface resources { +/// resource r1; +/// type r2 = r1; +/// +/// record t1 { a: r1 } +/// record t2 { a: r2 } +/// alias-own: func(x: t1) -> t2; +/// alias-aggregate: func(x: option) -> option; +/// } +/// +/// world proxy { +/// import blag; +/// export blag; +/// import blah; +/// export blah; +/// } +/// "#, +/// generate_all, +/// merge_structurally_equal_types: true +/// }); +/// ``` #[cfg(doctest)] pub struct UnimplementedFeatureTests; diff --git a/tests/codegen/single-version-package/wit/deps/dep/root.wit b/tests/codegen/single-version-package/wit/deps/dep/root.wit new file mode 100644 index 00000000..cdda0a38 --- /dev/null +++ b/tests/codegen/single-version-package/wit/deps/dep/root.wit @@ -0,0 +1,5 @@ +package my:dep@0.1.0; + +interface a { + x: func(); +} diff --git a/tests/codegen/single-version-package/wit/root.wit b/tests/codegen/single-version-package/wit/root.wit new file mode 100644 index 00000000..82df7fd4 --- /dev/null +++ b/tests/codegen/single-version-package/wit/root.wit @@ -0,0 +1,5 @@ +package foo:bar; + +world the-world { + import my:dep/a@0.1.0; +}