;; NOTE: Assertions have been generated by update_lit_checks.py --all-items and should not be edited.
;; Test that we write explicit label names to the name section with -g, and
;; that we write none of them without it. Which names reach the name section is
;; checked directly in label-names-section.wast.

;; RUN: wasm-as %s -all -g -o %t.wasm
;; RUN: wasm-dis %t.wasm -all -o - | filecheck %s --check-prefix=CHECK-BIN
;; RUN: wasm-as %s -all -o %t.nodebug.wasm
;; RUN: wasm-dis %t.nodebug.wasm -all -o - | filecheck %s --check-prefix=CHECK-BIN-NODEBUG

(module

 ;; CHECK-BIN:      (type $0 (func (param i32) (result i32)))

 ;; CHECK-BIN:      (func $f (type $0) (param $p i32) (result i32)
 ;; CHECK-BIN-NEXT:  (drop
 ;; CHECK-BIN-NEXT:   (i32.const 0)
 ;; CHECK-BIN-NEXT:  )
 ;; CHECK-BIN-NEXT:  (block $named-block (result i32)
 ;; CHECK-BIN-NEXT:   (loop $named-loop
 ;; CHECK-BIN-NEXT:    (br_if $named-loop
 ;; CHECK-BIN-NEXT:     (local.get $p)
 ;; CHECK-BIN-NEXT:    )
 ;; CHECK-BIN-NEXT:   )
 ;; CHECK-BIN-NEXT:   (block $block
 ;; CHECK-BIN-NEXT:    (br_if $block
 ;; CHECK-BIN-NEXT:     (local.get $p)
 ;; CHECK-BIN-NEXT:    )
 ;; CHECK-BIN-NEXT:   )
 ;; CHECK-BIN-NEXT:   (block $unused-block
 ;; CHECK-BIN-NEXT:   )
 ;; CHECK-BIN-NEXT:   (block $used-if
 ;; CHECK-BIN-NEXT:    (if
 ;; CHECK-BIN-NEXT:     (local.get $p)
 ;; CHECK-BIN-NEXT:     (then
 ;; CHECK-BIN-NEXT:      (br $used-if)
 ;; CHECK-BIN-NEXT:     )
 ;; CHECK-BIN-NEXT:    )
 ;; CHECK-BIN-NEXT:   )
 ;; CHECK-BIN-NEXT:   (i32.const 42)
 ;; CHECK-BIN-NEXT:  )
 ;; CHECK-BIN-NEXT: )
 (func $f (param $p i32) (result i32)
  (drop (i32.const 0))
  (block $named-block (result i32)
   (loop $named-loop
    (br_if $named-loop (local.get $p))
   )
   (block                            ;; unnamed: still takes a label index
    (br_if 0 (local.get $p))
   )
   (block $unused-block)
   (if $used-if (local.get $p) (then (br $used-if)))
   (i32.const 42)
  )
 )

 ;; Branches to a try target a block wrapping it, and delegates target the try
 ;; itself. Either way the name stays on the try, and the wrapping block, when
 ;; one is needed, gets a generated name.
 ;; CHECK-BIN:      (func $try (type $0) (param $p i32) (result i32)
 ;; CHECK-BIN-NEXT:  (drop
 ;; CHECK-BIN-NEXT:   (block $block (result i32)
 ;; CHECK-BIN-NEXT:    (try $branch-only (result i32)
 ;; CHECK-BIN-NEXT:     (do
 ;; CHECK-BIN-NEXT:      (drop
 ;; CHECK-BIN-NEXT:       (br_if $block
 ;; CHECK-BIN-NEXT:        (i32.const 0)
 ;; CHECK-BIN-NEXT:        (local.get $p)
 ;; CHECK-BIN-NEXT:       )
 ;; CHECK-BIN-NEXT:      )
 ;; CHECK-BIN-NEXT:      (i32.const 1)
 ;; CHECK-BIN-NEXT:     )
 ;; CHECK-BIN-NEXT:     (catch_all
 ;; CHECK-BIN-NEXT:      (i32.const 2)
 ;; CHECK-BIN-NEXT:     )
 ;; CHECK-BIN-NEXT:    )
 ;; CHECK-BIN-NEXT:   )
 ;; CHECK-BIN-NEXT:  )
 ;; CHECK-BIN-NEXT:  (block $block1 (result i32)
 ;; CHECK-BIN-NEXT:   (try $both (result i32)
 ;; CHECK-BIN-NEXT:    (do
 ;; CHECK-BIN-NEXT:     (drop
 ;; CHECK-BIN-NEXT:      (br_if $block1
 ;; CHECK-BIN-NEXT:       (i32.const 0)
 ;; CHECK-BIN-NEXT:       (local.get $p)
 ;; CHECK-BIN-NEXT:      )
 ;; CHECK-BIN-NEXT:     )
 ;; CHECK-BIN-NEXT:     (try
 ;; CHECK-BIN-NEXT:      (do
 ;; CHECK-BIN-NEXT:       (nop)
 ;; CHECK-BIN-NEXT:      )
 ;; CHECK-BIN-NEXT:      (delegate $both)
 ;; CHECK-BIN-NEXT:     )
 ;; CHECK-BIN-NEXT:     (i32.const 1)
 ;; CHECK-BIN-NEXT:    )
 ;; CHECK-BIN-NEXT:    (catch_all
 ;; CHECK-BIN-NEXT:     (i32.const 2)
 ;; CHECK-BIN-NEXT:    )
 ;; CHECK-BIN-NEXT:   )
 ;; CHECK-BIN-NEXT:  )
 ;; CHECK-BIN-NEXT: )
 (func $try (param $p i32) (result i32)
  (drop
   (try $branch-only (result i32)
    (do (drop (br_if $branch-only (i32.const 0) (local.get $p))) (i32.const 1))
    (catch_all (i32.const 2))
   )
  )
  (try $both (result i32)
   (do
    (drop (br_if $both (i32.const 0) (local.get $p)))
    (try (do (nop)) (delegate $both))
    (i32.const 1)
   )
   (catch_all (i32.const 2))
  )
 )

)

