...

Text file src/github.com/tetratelabs/wazero/internal/integration_test/spectest/v1/testdata/unreached-invalid.wast

Documentation: github.com/tetratelabs/wazero/internal/integration_test/spectest/v1/testdata

     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)

View as plain text