Skip to content

Commit 542078b

Browse files
committed
Update validation of {future,stream}.close-readable
Account for changes in WebAssembly/component-model#446 and update the validation here to expect two `i32` parameters instead of only one.
1 parent 90545d4 commit 542078b

File tree

7 files changed

+22
-22
lines changed

7 files changed

+22
-22
lines changed

crates/wasmparser/src/validator/component.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1437,7 +1437,7 @@ impl ComponentState {
14371437
};
14381438

14391439
self.core_funcs
1440-
.push(types.intern_func_type(FuncType::new([ValType::I32], []), offset));
1440+
.push(types.intern_func_type(FuncType::new([ValType::I32; 2], []), offset));
14411441
Ok(())
14421442
}
14431443

@@ -1621,7 +1621,7 @@ impl ComponentState {
16211621
};
16221622

16231623
self.core_funcs
1624-
.push(types.intern_func_type(FuncType::new([ValType::I32], []), offset));
1624+
.push(types.intern_func_type(FuncType::new([ValType::I32; 2], []), offset));
16251625
Ok(())
16261626
}
16271627

crates/wit-component/src/validation.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -888,7 +888,7 @@ impl ImportMap {
888888
if async_ {
889889
bail!("async `future.close-readable` calls not supported");
890890
}
891-
validate_func_sig(name, &FuncType::new([ValType::I32], []), ty)?;
891+
validate_func_sig(name, &FuncType::new([ValType::I32; 2], []), ty)?;
892892
Import::FutureCloseReadable(info)
893893
} else if let Some(info) = prefixed_payload("[stream-new-") {
894894
if async_ {
@@ -918,7 +918,7 @@ impl ImportMap {
918918
if async_ {
919919
bail!("async `stream.close-readable` calls not supported");
920920
}
921-
validate_func_sig(name, &FuncType::new([ValType::I32], []), ty)?;
921+
validate_func_sig(name, &FuncType::new([ValType::I32; 2], []), ty)?;
922922
Import::StreamCloseReadable(info)
923923
} else {
924924
return Ok(None);

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

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,84 +6,84 @@
66
(func (import "$root" "[stream-write-2]foo") (param i32 i32 i32) (result i32))
77
(func (import "$root" "[stream-cancel-read-2]foo") (param i32) (result i32))
88
(func (import "$root" "[stream-cancel-write-2]foo") (param i32) (result i32))
9-
(func (import "$root" "[stream-close-readable-2]foo") (param i32))
9+
(func (import "$root" "[stream-close-readable-2]foo") (param i32 i32))
1010
(func (import "$root" "[stream-close-writable-2]foo") (param i32 i32))
1111
(func (import "foo:foo/bar" "[stream-new-2]foo") (result i32))
1212
(func (import "foo:foo/bar" "[stream-read-2]foo") (param i32 i32 i32) (result i32))
1313
(func (import "foo:foo/bar" "[stream-write-2]foo") (param i32 i32 i32) (result i32))
1414
(func (import "foo:foo/bar" "[stream-cancel-read-2]foo") (param i32) (result i32))
1515
(func (import "foo:foo/bar" "[stream-cancel-write-2]foo") (param i32) (result i32))
16-
(func (import "foo:foo/bar" "[stream-close-readable-2]foo") (param i32))
16+
(func (import "foo:foo/bar" "[stream-close-readable-2]foo") (param i32 i32))
1717
(func (import "foo:foo/bar" "[stream-close-writable-2]foo") (param i32 i32))
1818
(func (import "$root" "[future-new-0]foo") (result i32))
1919
(func (import "$root" "[future-read-0]foo") (param i32 i32) (result i32))
2020
(func (import "$root" "[future-write-0]foo") (param i32 i32) (result i32))
2121
(func (import "$root" "[future-cancel-read-0]foo") (param i32) (result i32))
2222
(func (import "$root" "[future-cancel-write-0]foo") (param i32) (result i32))
23-
(func (import "$root" "[future-close-readable-0]foo") (param i32))
23+
(func (import "$root" "[future-close-readable-0]foo") (param i32 i32))
2424
(func (import "$root" "[future-close-writable-0]foo") (param i32 i32))
2525
(func (import "foo:foo/bar" "[future-new-0]foo") (result i32))
2626
(func (import "foo:foo/bar" "[future-read-0]foo") (param i32 i32) (result i32))
2727
(func (import "foo:foo/bar" "[future-write-0]foo") (param i32 i32) (result i32))
2828
(func (import "foo:foo/bar" "[future-cancel-read-0]foo") (param i32) (result i32))
2929
(func (import "foo:foo/bar" "[future-cancel-write-0]foo") (param i32) (result i32))
30-
(func (import "foo:foo/bar" "[future-close-readable-0]foo") (param i32))
30+
(func (import "foo:foo/bar" "[future-close-readable-0]foo") (param i32 i32))
3131
(func (import "foo:foo/bar" "[future-close-writable-0]foo") (param i32 i32))
3232
(func (import "$root" "[future-new-1]foo") (result i32))
3333
(func (import "$root" "[future-read-1]foo") (param i32 i32) (result i32))
3434
(func (import "$root" "[future-write-1]foo") (param i32 i32) (result i32))
3535
(func (import "$root" "[future-cancel-read-1]foo") (param i32) (result i32))
3636
(func (import "$root" "[future-cancel-write-1]foo") (param i32) (result i32))
37-
(func (import "$root" "[future-close-readable-1]foo") (param i32))
37+
(func (import "$root" "[future-close-readable-1]foo") (param i32 i32))
3838
(func (import "$root" "[future-close-writable-1]foo") (param i32 i32))
3939
(func (import "foo:foo/bar" "[future-new-1]foo") (result i32))
4040
(func (import "foo:foo/bar" "[future-read-1]foo") (param i32 i32) (result i32))
4141
(func (import "foo:foo/bar" "[future-write-1]foo") (param i32 i32) (result i32))
4242
(func (import "foo:foo/bar" "[future-cancel-read-1]foo") (param i32) (result i32))
4343
(func (import "foo:foo/bar" "[future-cancel-write-1]foo") (param i32) (result i32))
44-
(func (import "foo:foo/bar" "[future-close-readable-1]foo") (param i32))
44+
(func (import "foo:foo/bar" "[future-close-readable-1]foo") (param i32 i32))
4545
(func (import "foo:foo/bar" "[future-close-writable-1]foo") (param i32 i32))
4646
(func (import "[export]$root" "[stream-new-2]foo") (result i32))
4747
(func (import "[export]$root" "[stream-read-2]foo") (param i32 i32 i32) (result i32))
4848
(func (import "[export]$root" "[stream-write-2]foo") (param i32 i32 i32) (result i32))
4949
(func (import "[export]$root" "[stream-cancel-read-2]foo") (param i32) (result i32))
5050
(func (import "[export]$root" "[stream-cancel-write-2]foo") (param i32) (result i32))
51-
(func (import "[export]$root" "[stream-close-readable-2]foo") (param i32))
51+
(func (import "[export]$root" "[stream-close-readable-2]foo") (param i32 i32))
5252
(func (import "[export]$root" "[stream-close-writable-2]foo") (param i32 i32))
5353
(func (import "[export]foo:foo/bar" "[stream-new-2]foo") (result i32))
5454
(func (import "[export]foo:foo/bar" "[stream-read-2]foo") (param i32 i32 i32) (result i32))
5555
(func (import "[export]foo:foo/bar" "[stream-write-2]foo") (param i32 i32 i32) (result i32))
5656
(func (import "[export]foo:foo/bar" "[stream-cancel-read-2]foo") (param i32) (result i32))
5757
(func (import "[export]foo:foo/bar" "[stream-cancel-write-2]foo") (param i32) (result i32))
58-
(func (import "[export]foo:foo/bar" "[stream-close-readable-2]foo") (param i32))
58+
(func (import "[export]foo:foo/bar" "[stream-close-readable-2]foo") (param i32 i32))
5959
(func (import "[export]foo:foo/bar" "[stream-close-writable-2]foo") (param i32 i32))
6060
(func (import "[export]$root" "[future-new-0]foo") (result i32))
6161
(func (import "[export]$root" "[future-read-0]foo") (param i32 i32) (result i32))
6262
(func (import "[export]$root" "[future-write-0]foo") (param i32 i32) (result i32))
6363
(func (import "[export]$root" "[future-cancel-read-0]foo") (param i32) (result i32))
6464
(func (import "[export]$root" "[future-cancel-write-0]foo") (param i32) (result i32))
65-
(func (import "[export]$root" "[future-close-readable-0]foo") (param i32))
65+
(func (import "[export]$root" "[future-close-readable-0]foo") (param i32 i32))
6666
(func (import "[export]$root" "[future-close-writable-0]foo") (param i32 i32))
6767
(func (import "[export]foo:foo/bar" "[future-new-0]foo") (result i32))
6868
(func (import "[export]foo:foo/bar" "[future-read-0]foo") (param i32 i32) (result i32))
6969
(func (import "[export]foo:foo/bar" "[future-write-0]foo") (param i32 i32) (result i32))
7070
(func (import "[export]foo:foo/bar" "[future-cancel-read-0]foo") (param i32) (result i32))
7171
(func (import "[export]foo:foo/bar" "[future-cancel-write-0]foo") (param i32) (result i32))
72-
(func (import "[export]foo:foo/bar" "[future-close-readable-0]foo") (param i32))
72+
(func (import "[export]foo:foo/bar" "[future-close-readable-0]foo") (param i32 i32))
7373
(func (import "[export]foo:foo/bar" "[future-close-writable-0]foo") (param i32 i32))
7474
(func (import "[export]$root" "[future-new-1]foo") (result i32))
7575
(func (import "[export]$root" "[future-read-1]foo") (param i32 i32) (result i32))
7676
(func (import "[export]$root" "[future-write-1]foo") (param i32 i32) (result i32))
7777
(func (import "[export]$root" "[future-cancel-read-1]foo") (param i32) (result i32))
7878
(func (import "[export]$root" "[future-cancel-write-1]foo") (param i32) (result i32))
79-
(func (import "[export]$root" "[future-close-readable-1]foo") (param i32))
79+
(func (import "[export]$root" "[future-close-readable-1]foo") (param i32 i32))
8080
(func (import "[export]$root" "[future-close-writable-1]foo") (param i32 i32))
8181
(func (import "[export]foo:foo/bar" "[future-new-1]foo") (result i32))
8282
(func (import "[export]foo:foo/bar" "[future-read-1]foo") (param i32 i32) (result i32))
8383
(func (import "[export]foo:foo/bar" "[future-write-1]foo") (param i32 i32) (result i32))
8484
(func (import "[export]foo:foo/bar" "[future-cancel-read-1]foo") (param i32) (result i32))
8585
(func (import "[export]foo:foo/bar" "[future-cancel-write-1]foo") (param i32) (result i32))
86-
(func (import "[export]foo:foo/bar" "[future-close-readable-1]foo") (param i32))
86+
(func (import "[export]foo:foo/bar" "[future-close-readable-1]foo") (param i32 i32))
8787
(func (import "[export]foo:foo/bar" "[future-close-writable-1]foo") (param i32 i32))
8888
(func (export "[async-stackful]foo") (param i32 i32) unreachable)
8989
(func (export "[async-stackful]foo:foo/bar#foo") (param i32 i32) unreachable)

tests/local/component-model-async/futures.wast

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@
169169
;; future.close-readable
170170
(component
171171
(core module $m
172-
(import "" "future.close-readable" (func $future-close-readable (param i32)))
172+
(import "" "future.close-readable" (func $future-close-readable (param i32 i32)))
173173
)
174174
(type $future-type (future u8))
175175
(core func $future-close-readable (canon future.close-readable $future-type))
@@ -180,7 +180,7 @@
180180
(assert_invalid
181181
(component
182182
(core module $m
183-
(import "" "future.close-readable" (func $future-close-readable (param i32 i32) (result i32)))
183+
(import "" "future.close-readable" (func $future-close-readable (param i32) (result i32)))
184184
)
185185
(type $future-type (future u8))
186186
(core func $future-close-readable (canon future.close-readable $future-type))

tests/local/component-model-async/streams.wast

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,7 @@
169169
;; stream.close-readable
170170
(component
171171
(core module $m
172-
(import "" "stream.close-readable" (func $stream-close-readable (param i32)))
172+
(import "" "stream.close-readable" (func $stream-close-readable (param i32 i32)))
173173
)
174174
(type $stream-type (stream u8))
175175
(core func $stream-close-readable (canon stream.close-readable $stream-type))
@@ -180,7 +180,7 @@
180180
(assert_invalid
181181
(component
182182
(core module $m
183-
(import "" "stream.close-readable" (func $stream-close-readable (param i32 i32) (result i32)))
183+
(import "" "stream.close-readable" (func $stream-close-readable (param i32) (result i32)))
184184
)
185185
(type $stream-type (stream u8))
186186
(core func $stream-close-readable (canon stream.close-readable $stream-type))

tests/snapshots/local/component-model-async/futures.wast/13.print

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
(component
22
(core module $m (;0;)
3-
(type (;0;) (func (param i32)))
3+
(type (;0;) (func (param i32 i32)))
44
(import "" "future.close-readable" (func $future-close-readable (;0;) (type 0)))
55
)
66
(type $future-type (;0;) (future u8))

tests/snapshots/local/component-model-async/streams.wast/13.print

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
(component
22
(core module $m (;0;)
3-
(type (;0;) (func (param i32)))
3+
(type (;0;) (func (param i32 i32)))
44
(import "" "stream.close-readable" (func $stream-close-readable (;0;) (type 0)))
55
)
66
(type $stream-type (;0;) (stream u8))

0 commit comments

Comments
 (0)