Skip to content

Commit 1e7be1e

Browse files
authored
Update the ref_eq.wast spec test to match upstream (#6762)
1 parent 4dee6fe commit 1e7be1e

File tree

1 file changed

+164
-7
lines changed

1 file changed

+164
-7
lines changed

test/spec/ref_eq.wast

Lines changed: 164 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,168 @@
11
(module
2-
(func $compare (export "compare") (param $x eqref) (param $y eqref) (result i32)
3-
(ref.eq
4-
(local.get $x)
5-
(local.get $y)
6-
)
2+
(type $st (sub (struct)))
3+
(type $st' (sub (struct (field i32))))
4+
(type $at (array i8))
5+
(type $st-sub1 (sub $st (struct)))
6+
(type $st-sub2 (sub $st (struct)))
7+
(type $st'-sub1 (sub $st' (struct (field i32))))
8+
(type $st'-sub2 (sub $st' (struct (field i32))))
9+
10+
(table 20 (ref null eq))
11+
12+
(func (export "init")
13+
(table.set (i32.const 0) (ref.null eq))
14+
(table.set (i32.const 1) (ref.null i31))
15+
(table.set (i32.const 2) (ref.i31 (i32.const 7)))
16+
(table.set (i32.const 3) (ref.i31 (i32.const 7)))
17+
(table.set (i32.const 4) (ref.i31 (i32.const 8)))
18+
(table.set (i32.const 5) (struct.new_default $st))
19+
(table.set (i32.const 6) (struct.new_default $st))
20+
(table.set (i32.const 7) (array.new_default $at (i32.const 0)))
21+
(table.set (i32.const 8) (array.new_default $at (i32.const 0)))
22+
)
23+
24+
(func (export "eq") (param $i i32) (param $j i32) (result i32)
25+
(ref.eq (table.get (local.get $i)) (table.get (local.get $j)))
726
)
827
)
928

10-
;; All nulls compare equal, regardless of their type.
11-
(assert_return (invoke "compare" (ref.null none) (ref.null eq)) (i32.const 1))
29+
(invoke "init")
30+
31+
(assert_return (invoke "eq" (i32.const 0) (i32.const 0)) (i32.const 1))
32+
(assert_return (invoke "eq" (i32.const 0) (i32.const 1)) (i32.const 1))
33+
(assert_return (invoke "eq" (i32.const 0) (i32.const 2)) (i32.const 0))
34+
(assert_return (invoke "eq" (i32.const 0) (i32.const 3)) (i32.const 0))
35+
(assert_return (invoke "eq" (i32.const 0) (i32.const 4)) (i32.const 0))
36+
(assert_return (invoke "eq" (i32.const 0) (i32.const 5)) (i32.const 0))
37+
(assert_return (invoke "eq" (i32.const 0) (i32.const 6)) (i32.const 0))
38+
(assert_return (invoke "eq" (i32.const 0) (i32.const 7)) (i32.const 0))
39+
(assert_return (invoke "eq" (i32.const 0) (i32.const 8)) (i32.const 0))
40+
41+
(assert_return (invoke "eq" (i32.const 1) (i32.const 0)) (i32.const 1))
42+
(assert_return (invoke "eq" (i32.const 1) (i32.const 1)) (i32.const 1))
43+
(assert_return (invoke "eq" (i32.const 1) (i32.const 2)) (i32.const 0))
44+
(assert_return (invoke "eq" (i32.const 1) (i32.const 3)) (i32.const 0))
45+
(assert_return (invoke "eq" (i32.const 1) (i32.const 4)) (i32.const 0))
46+
(assert_return (invoke "eq" (i32.const 1) (i32.const 5)) (i32.const 0))
47+
(assert_return (invoke "eq" (i32.const 1) (i32.const 6)) (i32.const 0))
48+
(assert_return (invoke "eq" (i32.const 1) (i32.const 7)) (i32.const 0))
49+
(assert_return (invoke "eq" (i32.const 1) (i32.const 8)) (i32.const 0))
50+
51+
(assert_return (invoke "eq" (i32.const 2) (i32.const 0)) (i32.const 0))
52+
(assert_return (invoke "eq" (i32.const 2) (i32.const 1)) (i32.const 0))
53+
(assert_return (invoke "eq" (i32.const 2) (i32.const 2)) (i32.const 1))
54+
(assert_return (invoke "eq" (i32.const 2) (i32.const 3)) (i32.const 1))
55+
(assert_return (invoke "eq" (i32.const 2) (i32.const 4)) (i32.const 0))
56+
(assert_return (invoke "eq" (i32.const 2) (i32.const 5)) (i32.const 0))
57+
(assert_return (invoke "eq" (i32.const 2) (i32.const 6)) (i32.const 0))
58+
(assert_return (invoke "eq" (i32.const 2) (i32.const 7)) (i32.const 0))
59+
(assert_return (invoke "eq" (i32.const 2) (i32.const 8)) (i32.const 0))
60+
61+
(assert_return (invoke "eq" (i32.const 3) (i32.const 0)) (i32.const 0))
62+
(assert_return (invoke "eq" (i32.const 3) (i32.const 1)) (i32.const 0))
63+
(assert_return (invoke "eq" (i32.const 3) (i32.const 2)) (i32.const 1))
64+
(assert_return (invoke "eq" (i32.const 3) (i32.const 3)) (i32.const 1))
65+
(assert_return (invoke "eq" (i32.const 3) (i32.const 4)) (i32.const 0))
66+
(assert_return (invoke "eq" (i32.const 3) (i32.const 5)) (i32.const 0))
67+
(assert_return (invoke "eq" (i32.const 3) (i32.const 6)) (i32.const 0))
68+
(assert_return (invoke "eq" (i32.const 3) (i32.const 7)) (i32.const 0))
69+
(assert_return (invoke "eq" (i32.const 3) (i32.const 8)) (i32.const 0))
70+
71+
(assert_return (invoke "eq" (i32.const 4) (i32.const 0)) (i32.const 0))
72+
(assert_return (invoke "eq" (i32.const 4) (i32.const 1)) (i32.const 0))
73+
(assert_return (invoke "eq" (i32.const 4) (i32.const 2)) (i32.const 0))
74+
(assert_return (invoke "eq" (i32.const 4) (i32.const 3)) (i32.const 0))
75+
(assert_return (invoke "eq" (i32.const 4) (i32.const 4)) (i32.const 1))
76+
(assert_return (invoke "eq" (i32.const 4) (i32.const 5)) (i32.const 0))
77+
(assert_return (invoke "eq" (i32.const 4) (i32.const 6)) (i32.const 0))
78+
(assert_return (invoke "eq" (i32.const 4) (i32.const 7)) (i32.const 0))
79+
(assert_return (invoke "eq" (i32.const 4) (i32.const 8)) (i32.const 0))
80+
81+
(assert_return (invoke "eq" (i32.const 5) (i32.const 0)) (i32.const 0))
82+
(assert_return (invoke "eq" (i32.const 5) (i32.const 1)) (i32.const 0))
83+
(assert_return (invoke "eq" (i32.const 5) (i32.const 2)) (i32.const 0))
84+
(assert_return (invoke "eq" (i32.const 5) (i32.const 3)) (i32.const 0))
85+
(assert_return (invoke "eq" (i32.const 5) (i32.const 4)) (i32.const 0))
86+
(assert_return (invoke "eq" (i32.const 5) (i32.const 5)) (i32.const 1))
87+
(assert_return (invoke "eq" (i32.const 5) (i32.const 6)) (i32.const 0))
88+
(assert_return (invoke "eq" (i32.const 5) (i32.const 7)) (i32.const 0))
89+
(assert_return (invoke "eq" (i32.const 5) (i32.const 8)) (i32.const 0))
90+
91+
(assert_return (invoke "eq" (i32.const 6) (i32.const 0)) (i32.const 0))
92+
(assert_return (invoke "eq" (i32.const 6) (i32.const 1)) (i32.const 0))
93+
(assert_return (invoke "eq" (i32.const 6) (i32.const 2)) (i32.const 0))
94+
(assert_return (invoke "eq" (i32.const 6) (i32.const 3)) (i32.const 0))
95+
(assert_return (invoke "eq" (i32.const 6) (i32.const 4)) (i32.const 0))
96+
(assert_return (invoke "eq" (i32.const 6) (i32.const 5)) (i32.const 0))
97+
(assert_return (invoke "eq" (i32.const 6) (i32.const 6)) (i32.const 1))
98+
(assert_return (invoke "eq" (i32.const 6) (i32.const 7)) (i32.const 0))
99+
(assert_return (invoke "eq" (i32.const 6) (i32.const 8)) (i32.const 0))
100+
101+
(assert_return (invoke "eq" (i32.const 7) (i32.const 0)) (i32.const 0))
102+
(assert_return (invoke "eq" (i32.const 7) (i32.const 1)) (i32.const 0))
103+
(assert_return (invoke "eq" (i32.const 7) (i32.const 2)) (i32.const 0))
104+
(assert_return (invoke "eq" (i32.const 7) (i32.const 3)) (i32.const 0))
105+
(assert_return (invoke "eq" (i32.const 7) (i32.const 4)) (i32.const 0))
106+
(assert_return (invoke "eq" (i32.const 7) (i32.const 5)) (i32.const 0))
107+
(assert_return (invoke "eq" (i32.const 7) (i32.const 6)) (i32.const 0))
108+
(assert_return (invoke "eq" (i32.const 7) (i32.const 7)) (i32.const 1))
109+
(assert_return (invoke "eq" (i32.const 7) (i32.const 8)) (i32.const 0))
110+
111+
(assert_return (invoke "eq" (i32.const 8) (i32.const 0)) (i32.const 0))
112+
(assert_return (invoke "eq" (i32.const 8) (i32.const 1)) (i32.const 0))
113+
(assert_return (invoke "eq" (i32.const 8) (i32.const 2)) (i32.const 0))
114+
(assert_return (invoke "eq" (i32.const 8) (i32.const 3)) (i32.const 0))
115+
(assert_return (invoke "eq" (i32.const 8) (i32.const 4)) (i32.const 0))
116+
(assert_return (invoke "eq" (i32.const 8) (i32.const 5)) (i32.const 0))
117+
(assert_return (invoke "eq" (i32.const 8) (i32.const 6)) (i32.const 0))
118+
(assert_return (invoke "eq" (i32.const 8) (i32.const 7)) (i32.const 0))
119+
(assert_return (invoke "eq" (i32.const 8) (i32.const 8)) (i32.const 1))
120+
121+
(assert_invalid
122+
(module
123+
(func (export "eq") (param $r (ref any)) (result i32)
124+
(ref.eq (local.get $r) (local.get $r))
125+
)
126+
)
127+
"type mismatch"
128+
)
129+
(assert_invalid
130+
(module
131+
(func (export "eq") (param $r (ref null any)) (result i32)
132+
(ref.eq (local.get $r) (local.get $r))
133+
)
134+
)
135+
"type mismatch"
136+
)
137+
(assert_invalid
138+
(module
139+
(func (export "eq") (param $r (ref func)) (result i32)
140+
(ref.eq (local.get $r) (local.get $r))
141+
)
142+
)
143+
"type mismatch"
144+
)
145+
(assert_invalid
146+
(module
147+
(func (export "eq") (param $r (ref null func)) (result i32)
148+
(ref.eq (local.get $r) (local.get $r))
149+
)
150+
)
151+
"type mismatch"
152+
)
153+
(assert_invalid
154+
(module
155+
(func (export "eq") (param $r (ref extern)) (result i32)
156+
(ref.eq (local.get $r) (local.get $r))
157+
)
158+
)
159+
"type mismatch"
160+
)
161+
(assert_invalid
162+
(module
163+
(func (export "eq") (param $r (ref null extern)) (result i32)
164+
(ref.eq (local.get $r) (local.get $r))
165+
)
166+
)
167+
"type mismatch"
168+
)

0 commit comments

Comments
 (0)