;; Verify a binary with declarative element segment whose init is vector of expr
;; can be parsed correctly.
;; The declarative-element-use-expr file contains this:
;;
;; (module
;;   (type $0 (func))
;;   (func $0 (type 0) (block (ref.func 0) (drop)))
;;   (elem $0 declare funcref (item ref.func 0))
;; )
;;
;; The wasm-opt output contains `(elem declare func 0)` instead of
;; `(elem declare funcref (item ref.func 0))` because the parser doesn't
;; preserve declarative segments. This is fine, as we test that the
;; binary parser can parse it correctly.

;; RUN: wasm-opt -all %s.wasm -S -o - | filecheck %s

;; CHECK:      (module
;; CHECK-NEXT:  (type $0 (func))
;; CHECK-NEXT:  (elem declare func $0)
;; CHECK-NEXT:  (func $0 (type $0)
;; CHECK-NEXT:   (drop
;; CHECK-NEXT:    (ref.func $0)
;; CHECK-NEXT:   )
;; CHECK-NEXT:  )
;; CHECK-NEXT: )
