github.com/wasilibs/wazerox@v0.0.0-20240124024944-4923be63ab5f/internal/integration_test/spectest/v1/testdata/unreached-invalid.wast (about)

     1  ;; Failures in unreachable code.
     2  
     3  (assert_invalid
     4    (module (func $local-index (unreachable) (drop (local.get 0))))
     5    "unknown local"
     6  )
     7  (assert_invalid
     8    (module (func $global-index (unreachable) (drop (global.get 0))))
     9    "unknown global"
    10  )
    11  (assert_invalid
    12    (module (func $func-index (unreachable) (call 1)))
    13    "unknown function"
    14  )
    15  (assert_invalid
    16    (module (func $label-index (unreachable) (br 1)))
    17    "unknown label"
    18  )
    19  
    20  (assert_invalid
    21    (module (func $type-num-vs-num
    22      (unreachable) (drop (i64.eqz (i32.const 0))))
    23    )
    24    "type mismatch"
    25  )
    26  (assert_invalid
    27    (module (func $type-poly-num-vs-num (result i32)
    28      (unreachable) (i64.const 0) (i32.const 0) (select)
    29    ))
    30    "type mismatch"
    31  )
    32  (assert_invalid
    33    (module (func $type-poly-transitive-num-vs-num (result i32)
    34      (unreachable)
    35      (i64.const 0) (i32.const 0) (select)
    36      (i32.const 0) (i32.const 0) (select)
    37    ))
    38    "type mismatch"
    39  )
    40  
    41  (assert_invalid
    42    (module (func $type-unconsumed-const (unreachable) (i32.const 0)))
    43    "type mismatch"
    44  )
    45  (assert_invalid
    46    (module (func $type-unconsumed-result (unreachable) (i32.eqz)))
    47    "type mismatch"
    48  )
    49  (assert_invalid
    50    (module (func $type-unconsumed-result2
    51      (unreachable) (i32.const 0) (i32.add)
    52    ))
    53    "type mismatch"
    54  )
    55  (assert_invalid
    56    (module (func $type-unconsumed-poly0 (unreachable) (select)))
    57    "type mismatch"
    58  )
    59  (assert_invalid
    60    (module (func $type-unconsumed-poly1 (unreachable) (i32.const 0) (select)))
    61    "type mismatch"
    62  )
    63  (assert_invalid
    64    (module (func $type-unconsumed-poly2
    65      (unreachable) (i32.const 0) (i32.const 0) (select)
    66    ))
    67    "type mismatch"
    68  )
    69  
    70  (assert_invalid
    71    (module (func $type-unary-num-vs-void-after-break
    72      (block (br 0) (block (drop (i32.eqz (nop)))))
    73    ))
    74    "type mismatch"
    75  )
    76  (assert_invalid
    77    (module (func $type-unary-num-vs-num-after-break
    78      (block (br 0) (drop (i32.eqz (f32.const 1))))
    79    ))
    80    "type mismatch"
    81  )
    82  (assert_invalid
    83    (module (func $type-binary-num-vs-void-after-break
    84      (block (br 0) (block (drop (f32.eq (i32.const 1)))))
    85    ))
    86    "type mismatch"
    87  )
    88  (assert_invalid
    89    (module (func $type-binary-num-vs-num-after-break
    90      (block (br 0) (drop (f32.eq (i32.const 1) (f32.const 0))))
    91    ))
    92    "type mismatch"
    93  )
    94  (assert_invalid
    95    (module (func $type-block-value-num-vs-void-after-break
    96      (block (br 0) (i32.const 1))
    97    ))
    98    "type mismatch"
    99  )
   100  (assert_invalid
   101    (module (func $type-block-value-num-vs-num-after-break (result i32)
   102      (block (result i32) (i32.const 1) (br 0) (f32.const 0))
   103    ))
   104    "type mismatch"
   105  )
   106  (assert_invalid
   107    (module (func $type-loop-value-num-vs-void-after-break
   108      (block (loop (br 1) (i32.const 1)))
   109    ))
   110    "type mismatch"
   111  )
   112  (assert_invalid
   113    (module (func $type-loop-value-num-vs-num-after-break (result i32)
   114      (loop (result i32) (br 1 (i32.const 1)) (f32.const 0))
   115    ))
   116    "type mismatch"
   117  )
   118  (assert_invalid
   119    (module (func $type-func-value-num-vs-void-after-break
   120      (br 0) (i32.const 1)
   121    ))
   122    "type mismatch"
   123  )
   124  (assert_invalid
   125    (module (func $type-func-value-num-vs-num-after-break (result i32)
   126      (br 0 (i32.const 1)) (f32.const 0)
   127    ))
   128    "type mismatch"
   129  )
   130  
   131  (assert_invalid
   132    (module (func $type-unary-num-vs-void-after-return
   133      (return) (block (drop (i32.eqz (nop))))
   134    ))
   135    "type mismatch"
   136  )
   137  (assert_invalid
   138    (module (func $type-unary-num-vs-num-after-return
   139      (return) (drop (i32.eqz (f32.const 1)))
   140    ))
   141    "type mismatch"
   142  )
   143  (assert_invalid
   144    (module (func $type-binary-num-vs-void-after-return
   145      (return) (block (drop (f32.eq (i32.const 1))))
   146    ))
   147    "type mismatch"
   148  )
   149  (assert_invalid
   150    (module (func $type-binary-num-vs-num-after-return
   151      (return) (drop (f32.eq (i32.const 1) (f32.const 0)))
   152    ))
   153    "type mismatch"
   154  )
   155  (assert_invalid
   156    (module (func $type-block-value-num-vs-void-after-return
   157      (block (return) (i32.const 1))
   158    ))
   159    "type mismatch"
   160  )
   161  (assert_invalid
   162    (module (func $type-block-value-num-vs-num-after-return (result i32)
   163      (block (result i32) (i32.const 1) (return (i32.const 0)) (f32.const 0))
   164    ))
   165    "type mismatch"
   166  )
   167  (assert_invalid
   168    (module (func $type-loop-value-num-vs-void-after-return
   169      (block (loop (return) (i32.const 1)))
   170    ))
   171    "type mismatch"
   172  )
   173  (assert_invalid
   174    (module (func $type-loop-value-num-vs-num-after-return (result i32)
   175      (loop (result i32) (return (i32.const 1)) (f32.const 0))
   176    ))
   177    "type mismatch"
   178  )
   179  (assert_invalid
   180    (module (func $type-func-value-num-vs-void-after-return
   181      (return) (i32.const 1)
   182    ))
   183    "type mismatch"
   184  )
   185  (assert_invalid
   186    (module (func $type-func-value-num-vs-num-after-return (result i32)
   187      (return (i32.const 1)) (f32.const 0)
   188    ))
   189    "type mismatch"
   190  )
   191  
   192  (assert_invalid
   193    (module (func $type-unary-num-vs-void-after-unreachable
   194      (unreachable) (block (drop (i32.eqz (nop))))
   195    ))
   196    "type mismatch"
   197  )
   198  (assert_invalid
   199    (module (func $type-unary-num-vs-void-in-loop-after-unreachable
   200      (unreachable) (loop (drop (i32.eqz (nop))))
   201    ))
   202    "type mismatch"
   203  )
   204  (assert_invalid
   205    (module (func $type-unary-num-vs-void-in-i32-loop-after-unreachable
   206      (unreachable) (loop (result i32) (i32.eqz (nop)))
   207    ))
   208    "type mismatch"
   209  )
   210  (assert_invalid
   211    (module (func $type-unary-num-vs-num-after-unreachable
   212      (unreachable) (drop (i32.eqz (f32.const 1)))
   213    ))
   214    "type mismatch"
   215  )
   216  (assert_invalid
   217    (module (func $type-binary-num-vs-void-after-unreachable
   218      (unreachable) (block (drop (f32.eq (i32.const 1))))
   219    ))
   220    "type mismatch"
   221  )
   222  (assert_invalid
   223    (module (func $type-binary-num-vs-num-after-unreachable
   224      (unreachable) (drop (f32.eq (i32.const 1) (f32.const 0)))
   225    ))
   226    "type mismatch"
   227  )
   228  (assert_invalid
   229    (module (func $type-block-value-num-vs-void-after-unreachable
   230      (block (unreachable) (i32.const 1))
   231    ))
   232    "type mismatch"
   233  )
   234  (assert_invalid
   235    (module (func $type-block-value-num-vs-num-after-unreachable (result i32)
   236      (block (result i32) (i32.const 1) (unreachable) (f32.const 0))
   237    ))
   238    "type mismatch"
   239  )
   240  (assert_invalid
   241    (module (func $type-loop-value-num-vs-void-after-unreachable
   242      (block (loop (unreachable) (i32.const 1)))
   243    ))
   244    "type mismatch"
   245  )
   246  (assert_invalid
   247    (module (func $type-loop-value-num-vs-num-after-unreachable (result i32)
   248      (loop (result i32) (unreachable) (f32.const 0))
   249    ))
   250    "type mismatch"
   251  )
   252  (assert_invalid
   253    (module (func $type-func-value-num-vs-void-after-unreachable
   254      (unreachable) (i32.const 1)
   255    ))
   256    "type mismatch"
   257  )
   258  (assert_invalid
   259    (module (func $type-func-value-num-vs-num-after-unreachable (result i32)
   260      (unreachable) (f32.const 0)
   261    ))
   262    "type mismatch"
   263  )
   264  (assert_invalid
   265    (module (func $type-unary-num-vs-void-in-if-after-unreachable
   266      (unreachable) (if (i32.const 0) (then (drop (i32.eqz (nop)))))
   267    ))
   268    "type mismatch"
   269  )
   270  (assert_invalid
   271    (module (func $type-unary-num-vs-void-in-else-after-unreachable
   272      (unreachable) (if (i32.const 0) (then (nop)) (else (drop (i32.eqz (nop)))))
   273    ))
   274    "type mismatch"
   275  )
   276  (assert_invalid
   277    (module (func $type-unary-num-vs-void-in-else-after-unreachable-if
   278      (if (i32.const 0) (then (unreachable)) (else (drop (i32.eqz (nop)))))
   279    ))
   280    "type mismatch"
   281  )
   282  
   283  (assert_invalid
   284    (module (func $type-unary-num-vs-void-after-nested-unreachable
   285      (block (unreachable)) (block (drop (i32.eqz (nop))))
   286    ))
   287    "type mismatch"
   288  )
   289  (assert_invalid
   290    (module (func $type-unary-num-vs-num-after-nested-unreachable
   291      (block (unreachable)) (drop (i32.eqz (f32.const 1)))
   292    ))
   293    "type mismatch"
   294  )
   295  (assert_invalid
   296    (module (func $type-binary-num-vs-void-after-nested-unreachable
   297      (block (unreachable)) (block (drop (f32.eq (i32.const 1))))
   298    ))
   299    "type mismatch"
   300  )
   301  (assert_invalid
   302    (module (func $type-binary-num-vs-num-after-nested-unreachable
   303      (block (unreachable)) (drop (f32.eq (i32.const 1) (f32.const 0)))
   304    ))
   305    "type mismatch"
   306  )
   307  (assert_invalid
   308    (module (func $type-block-value-num-vs-void-after-nested-unreachable
   309      (block (block (unreachable)) (i32.const 1))
   310    ))
   311    "type mismatch"
   312  )
   313  (assert_invalid
   314    (module (func $type-block-value-num-vs-num-after-nested-unreachable
   315      (result i32)
   316      (block (result i32) (i32.const 1) (block (unreachable)) (f32.const 0))
   317    ))
   318    "type mismatch"
   319  )
   320  (assert_invalid
   321    (module (func $type-loop-value-num-vs-void-after-nested-unreachable
   322      (block (loop (block (unreachable)) (i32.const 1)))
   323    ))
   324    "type mismatch"
   325  )
   326  (assert_invalid
   327    (module (func $type-loop-value-num-vs-num-after-nested-unreachable
   328      (result i32)
   329      (loop (result i32) (block (unreachable)) (f32.const 0))
   330    ))
   331    "type mismatch"
   332  )
   333  (assert_invalid
   334    (module (func $type-func-value-num-vs-void-after-nested-unreachable
   335      (block (unreachable)) (i32.const 1)
   336    ))
   337    "type mismatch"
   338  )
   339  (assert_invalid
   340    (module (func $type-func-value-num-vs-num-after-nested-unreachable
   341      (result i32)
   342      (block (unreachable)) (f32.const 0)
   343    ))
   344    "type mismatch"
   345  )
   346  
   347  (assert_invalid
   348    (module (func $type-unary-num-vs-void-after-infinite-loop
   349      (loop (br 0)) (block (drop (i32.eqz (nop))))
   350    ))
   351    "type mismatch"
   352  )
   353  (assert_invalid
   354    (module (func $type-unary-num-vs-num-after-infinite-loop
   355      (loop (br 0)) (drop (i32.eqz (f32.const 1)))
   356    ))
   357    "type mismatch"
   358  )
   359  (assert_invalid
   360    (module (func $type-binary-num-vs-void-after-infinite-loop
   361      (loop (br 0)) (block (drop (f32.eq (i32.const 1))))
   362    ))
   363    "type mismatch"
   364  )
   365  (assert_invalid
   366    (module (func $type-binary-num-vs-num-after-infinite-loop
   367      (loop (br 0)) (drop (f32.eq (i32.const 1) (f32.const 0)))
   368    ))
   369    "type mismatch"
   370  )
   371  (assert_invalid
   372    (module (func $type-block-value-num-vs-void-after-infinite-loop
   373      (block (loop (br 0)) (i32.const 1))
   374    ))
   375    "type mismatch"
   376  )
   377  (assert_invalid
   378    (module (func $type-block-value-num-vs-num-after-infinite-loop (result i32)
   379      (block (result i32) (i32.const 1) (loop (br 0)) (f32.const 0))
   380    ))
   381    "type mismatch"
   382  )
   383  (assert_invalid
   384    (module (func $type-loop-value-num-vs-void-after-infinite-loop
   385      (block (loop (loop (br 0)) (i32.const 1)))
   386    ))
   387    "type mismatch"
   388  )
   389  (assert_invalid
   390    (module (func $type-loop-value-num-vs-num-after-infinite-loop (result i32)
   391      (loop (result i32) (loop (br 0)) (f32.const 0))
   392    ))
   393    "type mismatch"
   394  )
   395  (assert_invalid
   396    (module (func $type-func-value-num-vs-void-after-infinite-loop
   397      (loop (br 0)) (i32.const 1)
   398    ))
   399    "type mismatch"
   400  )
   401  (assert_invalid
   402    (module (func $type-func-value-num-vs-num-after-infinite-loop (result i32)
   403      (loop (br 0)) (f32.const 0)
   404    ))
   405    "type mismatch"
   406  )
   407  
   408  (assert_invalid
   409    (module (func $type-unary-num-vs-void-in-dead-body
   410      (if (i32.const 0) (then (drop (i32.eqz (nop)))))
   411    ))
   412    "type mismatch"
   413  )
   414  (assert_invalid
   415    (module (func $type-unary-num-vs-num-in-dead-body
   416      (if (i32.const 0) (then (drop (i32.eqz (f32.const 1)))))
   417    ))
   418    "type mismatch"
   419  )
   420  (assert_invalid
   421    (module (func $type-binary-num-vs-void-in-dead-body
   422      (if (i32.const 0) (then (drop (f32.eq (i32.const 1)))))
   423    ))
   424    "type mismatch"
   425  )
   426  (assert_invalid
   427    (module (func $type-binary-num-vs-num-in-dead-body
   428      (if (i32.const 0) (then (drop (f32.eq (i32.const 1) (f32.const 0)))))
   429    ))
   430    "type mismatch"
   431  )
   432  (assert_invalid
   433    (module (func $type-if-value-num-vs-void-in-dead-body
   434      (if (i32.const 0) (then (i32.const 1)))
   435    ))
   436    "type mismatch"
   437  )
   438  (assert_invalid
   439    (module (func $type-if-value-num-vs-num-in-dead-body (result i32)
   440      (if (result i32) (i32.const 0) (then (f32.const 0)))
   441    ))
   442    "type mismatch"
   443  )
   444  (assert_invalid
   445    (module (func $type-block-value-num-vs-void-in-dead-body
   446      (if (i32.const 0) (then (block (i32.const 1))))
   447    ))
   448    "type mismatch"
   449  )
   450  (assert_invalid
   451    (module (func $type-block-value-num-vs-num-in-dead-body (result i32)
   452      (if (result i32) (i32.const 0) (then (block (result i32) (f32.const 0))))
   453    ))
   454    "type mismatch"
   455  )
   456  (assert_invalid
   457    (module (func $type-block-value-num-vs-void-in-dead-body
   458      (if (i32.const 0) (then (loop (i32.const 1))))
   459    ))
   460    "type mismatch"
   461  )
   462  (assert_invalid
   463    (module (func $type-block-value-num-vs-num-in-dead-body (result i32)
   464      (if (result i32) (i32.const 0) (then (loop (result i32) (f32.const 0))))
   465    ))
   466    "type mismatch"
   467  )
   468  
   469  (assert_invalid
   470    (module (func $type-return-second-num-vs-num (result i32)
   471      (return (i32.const 1)) (return (f64.const 1))
   472    ))
   473    "type mismatch"
   474  )
   475  
   476  (assert_invalid
   477    (module (func $type-br-second-num-vs-num (result i32)
   478      (block (result i32) (br 0 (i32.const 1)) (br 0 (f64.const 1)))
   479    ))
   480    "type mismatch"
   481  )
   482  
   483  (assert_invalid
   484    (module (func $type-br_if-cond-num-vs-num-after-unreachable
   485      (block (br_if 0 (unreachable) (f32.const 0)))
   486    ))
   487    "type mismatch"
   488  )
   489  (assert_invalid
   490    (module (func $type-br_if-num-vs-void-after-unreachable (result i32)
   491      (block (result i32)
   492        (block (unreachable) (br_if 1 (i32.const 0) (i32.const 0)))
   493      )
   494    ))
   495    "type mismatch"
   496  )
   497  (assert_invalid
   498    (module (func $type-br_if-num-vs-num-after-unreachable (result i32)
   499      (block (result i32)
   500        (block (result f32) (unreachable) (br_if 1 (i32.const 0) (i32.const 0)))
   501        (drop) (i32.const 0)
   502      )
   503    ))
   504    "type mismatch"
   505  )
   506  (assert_invalid
   507    (module (func $type-br_if-num2-vs-num-after-unreachable (result i32)
   508      (block (result i32)
   509        (unreachable) (br_if 0 (i32.const 0) (i32.const 0)) (i32.const 0)
   510      )
   511    ))
   512    "type mismatch"
   513  )
   514  (assert_invalid
   515    (module (func $type-br_table-num-vs-num-after-unreachable
   516      (block (br_table 0 (unreachable) (f32.const 1)))
   517    ))
   518    "type mismatch"
   519  )
   520  (assert_invalid
   521    (module (func $type-br_table-label-num-vs-num-after-unreachable (result i32)
   522      (block (result i32) (unreachable) (br_table 0 (f32.const 0) (i32.const 1)))
   523    ))
   524    "type mismatch"
   525  )
   526  (assert_invalid
   527    (module (func $type-br_table-label-num-vs-label-void-after-unreachable
   528      (block
   529        (block (result f32)
   530          (unreachable)
   531          (br_table 0 1 0 (i32.const 1))
   532        )
   533        (drop)
   534      )
   535    ))
   536    "type mismatch"
   537  )
   538  (assert_invalid
   539    (module (func $type-br_table-label-num-vs-label-num-after-unreachable
   540      (block (result f64)
   541        (block (result f32)
   542          (unreachable)
   543          (br_table 0 1 1 (i32.const 1))
   544        )
   545        (drop)
   546        (f64.const 0)
   547      )
   548      (drop)
   549    ))
   550    "type mismatch"
   551  )
   552  
   553  (assert_invalid
   554    (module (func $type-block-value-nested-unreachable-num-vs-void
   555      (block (i32.const 3) (block (unreachable)))
   556    ))
   557    "type mismatch"
   558  )
   559  (assert_invalid
   560    (module (func $type-block-value-nested-unreachable-void-vs-num (result i32)
   561      (block (block (unreachable)))
   562    ))
   563    "type mismatch"
   564  )
   565  (assert_invalid
   566    (module (func $type-block-value-nested-unreachable-num-vs-num (result i32)
   567      (block (result i64) (i64.const 0) (block (unreachable)))
   568    ))
   569    "type mismatch"
   570  )
   571  (assert_invalid
   572    (module (func $type-block-value-nested-unreachable-num2-vs-void (result i32)
   573      (block (i32.const 3) (block (i64.const 1) (unreachable))) (i32.const 9)
   574    ))
   575    "type mismatch"
   576  )
   577  
   578  (assert_invalid
   579    (module (func $type-block-value-nested-br-num-vs-void
   580      (block (i32.const 3) (block (br 1)))
   581    ))
   582    "type mismatch"
   583  )
   584  (assert_invalid
   585    (module (func $type-block-value-nested-br-void-vs-num (result i32)
   586      (block (result i32) (block (br 1 (i32.const 0))))
   587    ))
   588    "type mismatch"
   589  )
   590  (assert_invalid
   591    (module (func $type-block-value-nested-br-num-vs-num (result i32)
   592      (block (result i32) (i64.const 0) (block (br 1 (i32.const 0))))
   593    ))
   594    "type mismatch"
   595  )
   596  
   597  (assert_invalid
   598    (module (func $type-block-value-nested2-br-num-vs-void
   599      (block (block (i32.const 3) (block (br 2))))
   600    ))
   601    "type mismatch"
   602  )
   603  (assert_invalid
   604    (module (func $type-block-value-nested2-br-void-vs-num (result i32)
   605      (block (result i32) (block (block (br 2 (i32.const 0)))))
   606    ))
   607    "type mismatch"
   608  )
   609  (assert_invalid
   610    (module (func $type-block-value-nested2-br-num-vs-num (result i32)
   611      (block (result i32)
   612        (block (result i64) (i64.const 0) (block (br 2 (i32.const 0))))
   613      )
   614    ))
   615    "type mismatch"
   616  )
   617  (assert_invalid
   618    (module (func $type-block-value-nested2-br-num2-vs-void (result i32)
   619      (block (i32.const 3) (block (i64.const 1) (br 1))) (i32.const 9)
   620    ))
   621    "type mismatch"
   622  )
   623  
   624  (assert_invalid
   625    (module (func $type-block-value-nested-return-num-vs-void
   626      (block (i32.const 3) (block (return)))
   627    ))
   628    "type mismatch"
   629  )
   630  (assert_invalid
   631    (module (func $type-block-value-nested-return-void-vs-num (result i32)
   632      (block (block (return (i32.const 0))))
   633    ))
   634    "type mismatch"
   635  )
   636  (assert_invalid
   637    (module (func $type-block-value-nested-return-num-vs-num (result i32)
   638      (block (result i64) (i64.const 0) (block (return (i32.const 0))))
   639    ))
   640    "type mismatch"
   641  )
   642  (assert_invalid
   643    (module (func $type-block-value-nested-return-num2-vs-void (result i32)
   644      (block (i32.const 3) (block (i64.const 1) (return (i32.const 0))))
   645      (i32.const 9)
   646    ))
   647    "type mismatch"
   648  )
   649  
   650  (assert_invalid
   651    (module (func $type-loop-value-nested-unreachable-num-vs-void
   652      (loop (i32.const 3) (block (unreachable)))
   653    ))
   654    "type mismatch"
   655  )
   656  (assert_invalid
   657    (module (func $type-loop-value-nested-unreachable-void-vs-num (result i32)
   658      (loop (block (unreachable)))
   659    ))
   660    "type mismatch"
   661  )
   662  (assert_invalid
   663    (module (func $type-loop-value-nested-unreachable-num-vs-num (result i32)
   664      (loop (result i64) (i64.const 0) (block (unreachable)))
   665    ))
   666    "type mismatch"
   667  )
   668  
   669  (assert_invalid
   670    (module (func $type-cont-last-void-vs-empty (result i32)
   671      (loop (br 0 (nop)))
   672    ))
   673    "type mismatch"
   674  )
   675  (assert_invalid
   676    (module (func $type-cont-last-num-vs-empty (result i32)
   677      (loop (br 0 (i32.const 0)))
   678    ))
   679    "type mismatch"
   680  )
   681  
   682  (assert_invalid
   683    (module (func $tee-local-unreachable-value
   684      (local i32)
   685      (local.tee 0 (unreachable))
   686    ))
   687    "type mismatch"
   688  )
   689  (assert_invalid
   690    (module (func $br_if-unreachable (result i32)
   691      (block (result i32)
   692        (block
   693          (br_if 1 (unreachable) (i32.const 0))
   694        )
   695        (i32.const 0)
   696      )
   697    ))
   698    "type mismatch"
   699  )
   700  (assert_invalid 
   701    (module
   702      (func $type-br_if-after-unreachable (result i64)
   703        unreachable
   704        br_if 0
   705        i64.extend_i32_u
   706      )
   707    )
   708   "type mismatch"
   709  )