Skip to content

Commit 5d39a8b

Browse files
committed
Update the ABI of async imports/exports
This commit updates wasm-tools with the changes from WebAssembly/component-model#520 which updates the ABI of async imports and exports. The changes here are: * Flat function parameters are now allowed. * If there are no function parameters then the parameters are entirely omitted. * The result out-ptr is now omitted if there are no function results.
1 parent 2d68b15 commit 5d39a8b

File tree

11 files changed

+641
-152
lines changed

11 files changed

+641
-152
lines changed

crates/wasmparser/src/validator/component_types.rs

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ use core::{
2525
/// Functions that exceed this limit will instead pass parameters indirectly from
2626
/// linear memory via a single pointer parameter.
2727
const MAX_FLAT_FUNC_PARAMS: usize = 16;
28+
/// The maximum number of parameters in the canonical ABI that can be passed by
29+
/// value in async function imports/exports.
30+
const MAX_FLAT_ASYNC_PARAMS: usize = 4;
2831
/// The maximum number of results in the canonical ABI that can be returned by a function.
2932
///
3033
/// Functions that exceed this limit have their results written to linear memory via an
@@ -930,16 +933,8 @@ impl ComponentFuncType {
930933
) -> Result<FuncType> {
931934
let mut sig = LoweredSignature::default();
932935

933-
if abi == Abi::Lower && options.concurrency.is_async() {
934-
for _ in 0..2 {
935-
sig.params.assert_push(ValType::I32);
936-
}
937-
sig.results.assert_push(ValType::I32);
938-
options.require_memory(offset)?;
939-
if self.result.is_some_and(|ty| ty.contains_ptr(types)) {
940-
options.require_realloc(offset)?;
941-
}
942-
return Ok(sig.into_func_type());
936+
if options.concurrency.is_async() {
937+
sig.params.max = MAX_FLAT_ASYNC_PARAMS;
943938
}
944939

945940
for (_, ty) in self.params.iter() {
@@ -975,9 +970,6 @@ impl ComponentFuncType {
975970
}
976971

977972
match (abi, options.concurrency) {
978-
(Abi::Lower, Concurrency::Async { .. }) => {
979-
unreachable!("special-cased at the start of the function")
980-
}
981973
(Abi::Lower | Abi::Lift, Concurrency::Sync) => {
982974
if let Some(ty) = &self.result {
983975
// Results of lowered functions that contains pointers must be
@@ -1006,10 +998,19 @@ impl ComponentFuncType {
1006998
}
1007999
}
10081000
}
1009-
(Abi::Lift, Concurrency::Async { callback: Some(_) }) => {
1001+
(Abi::Lower, Concurrency::Async { callback: _ }) => {
1002+
if self.result.is_some() {
1003+
sig.params.max = MAX_LOWERED_TYPES;
1004+
sig.params.assert_push(ValType::I32);
1005+
options.require_memory(offset)?;
1006+
}
10101007
sig.results.assert_push(ValType::I32);
10111008
}
1012-
(Abi::Lift, Concurrency::Async { callback: None }) => {}
1009+
(Abi::Lift, Concurrency::Async { callback }) => {
1010+
if callback.is_some() {
1011+
sig.results.assert_push(ValType::I32);
1012+
}
1013+
}
10131014
}
10141015

10151016
Ok(sig.into_func_type())

crates/wit-component/tests/components/async-import/component.wat

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
(type (;1;) (func (param "s" string) (result string)))
1010
(import "foo" (func (;0;) (type 1)))
1111
(core module (;0;)
12-
(type (;0;) (func (param i32 i32) (result i32)))
12+
(type (;0;) (func (param i32 i32 i32) (result i32)))
1313
(type (;1;) (func (param i32 i32 i32)))
1414
(type (;2;) (func (param i32 i32 i32 i32) (result i32)))
1515
(import "$root" "[async-lower]foo" (func (;0;) (type 0)))
@@ -28,17 +28,18 @@
2828
)
2929
)
3030
(core module (;1;)
31-
(type (;0;) (func (param i32 i32) (result i32)))
31+
(type (;0;) (func (param i32 i32 i32) (result i32)))
3232
(type (;1;) (func (param i32 i32 i32)))
3333
(table (;0;) 4 4 funcref)
3434
(export "0" (func $"indirect-$root-[async-lower]foo"))
3535
(export "1" (func $indirect-$root-foo))
3636
(export "2" (func $"indirect-foo:foo/bar-[async-lower]foo"))
3737
(export "3" (func $indirect-foo:foo/bar-foo))
3838
(export "$imports" (table 0))
39-
(func $"indirect-$root-[async-lower]foo" (;0;) (type 0) (param i32 i32) (result i32)
39+
(func $"indirect-$root-[async-lower]foo" (;0;) (type 0) (param i32 i32 i32) (result i32)
4040
local.get 0
4141
local.get 1
42+
local.get 2
4243
i32.const 0
4344
call_indirect (type 0)
4445
)
@@ -49,9 +50,10 @@
4950
i32.const 1
5051
call_indirect (type 1)
5152
)
52-
(func $"indirect-foo:foo/bar-[async-lower]foo" (;2;) (type 0) (param i32 i32) (result i32)
53+
(func $"indirect-foo:foo/bar-[async-lower]foo" (;2;) (type 0) (param i32 i32 i32) (result i32)
5354
local.get 0
5455
local.get 1
56+
local.get 2
5557
i32.const 2
5658
call_indirect (type 0)
5759
)
@@ -67,7 +69,7 @@
6769
)
6870
)
6971
(core module (;2;)
70-
(type (;0;) (func (param i32 i32) (result i32)))
72+
(type (;0;) (func (param i32 i32 i32) (result i32)))
7173
(type (;1;) (func (param i32 i32 i32)))
7274
(import "" "0" (func (;0;) (type 0)))
7375
(import "" "1" (func (;1;) (type 1)))

crates/wit-component/tests/components/async-import/module.wat

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
(module
2-
(func (import "$root" "[async-lower]foo") (param i32 i32) (result i32))
3-
(func (import "foo:foo/bar" "[async-lower]foo") (param i32 i32) (result i32))
2+
(func (import "$root" "[async-lower]foo") (param i32 i32 i32) (result i32))
3+
(func (import "foo:foo/bar" "[async-lower]foo") (param i32 i32 i32) (result i32))
44
(func (import "$root" "foo") (param i32 i32 i32))
55
(func (import "foo:foo/bar" "foo") (param i32 i32 i32))
66
(memory (export "memory") 1)

crates/wit-component/tests/components/async-streams-and-futures/component.wat

Lines changed: 82 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -15,99 +15,99 @@
1515
(type (;4;) (func (param "x" 2) (param "y" u32) (result 3)))
1616
(import "foo" (func (;0;) (type 4)))
1717
(core module (;0;)
18-
(type (;0;) (func (param i32 i32) (result i32)))
18+
(type (;0;) (func (param i32 i32 i32) (result i32)))
1919
(type (;1;) (func (result i64)))
20-
(type (;2;) (func (param i32 i32 i32) (result i32)))
21-
(type (;3;) (func (param i32) (result i32)))
22-
(type (;4;) (func (param i32)))
20+
(type (;2;) (func (param i32) (result i32)))
21+
(type (;3;) (func (param i32)))
22+
(type (;4;) (func (param i32 i32) (result i32)))
2323
(type (;5;) (func (param i32 i32)))
2424
(type (;6;) (func (param i32 i32 i32 i32) (result i32)))
2525
(import "$root" "[async-lower]foo" (func (;0;) (type 0)))
2626
(import "foo:foo/bar" "[async-lower]foo" (func (;1;) (type 0)))
2727
(import "$root" "[stream-new-2]foo" (func (;2;) (type 1)))
28-
(import "$root" "[stream-read-2]foo" (func (;3;) (type 2)))
29-
(import "$root" "[stream-write-2]foo" (func (;4;) (type 2)))
30-
(import "$root" "[stream-cancel-read-2]foo" (func (;5;) (type 3)))
31-
(import "$root" "[stream-cancel-write-2]foo" (func (;6;) (type 3)))
32-
(import "$root" "[stream-close-readable-2]foo" (func (;7;) (type 4)))
33-
(import "$root" "[stream-close-writable-2]foo" (func (;8;) (type 4)))
28+
(import "$root" "[stream-read-2]foo" (func (;3;) (type 0)))
29+
(import "$root" "[stream-write-2]foo" (func (;4;) (type 0)))
30+
(import "$root" "[stream-cancel-read-2]foo" (func (;5;) (type 2)))
31+
(import "$root" "[stream-cancel-write-2]foo" (func (;6;) (type 2)))
32+
(import "$root" "[stream-close-readable-2]foo" (func (;7;) (type 3)))
33+
(import "$root" "[stream-close-writable-2]foo" (func (;8;) (type 3)))
3434
(import "foo:foo/bar" "[stream-new-2]foo" (func (;9;) (type 1)))
35-
(import "foo:foo/bar" "[stream-read-2]foo" (func (;10;) (type 2)))
36-
(import "foo:foo/bar" "[stream-write-2]foo" (func (;11;) (type 2)))
37-
(import "foo:foo/bar" "[stream-cancel-read-2]foo" (func (;12;) (type 3)))
38-
(import "foo:foo/bar" "[stream-cancel-write-2]foo" (func (;13;) (type 3)))
39-
(import "foo:foo/bar" "[stream-close-readable-2]foo" (func (;14;) (type 4)))
40-
(import "foo:foo/bar" "[stream-close-writable-2]foo" (func (;15;) (type 4)))
35+
(import "foo:foo/bar" "[stream-read-2]foo" (func (;10;) (type 0)))
36+
(import "foo:foo/bar" "[stream-write-2]foo" (func (;11;) (type 0)))
37+
(import "foo:foo/bar" "[stream-cancel-read-2]foo" (func (;12;) (type 2)))
38+
(import "foo:foo/bar" "[stream-cancel-write-2]foo" (func (;13;) (type 2)))
39+
(import "foo:foo/bar" "[stream-close-readable-2]foo" (func (;14;) (type 3)))
40+
(import "foo:foo/bar" "[stream-close-writable-2]foo" (func (;15;) (type 3)))
4141
(import "$root" "[future-new-0]foo" (func (;16;) (type 1)))
42-
(import "$root" "[future-read-0]foo" (func (;17;) (type 0)))
43-
(import "$root" "[future-write-0]foo" (func (;18;) (type 0)))
44-
(import "$root" "[future-cancel-read-0]foo" (func (;19;) (type 3)))
45-
(import "$root" "[future-cancel-write-0]foo" (func (;20;) (type 3)))
46-
(import "$root" "[future-close-readable-0]foo" (func (;21;) (type 4)))
47-
(import "$root" "[future-close-writable-0]foo" (func (;22;) (type 4)))
42+
(import "$root" "[future-read-0]foo" (func (;17;) (type 4)))
43+
(import "$root" "[future-write-0]foo" (func (;18;) (type 4)))
44+
(import "$root" "[future-cancel-read-0]foo" (func (;19;) (type 2)))
45+
(import "$root" "[future-cancel-write-0]foo" (func (;20;) (type 2)))
46+
(import "$root" "[future-close-readable-0]foo" (func (;21;) (type 3)))
47+
(import "$root" "[future-close-writable-0]foo" (func (;22;) (type 3)))
4848
(import "foo:foo/bar" "[future-new-0]foo" (func (;23;) (type 1)))
49-
(import "foo:foo/bar" "[future-read-0]foo" (func (;24;) (type 0)))
50-
(import "foo:foo/bar" "[future-write-0]foo" (func (;25;) (type 0)))
51-
(import "foo:foo/bar" "[future-cancel-read-0]foo" (func (;26;) (type 3)))
52-
(import "foo:foo/bar" "[future-cancel-write-0]foo" (func (;27;) (type 3)))
53-
(import "foo:foo/bar" "[future-close-readable-0]foo" (func (;28;) (type 4)))
54-
(import "foo:foo/bar" "[future-close-writable-0]foo" (func (;29;) (type 4)))
49+
(import "foo:foo/bar" "[future-read-0]foo" (func (;24;) (type 4)))
50+
(import "foo:foo/bar" "[future-write-0]foo" (func (;25;) (type 4)))
51+
(import "foo:foo/bar" "[future-cancel-read-0]foo" (func (;26;) (type 2)))
52+
(import "foo:foo/bar" "[future-cancel-write-0]foo" (func (;27;) (type 2)))
53+
(import "foo:foo/bar" "[future-close-readable-0]foo" (func (;28;) (type 3)))
54+
(import "foo:foo/bar" "[future-close-writable-0]foo" (func (;29;) (type 3)))
5555
(import "$root" "[future-new-1]foo" (func (;30;) (type 1)))
56-
(import "$root" "[future-read-1]foo" (func (;31;) (type 0)))
57-
(import "$root" "[future-write-1]foo" (func (;32;) (type 0)))
58-
(import "$root" "[future-cancel-read-1]foo" (func (;33;) (type 3)))
59-
(import "$root" "[future-cancel-write-1]foo" (func (;34;) (type 3)))
60-
(import "$root" "[future-close-readable-1]foo" (func (;35;) (type 4)))
61-
(import "$root" "[future-close-writable-1]foo" (func (;36;) (type 4)))
56+
(import "$root" "[future-read-1]foo" (func (;31;) (type 4)))
57+
(import "$root" "[future-write-1]foo" (func (;32;) (type 4)))
58+
(import "$root" "[future-cancel-read-1]foo" (func (;33;) (type 2)))
59+
(import "$root" "[future-cancel-write-1]foo" (func (;34;) (type 2)))
60+
(import "$root" "[future-close-readable-1]foo" (func (;35;) (type 3)))
61+
(import "$root" "[future-close-writable-1]foo" (func (;36;) (type 3)))
6262
(import "foo:foo/bar" "[future-new-1]foo" (func (;37;) (type 1)))
63-
(import "foo:foo/bar" "[future-read-1]foo" (func (;38;) (type 0)))
64-
(import "foo:foo/bar" "[future-write-1]foo" (func (;39;) (type 0)))
65-
(import "foo:foo/bar" "[future-cancel-read-1]foo" (func (;40;) (type 3)))
66-
(import "foo:foo/bar" "[future-cancel-write-1]foo" (func (;41;) (type 3)))
67-
(import "foo:foo/bar" "[future-close-readable-1]foo" (func (;42;) (type 4)))
68-
(import "foo:foo/bar" "[future-close-writable-1]foo" (func (;43;) (type 4)))
63+
(import "foo:foo/bar" "[future-read-1]foo" (func (;38;) (type 4)))
64+
(import "foo:foo/bar" "[future-write-1]foo" (func (;39;) (type 4)))
65+
(import "foo:foo/bar" "[future-cancel-read-1]foo" (func (;40;) (type 2)))
66+
(import "foo:foo/bar" "[future-cancel-write-1]foo" (func (;41;) (type 2)))
67+
(import "foo:foo/bar" "[future-close-readable-1]foo" (func (;42;) (type 3)))
68+
(import "foo:foo/bar" "[future-close-writable-1]foo" (func (;43;) (type 3)))
6969
(import "[export]$root" "[stream-new-2]foo" (func (;44;) (type 1)))
70-
(import "[export]$root" "[stream-read-2]foo" (func (;45;) (type 2)))
71-
(import "[export]$root" "[stream-write-2]foo" (func (;46;) (type 2)))
72-
(import "[export]$root" "[stream-cancel-read-2]foo" (func (;47;) (type 3)))
73-
(import "[export]$root" "[stream-cancel-write-2]foo" (func (;48;) (type 3)))
74-
(import "[export]$root" "[stream-close-readable-2]foo" (func (;49;) (type 4)))
75-
(import "[export]$root" "[stream-close-writable-2]foo" (func (;50;) (type 4)))
70+
(import "[export]$root" "[stream-read-2]foo" (func (;45;) (type 0)))
71+
(import "[export]$root" "[stream-write-2]foo" (func (;46;) (type 0)))
72+
(import "[export]$root" "[stream-cancel-read-2]foo" (func (;47;) (type 2)))
73+
(import "[export]$root" "[stream-cancel-write-2]foo" (func (;48;) (type 2)))
74+
(import "[export]$root" "[stream-close-readable-2]foo" (func (;49;) (type 3)))
75+
(import "[export]$root" "[stream-close-writable-2]foo" (func (;50;) (type 3)))
7676
(import "[export]foo:foo/bar" "[stream-new-2]foo" (func (;51;) (type 1)))
77-
(import "[export]foo:foo/bar" "[stream-read-2]foo" (func (;52;) (type 2)))
78-
(import "[export]foo:foo/bar" "[stream-write-2]foo" (func (;53;) (type 2)))
79-
(import "[export]foo:foo/bar" "[stream-cancel-read-2]foo" (func (;54;) (type 3)))
80-
(import "[export]foo:foo/bar" "[stream-cancel-write-2]foo" (func (;55;) (type 3)))
81-
(import "[export]foo:foo/bar" "[stream-close-readable-2]foo" (func (;56;) (type 4)))
82-
(import "[export]foo:foo/bar" "[stream-close-writable-2]foo" (func (;57;) (type 4)))
77+
(import "[export]foo:foo/bar" "[stream-read-2]foo" (func (;52;) (type 0)))
78+
(import "[export]foo:foo/bar" "[stream-write-2]foo" (func (;53;) (type 0)))
79+
(import "[export]foo:foo/bar" "[stream-cancel-read-2]foo" (func (;54;) (type 2)))
80+
(import "[export]foo:foo/bar" "[stream-cancel-write-2]foo" (func (;55;) (type 2)))
81+
(import "[export]foo:foo/bar" "[stream-close-readable-2]foo" (func (;56;) (type 3)))
82+
(import "[export]foo:foo/bar" "[stream-close-writable-2]foo" (func (;57;) (type 3)))
8383
(import "[export]$root" "[future-new-0]foo" (func (;58;) (type 1)))
84-
(import "[export]$root" "[future-read-0]foo" (func (;59;) (type 0)))
85-
(import "[export]$root" "[future-write-0]foo" (func (;60;) (type 0)))
86-
(import "[export]$root" "[future-cancel-read-0]foo" (func (;61;) (type 3)))
87-
(import "[export]$root" "[future-cancel-write-0]foo" (func (;62;) (type 3)))
88-
(import "[export]$root" "[future-close-readable-0]foo" (func (;63;) (type 4)))
89-
(import "[export]$root" "[future-close-writable-0]foo" (func (;64;) (type 4)))
84+
(import "[export]$root" "[future-read-0]foo" (func (;59;) (type 4)))
85+
(import "[export]$root" "[future-write-0]foo" (func (;60;) (type 4)))
86+
(import "[export]$root" "[future-cancel-read-0]foo" (func (;61;) (type 2)))
87+
(import "[export]$root" "[future-cancel-write-0]foo" (func (;62;) (type 2)))
88+
(import "[export]$root" "[future-close-readable-0]foo" (func (;63;) (type 3)))
89+
(import "[export]$root" "[future-close-writable-0]foo" (func (;64;) (type 3)))
9090
(import "[export]foo:foo/bar" "[future-new-0]foo" (func (;65;) (type 1)))
91-
(import "[export]foo:foo/bar" "[future-read-0]foo" (func (;66;) (type 0)))
92-
(import "[export]foo:foo/bar" "[future-write-0]foo" (func (;67;) (type 0)))
93-
(import "[export]foo:foo/bar" "[future-cancel-read-0]foo" (func (;68;) (type 3)))
94-
(import "[export]foo:foo/bar" "[future-cancel-write-0]foo" (func (;69;) (type 3)))
95-
(import "[export]foo:foo/bar" "[future-close-readable-0]foo" (func (;70;) (type 4)))
96-
(import "[export]foo:foo/bar" "[future-close-writable-0]foo" (func (;71;) (type 4)))
91+
(import "[export]foo:foo/bar" "[future-read-0]foo" (func (;66;) (type 4)))
92+
(import "[export]foo:foo/bar" "[future-write-0]foo" (func (;67;) (type 4)))
93+
(import "[export]foo:foo/bar" "[future-cancel-read-0]foo" (func (;68;) (type 2)))
94+
(import "[export]foo:foo/bar" "[future-cancel-write-0]foo" (func (;69;) (type 2)))
95+
(import "[export]foo:foo/bar" "[future-close-readable-0]foo" (func (;70;) (type 3)))
96+
(import "[export]foo:foo/bar" "[future-close-writable-0]foo" (func (;71;) (type 3)))
9797
(import "[export]$root" "[future-new-1]foo" (func (;72;) (type 1)))
98-
(import "[export]$root" "[future-read-1]foo" (func (;73;) (type 0)))
99-
(import "[export]$root" "[future-write-1]foo" (func (;74;) (type 0)))
100-
(import "[export]$root" "[future-cancel-read-1]foo" (func (;75;) (type 3)))
101-
(import "[export]$root" "[future-cancel-write-1]foo" (func (;76;) (type 3)))
102-
(import "[export]$root" "[future-close-readable-1]foo" (func (;77;) (type 4)))
103-
(import "[export]$root" "[future-close-writable-1]foo" (func (;78;) (type 4)))
98+
(import "[export]$root" "[future-read-1]foo" (func (;73;) (type 4)))
99+
(import "[export]$root" "[future-write-1]foo" (func (;74;) (type 4)))
100+
(import "[export]$root" "[future-cancel-read-1]foo" (func (;75;) (type 2)))
101+
(import "[export]$root" "[future-cancel-write-1]foo" (func (;76;) (type 2)))
102+
(import "[export]$root" "[future-close-readable-1]foo" (func (;77;) (type 3)))
103+
(import "[export]$root" "[future-close-writable-1]foo" (func (;78;) (type 3)))
104104
(import "[export]foo:foo/bar" "[future-new-1]foo" (func (;79;) (type 1)))
105-
(import "[export]foo:foo/bar" "[future-read-1]foo" (func (;80;) (type 0)))
106-
(import "[export]foo:foo/bar" "[future-write-1]foo" (func (;81;) (type 0)))
107-
(import "[export]foo:foo/bar" "[future-cancel-read-1]foo" (func (;82;) (type 3)))
108-
(import "[export]foo:foo/bar" "[future-cancel-write-1]foo" (func (;83;) (type 3)))
109-
(import "[export]foo:foo/bar" "[future-close-readable-1]foo" (func (;84;) (type 4)))
110-
(import "[export]foo:foo/bar" "[future-close-writable-1]foo" (func (;85;) (type 4)))
105+
(import "[export]foo:foo/bar" "[future-read-1]foo" (func (;80;) (type 4)))
106+
(import "[export]foo:foo/bar" "[future-write-1]foo" (func (;81;) (type 4)))
107+
(import "[export]foo:foo/bar" "[future-cancel-read-1]foo" (func (;82;) (type 2)))
108+
(import "[export]foo:foo/bar" "[future-cancel-write-1]foo" (func (;83;) (type 2)))
109+
(import "[export]foo:foo/bar" "[future-close-readable-1]foo" (func (;84;) (type 3)))
110+
(import "[export]foo:foo/bar" "[future-close-writable-1]foo" (func (;85;) (type 3)))
111111
(memory (;0;) 1)
112112
(export "[async-lift-stackful]foo" (func 86))
113113
(export "[async-lift-stackful]foo:foo/bar#foo" (func 87))
@@ -128,7 +128,7 @@
128128
)
129129
)
130130
(core module (;1;)
131-
(type (;0;) (func (param i32 i32) (result i32)))
131+
(type (;0;) (func (param i32 i32 i32) (result i32)))
132132
(type (;1;) (func (param i32 i32 i32) (result i32)))
133133
(type (;2;) (func (param i32 i32) (result i32)))
134134
(table (;0;) 26 26 funcref)
@@ -159,9 +159,10 @@
159159
(export "24" (func $"[export]foo:foo/bar-[future-read-1]foo"))
160160
(export "25" (func $"[export]foo:foo/bar-[future-write-1]foo"))
161161
(export "$imports" (table 0))
162-
(func $"indirect-$root-[async-lower]foo" (;0;) (type 0) (param i32 i32) (result i32)
162+
(func $"indirect-$root-[async-lower]foo" (;0;) (type 0) (param i32 i32 i32) (result i32)
163163
local.get 0
164164
local.get 1
165+
local.get 2
165166
i32.const 0
166167
call_indirect (type 0)
167168
)
@@ -203,9 +204,10 @@
203204
i32.const 6
204205
call_indirect (type 2)
205206
)
206-
(func $"indirect-foo:foo/bar-[async-lower]foo" (;7;) (type 0) (param i32 i32) (result i32)
207+
(func $"indirect-foo:foo/bar-[async-lower]foo" (;7;) (type 0) (param i32 i32 i32) (result i32)
207208
local.get 0
208209
local.get 1
210+
local.get 2
209211
i32.const 7
210212
call_indirect (type 0)
211213
)
@@ -328,7 +330,7 @@
328330
)
329331
)
330332
(core module (;2;)
331-
(type (;0;) (func (param i32 i32) (result i32)))
333+
(type (;0;) (func (param i32 i32 i32) (result i32)))
332334
(type (;1;) (func (param i32 i32 i32) (result i32)))
333335
(type (;2;) (func (param i32 i32) (result i32)))
334336
(import "" "0" (func (;0;) (type 0)))

crates/wit-component/tests/components/async-streams-and-futures/module.wat

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
(module
2-
(func (import "$root" "[async-lower]foo") (param i32 i32) (result i32))
3-
(func (import "foo:foo/bar" "[async-lower]foo") (param i32 i32) (result i32))
2+
(func (import "$root" "[async-lower]foo") (param i32 i32 i32) (result i32))
3+
(func (import "foo:foo/bar" "[async-lower]foo") (param i32 i32 i32) (result i32))
44
(func (import "$root" "[stream-new-2]foo") (result i64))
55
(func (import "$root" "[stream-read-2]foo") (param i32 i32 i32) (result i32))
66
(func (import "$root" "[stream-write-2]foo") (param i32 i32 i32) (result i32))

0 commit comments

Comments
 (0)