| ;; Test that casting to exact types without custom descriptors is a validation | |
| ;; error. | |
| ;; RUN: not wasm-opt %s -all --disable-custom-descriptors 2>&1 | filecheck %s | |
| ;; CHECK: [wasm-validator error in function ref.cast] unexpected false: ref.cast to exact type requires custom descriptors [--enable-custom-descriptors], | |
| ;; CHECK: [wasm-validator error in function ref.test] unexpected false: ref.test of exact type requires custom descriptors [--enable-custom-descriptors], | |
| ;; CHECK: [wasm-validator error in function br_on_cast] unexpected false: br_on_cast* to exact type requires custom descriptors [--enable-custom-descriptors], | |
| ;; CHECK: [wasm-validator error in function br_on_cast_fail] unexpected false: br_on_cast* to exact type requires custom descriptors [--enable-custom-descriptors], | |
| (module | |
| (type $foo (struct)) | |
| (func $ref.cast (param anyref) | |
| (drop | |
| (ref.cast (ref null (exact $foo)) | |
| (local.get 0) | |
| ) | |
| ) | |
| ) | |
| (func $ref.test (param anyref) | |
| (drop | |
| (ref.test (ref (exact $foo)) | |
| (local.get 0) | |
| ) | |
| ) | |
| ) | |
| (func $br_on_cast (param anyref) | |
| (drop | |
| (block (result anyref) | |
| (br_on_cast 0 anyref (ref null (exact $foo)) | |
| (local.get 0) | |
| ) | |
| ) | |
| ) | |
| ) | |
| (func $br_on_cast_fail (param anyref) | |
| (drop | |
| (block (result anyref) | |
| (br_on_cast_fail 0 anyref (ref (exact $foo)) | |
| (local.get 0) | |
| ) | |
| ) | |
| ) | |
| ) | |
| ) |