...

Text file src/github.com/tetratelabs/wazero/internal/integration_test/spectest/v2/testdata/local_tee.wast

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

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

View as plain text