Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
bytecodealliance
GitHub Repository: bytecodealliance/wasmtime
Path: blob/main/tests/misc_testsuite/component-model/enum_discriminant.wast
3054 views
(assert_trap
  (component
    (type $enum (enum "case0" "case1" "case2"))

    ;; Returns invalid discriminant 3 (valid range: 0-2)
    (component $producer
      (import "enum" (type $enum' (eq $enum)))
      (core module $core
        (func (export "get") (result i32) (i32.const 3)))
      (core instance $inst (instantiate $core))
      (func (export "get") (result $enum') (canon lift (core func $inst "get"))))

    ;; Calls producer through adapter - validation should trap here
    (component $consumer
      (import "enum" (type $enum' (eq $enum)))
      (import "get" (func $get (result $enum')))
      (core func $lowered (canon lower (func $get)))
      (core module $core
        (import "" "get" (func (result i32)))
        (func $start (call 0) drop)
        (start $start))
      (core instance (instantiate $core (with "" (instance (export "get" (func $lowered)))))))

    (instance $prod (instantiate $producer (with "enum" (type $enum))))
    (instance (instantiate $consumer (with "enum" (type $enum)) (with "get" (func $prod "get")))))
  "invalid variant discriminant")