|
15 | 15 |
|
16 | 16 | ;; CHECK: (type $4 (func (result externref)))
|
17 | 17 |
|
| 18 | + ;; CHECK: (type $struct-of-string (struct (field externref) (field i32) (field anyref))) |
| 19 | + (type $struct-of-string (struct (field stringref) (field i32) (field anyref))) |
| 20 | + |
18 | 21 | ;; CHECK: (type $struct-of-array (struct (field (ref $0))))
|
19 | 22 | (type $struct-of-array (struct (field (ref $array16))))
|
20 | 23 |
|
|
34 | 37 | (type $array16 (array (mut i16)))
|
35 | 38 | )
|
36 | 39 |
|
37 |
| - ;; CHECK: (type $11 (func (param externref) (result externref))) |
38 |
| - |
39 | 40 | ;; CHECK: (type $12 (func (param externref) (result externref)))
|
40 | 41 |
|
41 |
| - ;; CHECK: (type $13 (func (param externref) (result i32))) |
| 42 | + ;; CHECK: (type $13 (func (param externref) (result externref))) |
42 | 43 |
|
43 |
| - ;; CHECK: (type $14 (func (param externref externref) (result i32))) |
| 44 | + ;; CHECK: (type $14 (func (param externref) (result i32))) |
44 | 45 |
|
45 |
| - ;; CHECK: (type $15 (func (param externref (ref $0)) (result i32))) |
| 46 | + ;; CHECK: (type $15 (func (param externref externref) (result i32))) |
46 | 47 |
|
47 |
| - ;; CHECK: (type $16 (func (param (ref $0)))) |
| 48 | + ;; CHECK: (type $16 (func (param externref (ref $0)) (result i32))) |
48 | 49 |
|
49 |
| - ;; CHECK: (type $17 (func (param externref externref externref externref))) |
| 50 | + ;; CHECK: (type $17 (func (param (ref $0)))) |
50 | 51 |
|
51 |
| - ;; CHECK: (type $18 (func (param (ref null $0) i32 i32) (result (ref extern)))) |
| 52 | + ;; CHECK: (type $18 (func (param externref externref externref externref))) |
52 | 53 |
|
53 |
| - ;; CHECK: (type $19 (func (param i32) (result (ref extern)))) |
| 54 | + ;; CHECK: (type $19 (func (param (ref null $0) i32 i32) (result (ref extern)))) |
54 | 55 |
|
55 |
| - ;; CHECK: (type $20 (func (param externref (ref null $0) i32) (result i32))) |
| 56 | + ;; CHECK: (type $20 (func (param i32) (result (ref extern)))) |
56 | 57 |
|
57 |
| - ;; CHECK: (type $21 (func (param externref) (result i32))) |
| 58 | + ;; CHECK: (type $21 (func (param externref (ref null $0) i32) (result i32))) |
58 | 59 |
|
59 |
| - ;; CHECK: (type $22 (func (param externref i32) (result i32))) |
| 60 | + ;; CHECK: (type $22 (func (param externref) (result i32))) |
60 | 61 |
|
61 |
| - ;; CHECK: (type $23 (func (param externref i32 i32) (result (ref extern)))) |
| 62 | + ;; CHECK: (type $23 (func (param externref i32) (result i32))) |
| 63 | + |
| 64 | + ;; CHECK: (type $24 (func (param externref i32 i32) (result (ref extern)))) |
62 | 65 |
|
63 | 66 | ;; CHECK: (import "string.const" "0" (global $string.const_exported (ref extern)))
|
64 | 67 |
|
| 68 | + ;; CHECK: (import "string.const" "1" (global $string.const_value (ref extern))) |
| 69 | + |
65 | 70 | ;; CHECK: (import "colliding" "name" (func $fromCodePoint (type $1)))
|
66 | 71 | (import "colliding" "name" (func $fromCodePoint))
|
67 | 72 |
|
68 |
| - ;; CHECK: (import "wasm:js-string" "fromCharCodeArray" (func $fromCharCodeArray (type $18) (param (ref null $0) i32 i32) (result (ref extern)))) |
| 73 | + ;; CHECK: (import "wasm:js-string" "fromCharCodeArray" (func $fromCharCodeArray (type $19) (param (ref null $0) i32 i32) (result (ref extern)))) |
69 | 74 |
|
70 |
| - ;; CHECK: (import "wasm:js-string" "fromCodePoint" (func $fromCodePoint_16 (type $19) (param i32) (result (ref extern)))) |
| 75 | + ;; CHECK: (import "wasm:js-string" "fromCodePoint" (func $fromCodePoint_17 (type $20) (param i32) (result (ref extern)))) |
71 | 76 |
|
72 |
| - ;; CHECK: (import "wasm:js-string" "intoCharCodeArray" (func $intoCharCodeArray (type $20) (param externref (ref null $0) i32) (result i32))) |
| 77 | + ;; CHECK: (import "wasm:js-string" "intoCharCodeArray" (func $intoCharCodeArray (type $21) (param externref (ref null $0) i32) (result i32))) |
73 | 78 |
|
74 | 79 | ;; CHECK: (import "wasm:js-string" "equals" (func $equals (type $2) (param externref externref) (result i32)))
|
75 | 80 |
|
76 | 81 | ;; CHECK: (import "wasm:js-string" "compare" (func $compare (type $2) (param externref externref) (result i32)))
|
77 | 82 |
|
78 |
| - ;; CHECK: (import "wasm:js-string" "length" (func $length (type $21) (param externref) (result i32))) |
| 83 | + ;; CHECK: (import "wasm:js-string" "length" (func $length (type $22) (param externref) (result i32))) |
79 | 84 |
|
80 |
| - ;; CHECK: (import "wasm:js-string" "codePointAt" (func $codePointAt (type $22) (param externref i32) (result i32))) |
| 85 | + ;; CHECK: (import "wasm:js-string" "codePointAt" (func $codePointAt (type $23) (param externref i32) (result i32))) |
81 | 86 |
|
82 |
| - ;; CHECK: (import "wasm:js-string" "substring" (func $substring (type $23) (param externref i32 i32) (result (ref extern)))) |
| 87 | + ;; CHECK: (import "wasm:js-string" "substring" (func $substring (type $24) (param externref i32 i32) (result (ref extern)))) |
83 | 88 |
|
84 | 89 | ;; CHECK: (export "export.1" (func $exported-string-returner))
|
85 | 90 |
|
86 | 91 | ;; CHECK: (export "export.2" (func $exported-string-receiver))
|
87 | 92 |
|
88 |
| - ;; CHECK: (func $string.as (type $17) (param $a externref) (param $b externref) (param $c externref) (param $d externref) |
| 93 | + ;; CHECK: (func $string.as (type $18) (param $a externref) (param $b externref) (param $c externref) (param $d externref) |
89 | 94 | ;; CHECK-NEXT: (local.set $b
|
90 | 95 | ;; CHECK-NEXT: (local.get $a)
|
91 | 96 | ;; CHECK-NEXT: )
|
|
120 | 125 | )
|
121 | 126 | )
|
122 | 127 |
|
123 |
| - ;; CHECK: (func $string.new.gc (type $16) (param $array16 (ref $0)) |
| 128 | + ;; CHECK: (func $string.new.gc (type $17) (param $array16 (ref $0)) |
124 | 129 | ;; CHECK-NEXT: (drop
|
125 | 130 | ;; CHECK-NEXT: (call $fromCharCodeArray
|
126 | 131 | ;; CHECK-NEXT: (local.get $array16)
|
|
140 | 145 | )
|
141 | 146 |
|
142 | 147 | ;; CHECK: (func $string.from_code_point (type $4) (result externref)
|
143 |
| - ;; CHECK-NEXT: (call $fromCodePoint_16 |
| 148 | + ;; CHECK-NEXT: (call $fromCodePoint_17 |
144 | 149 | ;; CHECK-NEXT: (i32.const 1)
|
145 | 150 | ;; CHECK-NEXT: )
|
146 | 151 | ;; CHECK-NEXT: )
|
|
150 | 155 | )
|
151 | 156 | )
|
152 | 157 |
|
153 |
| - ;; CHECK: (func $string.encode (type $15) (param $ref externref) (param $array16 (ref $0)) (result i32) |
| 158 | + ;; CHECK: (func $string.encode (type $16) (param $ref externref) (param $array16 (ref $0)) (result i32) |
154 | 159 | ;; CHECK-NEXT: (call $intoCharCodeArray
|
155 | 160 | ;; CHECK-NEXT: (local.get $ref)
|
156 | 161 | ;; CHECK-NEXT: (local.get $array16)
|
|
165 | 170 | )
|
166 | 171 | )
|
167 | 172 |
|
168 |
| - ;; CHECK: (func $string.eq (type $14) (param $a externref) (param $b externref) (result i32) |
| 173 | + ;; CHECK: (func $string.eq (type $15) (param $a externref) (param $b externref) (result i32) |
169 | 174 | ;; CHECK-NEXT: (call $equals
|
170 | 175 | ;; CHECK-NEXT: (local.get $a)
|
171 | 176 | ;; CHECK-NEXT: (local.get $b)
|
|
178 | 183 | )
|
179 | 184 | )
|
180 | 185 |
|
181 |
| - ;; CHECK: (func $string.compare (type $14) (param $a externref) (param $b externref) (result i32) |
| 186 | + ;; CHECK: (func $string.compare (type $15) (param $a externref) (param $b externref) (result i32) |
182 | 187 | ;; CHECK-NEXT: (call $compare
|
183 | 188 | ;; CHECK-NEXT: (local.get $a)
|
184 | 189 | ;; CHECK-NEXT: (local.get $b)
|
|
191 | 196 | )
|
192 | 197 | )
|
193 | 198 |
|
194 |
| - ;; CHECK: (func $string.length (type $13) (param $ref externref) (result i32) |
| 199 | + ;; CHECK: (func $string.length (type $14) (param $ref externref) (result i32) |
195 | 200 | ;; CHECK-NEXT: (call $length
|
196 | 201 | ;; CHECK-NEXT: (local.get $ref)
|
197 | 202 | ;; CHECK-NEXT: )
|
|
202 | 207 | )
|
203 | 208 | )
|
204 | 209 |
|
205 |
| - ;; CHECK: (func $string.get_codeunit (type $13) (param $ref externref) (result i32) |
| 210 | + ;; CHECK: (func $string.get_codeunit (type $14) (param $ref externref) (result i32) |
206 | 211 | ;; CHECK-NEXT: (call $codePointAt
|
207 | 212 | ;; CHECK-NEXT: (local.get $ref)
|
208 | 213 | ;; CHECK-NEXT: (i32.const 2)
|
|
215 | 220 | )
|
216 | 221 | )
|
217 | 222 |
|
218 |
| - ;; CHECK: (func $string.slice (type $12) (param $ref externref) (result externref) |
| 223 | + ;; CHECK: (func $string.slice (type $13) (param $ref externref) (result externref) |
219 | 224 | ;; CHECK-NEXT: (call $substring
|
220 | 225 | ;; CHECK-NEXT: (local.get $ref)
|
221 | 226 | ;; CHECK-NEXT: (i32.const 2)
|
|
230 | 235 | )
|
231 | 236 | )
|
232 | 237 |
|
233 |
| - ;; CHECK: (func $if.string (type $11) (param $ref externref) (result externref) |
| 238 | + ;; CHECK: (func $if.string (type $12) (param $ref externref) (result externref) |
234 | 239 | ;; CHECK-NEXT: (if (result externref)
|
235 | 240 | ;; CHECK-NEXT: (i32.const 0)
|
236 | 241 | ;; CHECK-NEXT: (then
|
|
253 | 258 | )
|
254 | 259 | )
|
255 | 260 |
|
256 |
| - ;; CHECK: (func $if.string.flip (type $11) (param $ref externref) (result externref) |
| 261 | + ;; CHECK: (func $if.string.flip (type $12) (param $ref externref) (result externref) |
257 | 262 | ;; CHECK-NEXT: (if (result externref)
|
258 | 263 | ;; CHECK-NEXT: (i32.const 0)
|
259 | 264 | ;; CHECK-NEXT: (then
|
|
366 | 371 | )
|
367 | 372 | )
|
368 | 373 | )
|
| 374 | + |
| 375 | + ;; CHECK: (func $struct-of-string (type $1) |
| 376 | + ;; CHECK-NEXT: (drop |
| 377 | + ;; CHECK-NEXT: (struct.new $struct-of-string |
| 378 | + ;; CHECK-NEXT: (ref.null noextern) |
| 379 | + ;; CHECK-NEXT: (i32.const 10) |
| 380 | + ;; CHECK-NEXT: (ref.null none) |
| 381 | + ;; CHECK-NEXT: ) |
| 382 | + ;; CHECK-NEXT: ) |
| 383 | + ;; CHECK-NEXT: (drop |
| 384 | + ;; CHECK-NEXT: (struct.new $struct-of-string |
| 385 | + ;; CHECK-NEXT: (global.get $string.const_value) |
| 386 | + ;; CHECK-NEXT: (i32.const 10) |
| 387 | + ;; CHECK-NEXT: (ref.null none) |
| 388 | + ;; CHECK-NEXT: ) |
| 389 | + ;; CHECK-NEXT: ) |
| 390 | + ;; CHECK-NEXT: (drop |
| 391 | + ;; CHECK-NEXT: (struct.new_default $struct-of-string) |
| 392 | + ;; CHECK-NEXT: ) |
| 393 | + ;; CHECK-NEXT: ) |
| 394 | + (func $struct-of-string |
| 395 | + ;; Test lowering of struct fields from stringref to externref. |
| 396 | + (drop |
| 397 | + (struct.new $struct-of-string |
| 398 | + (ref.null none) ;; This null must be fixed to be ext. |
| 399 | + (i32.const 10) |
| 400 | + (ref.null none) ;; Nothing to do here (field remains anyref). |
| 401 | + ) |
| 402 | + ) |
| 403 | + (drop |
| 404 | + (struct.new $struct-of-string |
| 405 | + (string.const "value") ;; Nothing to do besides change to a global. |
| 406 | + (i32.const 10) |
| 407 | + (ref.null none) |
| 408 | + ) |
| 409 | + ) |
| 410 | + (drop |
| 411 | + (struct.new_default $struct-of-string) ;; Nothing to do here. |
| 412 | + ) |
| 413 | + ) |
369 | 414 | )
|
0 commit comments