(module (type $ft (func (param i32) (result i32))) (type $ct (cont $ft)) (func $id (param $x (ref $ct)) (result (ref $ct)) (local.get $x) ) (func $cont-nocont (param $x (ref null $ct)) (local $l1 (ref null cont)) (local $l2 (ref null $ct)) (local.set $l1 (local.get $x)) ;; $ct <: cont (local.set $l2 (ref.null nocont)) ;; nocont <: $ct (local.set $l1 (ref.null nocont)) ;; nocont <: cont ) ) (assert_invalid (module (type $ft (func (param i32) (result i32))) (type $ct1 (cont $ft)) (type $ct2 (cont $ct1)) ) "invalid" ) (assert_invalid (module (type $ft (func (param i32) (result i32))) (type $ct (cont $ft)) (func $id (param $x $ct) (result i32) (i32.const 123) ) ) "invalid" ) (assert_invalid (module (type $ft (func (param i32) (result i32))) (type $ct (cont $ft)) (func $id (type $ct) (i32.const 123) ) ) "invalid" )