;;; TOOL: wat2wasm
;;; ARGS: --enable-multi-value
;;; ERROR: 1
(module
  ;; too many results
  (func
    i32.const 0
    if (result i32 i64)
      i32.const 0
      i32.const 0
      i64.const 0
    else
      i32.const 0
      i32.const 0
      i64.const 0
    end
    return)

  ;; too few results
  (func
    i32.const 0
    if (result i32 f64)
      f64.const 0
    else
      f64.const 0
    end
    return)

  ;; result type mismatch
  (func
    i32.const 0
    if (result i32 f64)
      f32.const 0
      f64.const 0
    else
      f32.const 0
      f64.const 0
    end
    return)

  ;; too few params
  (func
    i32.const 0
    if (param i32)
      drop
    else
      drop
    end)

  ;; param type mismatch
  (func
    f32.const 0
    i32.const 0
    if (param i32)
      drop
    else
      drop
    end)
)
(;; STDERR ;;;
out/test/typecheck/bad-if-multi-mismatch.txt:11:7: error: type mismatch in if true branch, expected [] but got [i32]
      i64.const 0
      ^^^^^^^^^
out/test/typecheck/bad-if-multi-mismatch.txt:16:5: error: type mismatch in if false branch, expected [] but got [i32]
    end
    ^^^
out/test/typecheck/bad-if-multi-mismatch.txt:23:7: error: type mismatch in if true branch, expected [i32, f64] but got [f64]
      f64.const 0
      ^^^^^^^^^
out/test/typecheck/bad-if-multi-mismatch.txt:26:5: error: type mismatch in if false branch, expected [i32, f64] but got [f64]
    end
    ^^^
out/test/typecheck/bad-if-multi-mismatch.txt:34:7: error: type mismatch in if true branch, expected [i32, f64] but got [f32, f64]
      f64.const 0
      ^^^^^^^^^
out/test/typecheck/bad-if-multi-mismatch.txt:38:5: error: type mismatch in if false branch, expected [i32, f64] but got [f32, f64]
    end
    ^^^
out/test/typecheck/bad-if-multi-mismatch.txt:44:5: error: type mismatch in if, expected [i32] but got []
    if (param i32)
    ^^
out/test/typecheck/bad-if-multi-mismatch.txt:54:5: error: type mismatch in if, expected [i32] but got [f32]
    if (param i32)
    ^^
;;; STDERR ;;)
