wasm-tools 1.248.0

CLI tools for interoperating with WebAssembly files
Documentation
;; RUN: wast --assert default --snapshot tests/snapshots % -f cm-values


(assert_invalid
  (component
    (import "a" (func $f (param "p1" string)))
    (start $f)
  )
  "start function requires 1 arguments")

(assert_invalid
  (component
    (import "a" (func $f (param "p" string)))
    (import "b" (value $v string))
    (start $f (value $v) (value $v))
  )
  "start function requires 1 arguments")

(assert_invalid
  (component
    (import "a" (func $f (param "p1" string) (param "p2" string)))
    (import "b" (value $v string))
    (start $f (value $v) (value $v))
  )
  "cannot be used more than once")

(assert_invalid
  (component
    (import "a" (func $f (param "x" string) (param "y" string)))
    (import "b" (value $v string))
    (import "c" (value $v2 u32))
    (start $f (value $v) (value $v2))
  )
  "type mismatch for component start function argument 1")

(component
  (import "a" (func $f (param "z" string) (param "a" string)))
  (import "b" (value $v string))
  (import "c" (value $v2 string))
  (start $f (value $v) (value $v2))
)

(component
  (import "a" (func $f (result string)))
  (start $f (result (value $a)))
  (export "b" (value $a))
)

(assert_malformed
  (component quote
    "(import \"a\" (func $f)) "
    "(start $f) "
    "(start $f) "
  )
  "component cannot have more than one start function")

(assert_malformed
  (component binary
    "\00asm" "\0d\00\01\00"   ;; component header

    "\07\05"          ;; type section, 5 bytes large
    "\01"             ;; 1 count
    "\40"             ;; function
    "\00"             ;; parameters, 0 count
    "\01\00"          ;; results, named, 0 count

    "\0a\06"          ;; import section, 6 bytes large
    "\01"             ;; 1 count
    "\00\01a"         ;; name = "a"
    "\01\00"          ;; type = func ($type 0)

    "\09\06"          ;; start section, 6 bytes large
    "\00"             ;; function 0
    "\00"             ;; no arguments
    "\ff\ff\ff\00"    ;; tons of results
  )
  "start function results size is out of bounds")

(assert_malformed
  (component binary
    "\00asm" "\0d\00\01\00"   ;; component header

    "\07\05"          ;; type section, 5 bytes large
    "\01"             ;; 1 count
    "\40"             ;; function
    "\00"             ;; parameters, 0 count
    "\01\00"          ;; results, named, 0 count

    "\0a\06"          ;; import section, 6 bytes large
    "\01"             ;; 1 count
    "\00\01a"         ;; name = "a"
    "\01\00"          ;; type = func ($type 0)

    "\09\04"          ;; start section, 4 bytes large
    "\00"             ;; function 0
    "\00"             ;; no arguments
    "\00"             ;; no results
    "\ff"             ;; trailing garbage byte
  )
  "unexpected content in the component start section")