diff options
Diffstat (limited to 'test/lit/validation/bad-non-nullable-locals.wast')
-rw-r--r-- | test/lit/validation/bad-non-nullable-locals.wast | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/test/lit/validation/bad-non-nullable-locals.wast b/test/lit/validation/bad-non-nullable-locals.wast new file mode 100644 index 000000000..f22771591 --- /dev/null +++ b/test/lit/validation/bad-non-nullable-locals.wast @@ -0,0 +1,61 @@ +;; RUN: foreach %s %t not wasm-opt -all 2>&1 | filecheck %s + +;; CHECK: non-nullable local's sets must dominate gets +(module + (func $inner-to-func + ;; a set in an inner scope does *not* help a get validate. + (local $x (ref func)) + (block $b + (local.set $x + (ref.func $helper) + ) + ) + (drop + (local.get $x) + ) + ) + + (func $helper) +) + +;; CHECK: non-nullable local's sets must dominate gets +(module + (func $get-without-set + (local $x (ref func)) + (drop + (local.get $x) + ) + ) + + (func $helper) +) + +;; CHECK: non-nullable local's sets must dominate gets +(module + (func $get-before-set + (local $x (ref func)) + (local.set $x + (local.get $x) + ) + ) + + (func $helper) +) + +;; CHECK: non-nullable local's sets must dominate gets +(module + (func $if-arms + (local $x (ref func)) + (if + (i32.const 1) + ;; Superficially the order is right, but not really. + (local.set $x + (ref.func $helper) + ) + (local.get $x) + ) + ) + + (func $helper) +) + |