blob: cac67ec83dc6b70dc0d2550c79d1b76284a3a3c0 [file] [edit]
(module
(type $struct (struct))
(type $recurse (func (param $x (ref $recurse))))
(import "module" "base" (func $foo (param i32) (param f64) (result anyref)))
(import "module2" "other" (func $bar (result i32 f32)))
(memory $mem 10 20)
(table 10 20 funcref)
(tag $e (param i32))
(global $g (mut i32) (i32.const 42))
(export "one" (func $one))
(export "m" (memory $mem))
(export "tab" (table 0))
(export "tag" (tag $e))
(export "glob" (global $g))
(func $one (param $x (ref $struct)) (result i32 i32 i32)
(unreachable)
)
(func $recurse (export "recurse") (param $x (ref $recurse))
;; We should not error on printing a recursive type.
)
)
;; RUN: wasm-opt %s -all --print-boundary -S -o - | filecheck %s
;; CHECK: {
;; CHECK-NEXT: "imports": [
;; CHECK-NEXT: {
;; CHECK-NEXT: "module": "module",
;; CHECK-NEXT: "base": "base",
;; CHECK-NEXT: "kind": "func",
;; CHECK-NEXT: "type": {
;; CHECK-NEXT: "params": [
;; CHECK-NEXT: "i32",
;; CHECK-NEXT: "f64"
;; CHECK-NEXT: ],
;; CHECK-NEXT: "results": [
;; CHECK-NEXT: "anyref"
;; CHECK-NEXT: ]
;; CHECK-NEXT: }
;; CHECK-NEXT: },
;; CHECK-NEXT: {
;; CHECK-NEXT: "module": "module2",
;; CHECK-NEXT: "base": "other",
;; CHECK-NEXT: "kind": "func",
;; CHECK-NEXT: "type": {
;; CHECK-NEXT: "params": [
;; CHECK-NEXT: ],
;; CHECK-NEXT: "results": [
;; CHECK-NEXT: "i32",
;; CHECK-NEXT: "f32"
;; CHECK-NEXT: ]
;; CHECK-NEXT: }
;; CHECK-NEXT: }
;; CHECK-NEXT: ],
;; CHECK-NEXT: "exports": [
;; CHECK-NEXT: {
;; CHECK-NEXT: "name": "recurse",
;; CHECK-NEXT: "kind": "func",
;; CHECK-NEXT: "type": {
;; CHECK-NEXT: "params": [
;; CHECK-NEXT: "(ref $func.0)"
;; CHECK-NEXT: ],
;; CHECK-NEXT: "results": [
;; CHECK-NEXT: ]
;; CHECK-NEXT: }
;; CHECK-NEXT: },
;; CHECK-NEXT: {
;; CHECK-NEXT: "name": "one",
;; CHECK-NEXT: "kind": "func",
;; CHECK-NEXT: "type": {
;; CHECK-NEXT: "params": [
;; CHECK-NEXT: "(ref $struct.0)"
;; CHECK-NEXT: ],
;; CHECK-NEXT: "results": [
;; CHECK-NEXT: "i32",
;; CHECK-NEXT: "i32",
;; CHECK-NEXT: "i32"
;; CHECK-NEXT: ]
;; CHECK-NEXT: }
;; CHECK-NEXT: },
;; CHECK-NEXT: {
;; CHECK-NEXT: "name": "m",
;; CHECK-NEXT: "kind": "memory",
;; CHECK-NEXT: "type": "i32"
;; CHECK-NEXT: },
;; CHECK-NEXT: {
;; CHECK-NEXT: "name": "tab",
;; CHECK-NEXT: "kind": "table",
;; CHECK-NEXT: "type": "funcref"
;; CHECK-NEXT: },
;; CHECK-NEXT: {
;; CHECK-NEXT: "name": "tag",
;; CHECK-NEXT: "kind": "tag",
;; CHECK-NEXT: "type": {
;; CHECK-NEXT: "params": [
;; CHECK-NEXT: "i32"
;; CHECK-NEXT: ],
;; CHECK-NEXT: "results": [
;; CHECK-NEXT: ]
;; CHECK-NEXT: }
;; CHECK-NEXT: },
;; CHECK-NEXT: {
;; CHECK-NEXT: "name": "glob",
;; CHECK-NEXT: "kind": "global",
;; CHECK-NEXT: "type": "i32"
;; CHECK-NEXT: }
;; CHECK-NEXT: ]
;; CHECK-NEXT: }