witx 0.9.1

Parse and validate witx file format
Documentation
;; Ensure that anonymous structured types are not allowed in type positions at
;; this time, everything has to be named to assist in binding in languages.

(assert_invalid
  (witx
    (typename $a (@witx pointer (record (field $b u8))))
  )
  "Anonymous structured types")

(assert_invalid
  (witx
    (typename $a (@witx pointer (union)))
  )
  "Anonymous structured types")

(assert_invalid
  (witx
    (typename $a (@witx pointer (enum $b)))
  )
  "Anonymous structured types")

(assert_invalid
  (witx
    (typename $a (@witx pointer (flags $b)))
  )
  "Anonymous structured types")

(assert_invalid
  (witx
    (typename $a (@witx pointer (handle)))
  )
  "Anonymous structured types")

(assert_invalid
  (witx
    (typename $a (record (field $b (record (field $c u8)))))
  )
  "Anonymous structured types")

(assert_invalid
  (witx
    (typename $tag (enum $c))
    (typename $a (record (field $b (union))))
  )
  "Anonymous structured types")


;; pointers don't count for anonymous indirections
(witx
  (typename $a (@witx pointer u8)))

(witx
  (typename $a (@witx pointer (@witx const_pointer u8))))

(witx
  (typename $a (record (field $b (@witx pointer u8)))))