;; CHECK-BIN-NODEBUG:      (type $0 (func (param i32) (result i32)))

;; CHECK-BIN-NODEBUG:      (func $0 (type $0) (param $0 i32) (result i32)
;; CHECK-BIN-NODEBUG-NEXT:  (drop
;; CHECK-BIN-NODEBUG-NEXT:   (i32.const 0)
;; CHECK-BIN-NODEBUG-NEXT:  )
;; CHECK-BIN-NODEBUG-NEXT:  (block (result i32)
;; CHECK-BIN-NODEBUG-NEXT:   (loop $label
;; CHECK-BIN-NODEBUG-NEXT:    (br_if $label
;; CHECK-BIN-NODEBUG-NEXT:     (local.get $0)
;; CHECK-BIN-NODEBUG-NEXT:    )
;; CHECK-BIN-NODEBUG-NEXT:   )
;; CHECK-BIN-NODEBUG-NEXT:   (block $block
;; CHECK-BIN-NODEBUG-NEXT:    (br_if $block
;; CHECK-BIN-NODEBUG-NEXT:     (local.get $0)
;; CHECK-BIN-NODEBUG-NEXT:    )
;; CHECK-BIN-NODEBUG-NEXT:   )
;; CHECK-BIN-NODEBUG-NEXT:   (block
;; CHECK-BIN-NODEBUG-NEXT:   )
;; CHECK-BIN-NODEBUG-NEXT:   (block $block1
;; CHECK-BIN-NODEBUG-NEXT:    (if
;; CHECK-BIN-NODEBUG-NEXT:     (local.get $0)
;; CHECK-BIN-NODEBUG-NEXT:     (then
;; CHECK-BIN-NODEBUG-NEXT:      (br $block1)
;; CHECK-BIN-NODEBUG-NEXT:     )
;; CHECK-BIN-NODEBUG-NEXT:    )
;; CHECK-BIN-NODEBUG-NEXT:   )
;; CHECK-BIN-NODEBUG-NEXT:   (i32.const 42)
;; CHECK-BIN-NODEBUG-NEXT:  )
;; CHECK-BIN-NODEBUG-NEXT: )

;; CHECK-BIN-NODEBUG:      (func $1 (type $0) (param $0 i32) (result i32)
;; CHECK-BIN-NODEBUG-NEXT:  (drop
;; CHECK-BIN-NODEBUG-NEXT:   (block $block (result i32)
;; CHECK-BIN-NODEBUG-NEXT:    (try (result i32)
;; CHECK-BIN-NODEBUG-NEXT:     (do
;; CHECK-BIN-NODEBUG-NEXT:      (drop
;; CHECK-BIN-NODEBUG-NEXT:       (br_if $block
;; CHECK-BIN-NODEBUG-NEXT:        (i32.const 0)
;; CHECK-BIN-NODEBUG-NEXT:        (local.get $0)
;; CHECK-BIN-NODEBUG-NEXT:       )
;; CHECK-BIN-NODEBUG-NEXT:      )
;; CHECK-BIN-NODEBUG-NEXT:      (i32.const 1)
;; CHECK-BIN-NODEBUG-NEXT:     )
;; CHECK-BIN-NODEBUG-NEXT:     (catch_all
;; CHECK-BIN-NODEBUG-NEXT:      (i32.const 2)
;; CHECK-BIN-NODEBUG-NEXT:     )
;; CHECK-BIN-NODEBUG-NEXT:    )
;; CHECK-BIN-NODEBUG-NEXT:   )
;; CHECK-BIN-NODEBUG-NEXT:  )
;; CHECK-BIN-NODEBUG-NEXT:  (block $block1 (result i32)
;; CHECK-BIN-NODEBUG-NEXT:   (try $label (result i32)
;; CHECK-BIN-NODEBUG-NEXT:    (do
;; CHECK-BIN-NODEBUG-NEXT:     (drop
;; CHECK-BIN-NODEBUG-NEXT:      (br_if $block1
;; CHECK-BIN-NODEBUG-NEXT:       (i32.const 0)
;; CHECK-BIN-NODEBUG-NEXT:       (local.get $0)
;; CHECK-BIN-NODEBUG-NEXT:      )
;; CHECK-BIN-NODEBUG-NEXT:     )
;; CHECK-BIN-NODEBUG-NEXT:     (try
;; CHECK-BIN-NODEBUG-NEXT:      (do
;; CHECK-BIN-NODEBUG-NEXT:       (nop)
;; CHECK-BIN-NODEBUG-NEXT:      )
;; CHECK-BIN-NODEBUG-NEXT:      (delegate $label)
;; CHECK-BIN-NODEBUG-NEXT:     )
;; CHECK-BIN-NODEBUG-NEXT:     (i32.const 1)
;; CHECK-BIN-NODEBUG-NEXT:    )
;; CHECK-BIN-NODEBUG-NEXT:    (catch_all
;; CHECK-BIN-NODEBUG-NEXT:     (i32.const 2)
;; CHECK-BIN-NODEBUG-NEXT:    )
;; CHECK-BIN-NODEBUG-NEXT:   )
;; CHECK-BIN-NODEBUG-NEXT:  )
;; CHECK-BIN-NODEBUG-NEXT: )
