;; 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: )