зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1635534 - Update wat to 1.0.17. r=lth
Differential Revision: https://phabricator.services.mozilla.com/D74694
This commit is contained in:
Родитель
66f70858cd
Коммит
0a7b098471
|
@ -5219,18 +5219,18 @@ checksum = "aeb1956b19469d1c5e63e459d29e7b5aa0f558d9f16fcef09736f8a265e6c10a"
|
|||
|
||||
[[package]]
|
||||
name = "wast"
|
||||
version = "13.0.0"
|
||||
version = "16.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5b20abd8b4a26f7e0d4dd5e357e90a3d555ec190e94472c9b2b27c5b9777f9ae"
|
||||
checksum = "8564a0c8f4d468d71c2b263dd1f675fa2cac6e7331ff8379cbb88cb79fcef8d1"
|
||||
dependencies = [
|
||||
"leb128",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wat"
|
||||
version = "1.0.14"
|
||||
version = "1.0.17"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "51a615830ee3e7200b505c441fec09aac2f114deae69df52f215cb828ba112c4"
|
||||
checksum = "a02463c6661a0d5a089d795e2e49ab34594b41265e8bd5ff3e0810e2a1f84222"
|
||||
dependencies = [
|
||||
"wast",
|
||||
]
|
||||
|
|
|
@ -20,5 +20,5 @@ smoosh = ['jsrust_shared/smoosh']
|
|||
jsrust_shared = { path = "./shared" }
|
||||
# Workaround for https://github.com/rust-lang/rust/issues/58393
|
||||
mozglue-static = { path = "../../../mozglue/static/rust" }
|
||||
wat = { version = "1.0.14" }
|
||||
wat = { version = "1.0.17" }
|
||||
wasmparser = { version = "0.48.2" }
|
||||
|
|
|
@ -1 +1 @@
|
|||
{"files":{"Cargo.toml":"24568dfb6c7dba37de238f00d47ccecb9e35a9a990183a0bf6fcf79d41faa06c","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"ad8c69458e8f19f6a796d1d791d15f014a045ed11616fe27d987aa37b49599a0","src/ast/assert_expr.rs":"0f6310eccb8a602722a13b2230cfa56dbc470e4c0ba5eb300237a81dc1bfff43","src/ast/custom.rs":"4c926ba719013537696e075c9acd8043da92a833cd28b0d843abcbfb71080fc3","src/ast/event.rs":"18f5106a87635d50b5f3b13fedd08247d3eb8158df454790151acadd41d1e0ab","src/ast/export.rs":"f296bd3238c7f9886f626d619d3a41ff0797bd51cb7bec7053278a62d8cb5355","src/ast/expr.rs":"25b7e290cc6a3b7c416bf583b2869648cc690d0d1f26a0dcaf165b238bd4b373","src/ast/func.rs":"149d947957414548b65739212a2cf1362f0ec9ecdda517653ae83949aa8a89f5","src/ast/global.rs":"41b617886012277e7377600047611b78564c2c594d8c0792de1509b89676244f","src/ast/import.rs":"53f39569b8486cd5fde6b3a826bc7dc221fc925afa043e45a0a1550987332ba7","src/ast/memory.rs":"836135f8f5a7bffa90ddaad1a862b9133d9c0e680b63736daa3e2377c23cb785","src/ast/mod.rs":"74fb35f65f786e82f66e7c85c9102051923d6938f8615eb2b57c3363476ae153","src/ast/module.rs":"b25df1f5648ea6fd7666537d52aa18221d435301793e4e01c8affa4ebb0da7c9","src/ast/table.rs":"74e9a0588515dd039c76e8e775470ee752607f06ece3e05c7d6a4141adfb89ea","src/ast/token.rs":"cdaaa6f50a9868ed7d0ec7088447ba94e3df5c81d38bc471c55d0968c249f73c","src/ast/types.rs":"9066d8b425005a6a70d5ada5e0ae316bf9bcab8e685fd941cc6d0ebb7e204473","src/ast/wast.rs":"9e64d00baf809d09181a06073a3fa9ac5907ac8248336cfd2089735d017075e3","src/binary.rs":"7f97251d6dd80dde667559e25fe38cdd9f540468416532a796a1bafd77c4b44a","src/lexer.rs":"1e62516a22ca89aa9510d255c264a27776a86c831b4c22a1fd00d20272e7b96c","src/lib.rs":"5fc7614c3d4a89f5fcac328d4a82cecaa445e0620bdf6bd55308cb1ead73d297","src/parser.rs":"926838cf6a6bef8bdad1013194f3d9305b2237e9f7fb2df2fa8ca44f557483aa","src/resolve/expand.rs":"f7ecf82bb00d7c770f78f5582ec5427c25189ff11943c052572ffab2f996b12c","src/resolve/mod.rs":"916ce2c88f633e36609767f3bccfabef4438586e98475cc8f0e4cbea5d2caaf4","src/resolve/names.rs":"13e67ac425ae4fda25388102eab66aae4a2927c9ad80e1fe72ca9de6f8df8b22","src/resolve/tyexpand.rs":"69701f2fc566fd5da4b253643a91e3048dd3c41795d5fed6ac94a386ec01947a"},"package":"5b20abd8b4a26f7e0d4dd5e357e90a3d555ec190e94472c9b2b27c5b9777f9ae"}
|
||||
{"files":{"Cargo.toml":"b3728e0765da9b14c186bf2ef0dec6d6c88ccc7e918fadf46c1f29ba706ee3d8","LICENSE-APACHE":"a60eea817514531668d7e00765731449fe14d059d3249e0bc93b36de45f759f2","LICENSE-MIT":"378f5840b258e2779c39418f3f2d7b2ba96f1c7917dd6be0713f88305dbda397","README.md":"ad8c69458e8f19f6a796d1d791d15f014a045ed11616fe27d987aa37b49599a0","src/ast/assert_expr.rs":"0f6310eccb8a602722a13b2230cfa56dbc470e4c0ba5eb300237a81dc1bfff43","src/ast/custom.rs":"4c926ba719013537696e075c9acd8043da92a833cd28b0d843abcbfb71080fc3","src/ast/event.rs":"18f5106a87635d50b5f3b13fedd08247d3eb8158df454790151acadd41d1e0ab","src/ast/export.rs":"f296bd3238c7f9886f626d619d3a41ff0797bd51cb7bec7053278a62d8cb5355","src/ast/expr.rs":"cac2b8bcd4c1ac150c9a6d7c103ca5b9275eae0f48b8e4721b38832c0e5afda3","src/ast/func.rs":"149d947957414548b65739212a2cf1362f0ec9ecdda517653ae83949aa8a89f5","src/ast/global.rs":"41b617886012277e7377600047611b78564c2c594d8c0792de1509b89676244f","src/ast/import.rs":"53f39569b8486cd5fde6b3a826bc7dc221fc925afa043e45a0a1550987332ba7","src/ast/memory.rs":"836135f8f5a7bffa90ddaad1a862b9133d9c0e680b63736daa3e2377c23cb785","src/ast/mod.rs":"4fe54a05664de07b10c48c72c51dea581d8f4ea329ccddf17a0095870695a335","src/ast/module.rs":"b25df1f5648ea6fd7666537d52aa18221d435301793e4e01c8affa4ebb0da7c9","src/ast/table.rs":"df1b7877fb8867b35f1b6dbf8a5a036feb702cb99000c56767f9f3588f5fb1af","src/ast/token.rs":"c39ef468c61729434708d3a54cc8ba5117491ce15008ddb3eebd727e18a843a3","src/ast/types.rs":"647ce47678e156102926caa870062ca6048f496e35ff182d479fd2f0b7d2694d","src/ast/wast.rs":"9e64d00baf809d09181a06073a3fa9ac5907ac8248336cfd2089735d017075e3","src/binary.rs":"2f7060c94bf463fbc8f3ea27c526cb2e1e0b7112b3f266a83b040c75591f6430","src/lexer.rs":"1e62516a22ca89aa9510d255c264a27776a86c831b4c22a1fd00d20272e7b96c","src/lib.rs":"5fc7614c3d4a89f5fcac328d4a82cecaa445e0620bdf6bd55308cb1ead73d297","src/parser.rs":"926838cf6a6bef8bdad1013194f3d9305b2237e9f7fb2df2fa8ca44f557483aa","src/resolve/expand.rs":"f7ecf82bb00d7c770f78f5582ec5427c25189ff11943c052572ffab2f996b12c","src/resolve/mod.rs":"916ce2c88f633e36609767f3bccfabef4438586e98475cc8f0e4cbea5d2caaf4","src/resolve/names.rs":"44d730691a1f773d5f1609cb2d2dba2fb9307b084c6c3c45817d99de74b599f9","src/resolve/tyexpand.rs":"69701f2fc566fd5da4b253643a91e3048dd3c41795d5fed6ac94a386ec01947a"},"package":"8564a0c8f4d468d71c2b263dd1f675fa2cac6e7331ff8379cbb88cb79fcef8d1"}
|
|
@ -13,7 +13,7 @@
|
|||
[package]
|
||||
edition = "2018"
|
||||
name = "wast"
|
||||
version = "13.0.0"
|
||||
version = "16.0.0"
|
||||
authors = ["Alex Crichton <alex@alexcrichton.com>"]
|
||||
description = "Customizable Rust parsers for the WebAssembly Text formats WAT and WAST\n"
|
||||
homepage = "https://github.com/bytecodealliance/wat/tree/master/crates/wast"
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
use crate::ast::{self, kw};
|
||||
use crate::ast::{self, kw, RefType};
|
||||
use crate::parser::{Parse, Parser, Result};
|
||||
use std::mem;
|
||||
|
||||
|
@ -411,8 +411,8 @@ instructions! {
|
|||
TableSize(TableArg<'a>) : [0xfc, 0x10] : "table.size",
|
||||
TableGrow(TableArg<'a>) : [0xfc, 0x0f] : "table.grow",
|
||||
|
||||
RefNull : [0xd0] : "ref.null",
|
||||
RefIsNull : [0xd1] : "ref.is_null",
|
||||
RefNull(RefType<'a>) : [0xd0] : "ref.null",
|
||||
RefIsNull(RefType<'a>) : [0xd1] : "ref.is_null",
|
||||
RefHost(u32) : [0xff] : "ref.host", // only used in test harness
|
||||
RefFunc(ast::Index<'a>) : [0xd2] : "ref.func",
|
||||
|
||||
|
@ -686,201 +686,198 @@ instructions! {
|
|||
I64AtomicRmw16CmpxchgU(MemArg<2>) : [0xfe, 0x4d] : "i64.atomic.rmw16.cmpxchg_u",
|
||||
I64AtomicRmw32CmpxchgU(MemArg<4>) : [0xfe, 0x4e] : "i64.atomic.rmw32.cmpxchg_u",
|
||||
|
||||
// proposal: simd
|
||||
V128Load(MemArg<16>) : [0xfd, 0x00] : "v128.load",
|
||||
V128Store(MemArg<16>) : [0xfd, 0x01] : "v128.store",
|
||||
V128Const(V128Const) : [0xfd, 0x02] : "v128.const",
|
||||
I16x8Load8x8S(MemArg<8>) : [0xfd, 0x01] : "i16x8.load8x8_s",
|
||||
I16x8Load8x8U(MemArg<8>) : [0xfd, 0x02] : "i16x8.load8x8_u",
|
||||
I32x4Load16x4S(MemArg<8>) : [0xfd, 0x03] : "i32x4.load16x4_s",
|
||||
I32x4Load16x4U(MemArg<8>) : [0xfd, 0x04] : "i32x4.load16x4_u",
|
||||
I64x2Load32x2S(MemArg<8>) : [0xfd, 0x05] : "i64x2.load32x2_s",
|
||||
I64x2Load32x2U(MemArg<8>) : [0xfd, 0x06] : "i64x2.load32x2_u",
|
||||
V8x16LoadSplat(MemArg<1>) : [0xfd, 0x07] : "v8x16.load_splat",
|
||||
V16x8LoadSplat(MemArg<2>) : [0xfd, 0x08] : "v16x8.load_splat",
|
||||
V32x4LoadSplat(MemArg<4>) : [0xfd, 0x09] : "v32x4.load_splat",
|
||||
V64x2LoadSplat(MemArg<8>) : [0xfd, 0x0a] : "v64x2.load_splat",
|
||||
V128Store(MemArg<16>) : [0xfd, 0x0b] : "v128.store",
|
||||
|
||||
I8x16Splat : [0xfd, 0x04] : "i8x16.splat",
|
||||
I8x16ExtractLaneS(u8) : [0xfd, 0x05] : "i8x16.extract_lane_s",
|
||||
I8x16ExtractLaneU(u8) : [0xfd, 0x06] : "i8x16.extract_lane_u",
|
||||
I8x16ReplaceLane(u8) : [0xfd, 0x07] : "i8x16.replace_lane",
|
||||
I16x8Splat : [0xfd, 0x08] : "i16x8.splat",
|
||||
I16x8ExtractLaneS(u8) : [0xfd, 0x09] : "i16x8.extract_lane_s",
|
||||
I16x8ExtractLaneU(u8) : [0xfd, 0x0a] : "i16x8.extract_lane_u",
|
||||
I16x8ReplaceLane(u8) : [0xfd, 0x0b] : "i16x8.replace_lane",
|
||||
I32x4Splat : [0xfd, 0x0c] : "i32x4.splat",
|
||||
I32x4ExtractLane(u8) : [0xfd, 0x0d] : "i32x4.extract_lane",
|
||||
I32x4ReplaceLane(u8) : [0xfd, 0x0e] : "i32x4.replace_lane",
|
||||
I64x2Splat : [0xfd, 0x0f] : "i64x2.splat",
|
||||
I64x2ExtractLane(u8) : [0xfd, 0x10] : "i64x2.extract_lane",
|
||||
I64x2ReplaceLane(u8) : [0xfd, 0x11] : "i64x2.replace_lane",
|
||||
F32x4Splat : [0xfd, 0x12] : "f32x4.splat",
|
||||
F32x4ExtractLane(u8) : [0xfd, 0x13] : "f32x4.extract_lane",
|
||||
F32x4ReplaceLane(u8) : [0xfd, 0x14] : "f32x4.replace_lane",
|
||||
F64x2Splat : [0xfd, 0x15] : "f64x2.splat",
|
||||
F64x2ExtractLane(u8) : [0xfd, 0x16] : "f64x2.extract_lane",
|
||||
F64x2ReplaceLane(u8) : [0xfd, 0x17] : "f64x2.replace_lane",
|
||||
V128Const(V128Const) : [0xfd, 0x0c] : "v128.const",
|
||||
V8x16Shuffle(V8x16Shuffle) : [0xfd, 0x0d] : "v8x16.shuffle",
|
||||
V8x16Swizzle : [0xfd, 0x0e] : "v8x16.swizzle",
|
||||
|
||||
I8x16Eq : [0xfd, 0x18] : "i8x16.eq",
|
||||
I8x16Ne : [0xfd, 0x19] : "i8x16.ne",
|
||||
I8x16LtS : [0xfd, 0x1a] : "i8x16.lt_s",
|
||||
I8x16LtU : [0xfd, 0x1b] : "i8x16.lt_u",
|
||||
I8x16GtS : [0xfd, 0x1c] : "i8x16.gt_s",
|
||||
I8x16GtU : [0xfd, 0x1d] : "i8x16.gt_u",
|
||||
I8x16LeS : [0xfd, 0x1e] : "i8x16.le_s",
|
||||
I8x16LeU : [0xfd, 0x1f] : "i8x16.le_u",
|
||||
I8x16GeS : [0xfd, 0x20] : "i8x16.ge_s",
|
||||
I8x16GeU : [0xfd, 0x21] : "i8x16.ge_u",
|
||||
I16x8Eq : [0xfd, 0x22] : "i16x8.eq",
|
||||
I16x8Ne : [0xfd, 0x23] : "i16x8.ne",
|
||||
I16x8LtS : [0xfd, 0x24] : "i16x8.lt_s",
|
||||
I16x8LtU : [0xfd, 0x25] : "i16x8.lt_u",
|
||||
I16x8GtS : [0xfd, 0x26] : "i16x8.gt_s",
|
||||
I16x8GtU : [0xfd, 0x27] : "i16x8.gt_u",
|
||||
I16x8LeS : [0xfd, 0x28] : "i16x8.le_s",
|
||||
I16x8LeU : [0xfd, 0x29] : "i16x8.le_u",
|
||||
I16x8GeS : [0xfd, 0x2a] : "i16x8.ge_s",
|
||||
I16x8GeU : [0xfd, 0x2b] : "i16x8.ge_u",
|
||||
I32x4Eq : [0xfd, 0x2c] : "i32x4.eq",
|
||||
I32x4Ne : [0xfd, 0x2d] : "i32x4.ne",
|
||||
I32x4LtS : [0xfd, 0x2e] : "i32x4.lt_s",
|
||||
I32x4LtU : [0xfd, 0x2f] : "i32x4.lt_u",
|
||||
I32x4GtS : [0xfd, 0x30] : "i32x4.gt_s",
|
||||
I32x4GtU : [0xfd, 0x31] : "i32x4.gt_u",
|
||||
I32x4LeS : [0xfd, 0x32] : "i32x4.le_s",
|
||||
I32x4LeU : [0xfd, 0x33] : "i32x4.le_u",
|
||||
I32x4GeS : [0xfd, 0x34] : "i32x4.ge_s",
|
||||
I32x4GeU : [0xfd, 0x35] : "i32x4.ge_u",
|
||||
I8x16Splat : [0xfd, 0x0f] : "i8x16.splat",
|
||||
I16x8Splat : [0xfd, 0x10] : "i16x8.splat",
|
||||
I32x4Splat : [0xfd, 0x11] : "i32x4.splat",
|
||||
I64x2Splat : [0xfd, 0x12] : "i64x2.splat",
|
||||
F32x4Splat : [0xfd, 0x13] : "f32x4.splat",
|
||||
F64x2Splat : [0xfd, 0x14] : "f64x2.splat",
|
||||
|
||||
F32x4Eq : [0xfd, 0x40] : "f32x4.eq",
|
||||
F32x4Ne : [0xfd, 0x41] : "f32x4.ne",
|
||||
F32x4Lt : [0xfd, 0x42] : "f32x4.lt",
|
||||
F32x4Gt : [0xfd, 0x43] : "f32x4.gt",
|
||||
F32x4Le : [0xfd, 0x44] : "f32x4.le",
|
||||
F32x4Ge : [0xfd, 0x45] : "f32x4.ge",
|
||||
F64x2Eq : [0xfd, 0x46] : "f64x2.eq",
|
||||
F64x2Ne : [0xfd, 0x47] : "f64x2.ne",
|
||||
F64x2Lt : [0xfd, 0x48] : "f64x2.lt",
|
||||
F64x2Gt : [0xfd, 0x49] : "f64x2.gt",
|
||||
F64x2Le : [0xfd, 0x4a] : "f64x2.le",
|
||||
F64x2Ge : [0xfd, 0x4b] : "f64x2.ge",
|
||||
I8x16ExtractLaneS(u8) : [0xfd, 0x15] : "i8x16.extract_lane_s",
|
||||
I8x16ExtractLaneU(u8) : [0xfd, 0x16] : "i8x16.extract_lane_u",
|
||||
I8x16ReplaceLane(u8) : [0xfd, 0x17] : "i8x16.replace_lane",
|
||||
I16x8ExtractLaneS(u8) : [0xfd, 0x18] : "i16x8.extract_lane_s",
|
||||
I16x8ExtractLaneU(u8) : [0xfd, 0x19] : "i16x8.extract_lane_u",
|
||||
I16x8ReplaceLane(u8) : [0xfd, 0x1a] : "i16x8.replace_lane",
|
||||
I32x4ExtractLane(u8) : [0xfd, 0x1b] : "i32x4.extract_lane",
|
||||
I32x4ReplaceLane(u8) : [0xfd, 0x1c] : "i32x4.replace_lane",
|
||||
I64x2ExtractLane(u8) : [0xfd, 0x1d] : "i64x2.extract_lane",
|
||||
I64x2ReplaceLane(u8) : [0xfd, 0x1e] : "i64x2.replace_lane",
|
||||
F32x4ExtractLane(u8) : [0xfd, 0x1f] : "f32x4.extract_lane",
|
||||
F32x4ReplaceLane(u8) : [0xfd, 0x20] : "f32x4.replace_lane",
|
||||
F64x2ExtractLane(u8) : [0xfd, 0x21] : "f64x2.extract_lane",
|
||||
F64x2ReplaceLane(u8) : [0xfd, 0x22] : "f64x2.replace_lane",
|
||||
|
||||
V128Not : [0xfd, 0x4c] : "v128.not",
|
||||
V128And : [0xfd, 0x4d] : "v128.and",
|
||||
V128Or : [0xfd, 0x4e] : "v128.or",
|
||||
V128Xor : [0xfd, 0x4f] : "v128.xor",
|
||||
V128Bitselect : [0xfd, 0x50] : "v128.bitselect",
|
||||
I8x16Eq : [0xfd, 0x23] : "i8x16.eq",
|
||||
I8x16Ne : [0xfd, 0x24] : "i8x16.ne",
|
||||
I8x16LtS : [0xfd, 0x25] : "i8x16.lt_s",
|
||||
I8x16LtU : [0xfd, 0x26] : "i8x16.lt_u",
|
||||
I8x16GtS : [0xfd, 0x27] : "i8x16.gt_s",
|
||||
I8x16GtU : [0xfd, 0x28] : "i8x16.gt_u",
|
||||
I8x16LeS : [0xfd, 0x29] : "i8x16.le_s",
|
||||
I8x16LeU : [0xfd, 0x2a] : "i8x16.le_u",
|
||||
I8x16GeS : [0xfd, 0x2b] : "i8x16.ge_s",
|
||||
I8x16GeU : [0xfd, 0x2c] : "i8x16.ge_u",
|
||||
I16x8Eq : [0xfd, 0x2d] : "i16x8.eq",
|
||||
I16x8Ne : [0xfd, 0x2e] : "i16x8.ne",
|
||||
I16x8LtS : [0xfd, 0x2f] : "i16x8.lt_s",
|
||||
I16x8LtU : [0xfd, 0x30] : "i16x8.lt_u",
|
||||
I16x8GtS : [0xfd, 0x31] : "i16x8.gt_s",
|
||||
I16x8GtU : [0xfd, 0x32] : "i16x8.gt_u",
|
||||
I16x8LeS : [0xfd, 0x33] : "i16x8.le_s",
|
||||
I16x8LeU : [0xfd, 0x34] : "i16x8.le_u",
|
||||
I16x8GeS : [0xfd, 0x35] : "i16x8.ge_s",
|
||||
I16x8GeU : [0xfd, 0x36] : "i16x8.ge_u",
|
||||
I32x4Eq : [0xfd, 0x37] : "i32x4.eq",
|
||||
I32x4Ne : [0xfd, 0x38] : "i32x4.ne",
|
||||
I32x4LtS : [0xfd, 0x39] : "i32x4.lt_s",
|
||||
I32x4LtU : [0xfd, 0x3a] : "i32x4.lt_u",
|
||||
I32x4GtS : [0xfd, 0x3b] : "i32x4.gt_s",
|
||||
I32x4GtU : [0xfd, 0x3c] : "i32x4.gt_u",
|
||||
I32x4LeS : [0xfd, 0x3d] : "i32x4.le_s",
|
||||
I32x4LeU : [0xfd, 0x3e] : "i32x4.le_u",
|
||||
I32x4GeS : [0xfd, 0x3f] : "i32x4.ge_s",
|
||||
I32x4GeU : [0xfd, 0x40] : "i32x4.ge_u",
|
||||
|
||||
I8x16Neg : [0xfd, 0x51] : "i8x16.neg",
|
||||
I8x16AnyTrue : [0xfd, 0x52] : "i8x16.any_true",
|
||||
I8x16AllTrue : [0xfd, 0x53] : "i8x16.all_true",
|
||||
I8x16Shl : [0xfd, 0x54] : "i8x16.shl",
|
||||
I8x16ShrS : [0xfd, 0x55] : "i8x16.shr_s",
|
||||
I8x16ShrU : [0xfd, 0x56] : "i8x16.shr_u",
|
||||
I8x16Add : [0xfd, 0x57] : "i8x16.add",
|
||||
I8x16AddSaturateS : [0xfd, 0x58] : "i8x16.add_saturate_s",
|
||||
I8x16AddSaturateU : [0xfd, 0x59] : "i8x16.add_saturate_u",
|
||||
I8x16Sub : [0xfd, 0x5a] : "i8x16.sub",
|
||||
I8x16SubSaturateS : [0xfd, 0x5b] : "i8x16.sub_saturate_s",
|
||||
I8x16SubSaturateU : [0xfd, 0x5c] : "i8x16.sub_saturate_u",
|
||||
I8x16Mul : [0xfd, 0x5d] : "i8x16.mul",
|
||||
I8x16MinS : [0xfd, 0x5e] : "i8x16.min_s",
|
||||
I8x16MinU : [0xfd, 0x5f] : "i8x16.min_u",
|
||||
I8x16MaxS : [0xfd, 0x60] : "i8x16.max_s",
|
||||
I8x16MaxU : [0xfd, 0x61] : "i8x16.max_u",
|
||||
F32x4Eq : [0xfd, 0x41] : "f32x4.eq",
|
||||
F32x4Ne : [0xfd, 0x42] : "f32x4.ne",
|
||||
F32x4Lt : [0xfd, 0x43] : "f32x4.lt",
|
||||
F32x4Gt : [0xfd, 0x44] : "f32x4.gt",
|
||||
F32x4Le : [0xfd, 0x45] : "f32x4.le",
|
||||
F32x4Ge : [0xfd, 0x46] : "f32x4.ge",
|
||||
F64x2Eq : [0xfd, 0x47] : "f64x2.eq",
|
||||
F64x2Ne : [0xfd, 0x48] : "f64x2.ne",
|
||||
F64x2Lt : [0xfd, 0x49] : "f64x2.lt",
|
||||
F64x2Gt : [0xfd, 0x4a] : "f64x2.gt",
|
||||
F64x2Le : [0xfd, 0x4b] : "f64x2.le",
|
||||
F64x2Ge : [0xfd, 0x4c] : "f64x2.ge",
|
||||
|
||||
I16x8Neg : [0xfd, 0x62] : "i16x8.neg",
|
||||
I16x8AnyTrue : [0xfd, 0x63] : "i16x8.any_true",
|
||||
I16x8AllTrue : [0xfd, 0x64] : "i16x8.all_true",
|
||||
I16x8Shl : [0xfd, 0x65] : "i16x8.shl",
|
||||
I16x8ShrS : [0xfd, 0x66] : "i16x8.shr_s",
|
||||
I16x8ShrU : [0xfd, 0x67] : "i16x8.shr_u",
|
||||
I16x8Add : [0xfd, 0x68] : "i16x8.add",
|
||||
I16x8AddSaturateS : [0xfd, 0x69] : "i16x8.add_saturate_s",
|
||||
I16x8AddSaturateU : [0xfd, 0x6a] : "i16x8.add_saturate_u",
|
||||
I16x8Sub : [0xfd, 0x6b] : "i16x8.sub",
|
||||
I16x8SubSaturateS : [0xfd, 0x6c] : "i16x8.sub_saturate_s",
|
||||
I16x8SubSaturateU : [0xfd, 0x6d] : "i16x8.sub_saturate_u",
|
||||
I16x8Mul : [0xfd, 0x6e] : "i16x8.mul",
|
||||
I16x8MinS : [0xfd, 0x6f] : "i16x8.min_s",
|
||||
I16x8MinU : [0xfd, 0x70] : "i16x8.min_u",
|
||||
I16x8MaxS : [0xfd, 0x71] : "i16x8.max_s",
|
||||
I16x8MaxU : [0xfd, 0x72] : "i16x8.max_u",
|
||||
V128Not : [0xfd, 0x4d] : "v128.not",
|
||||
V128And : [0xfd, 0x4e] : "v128.and",
|
||||
V128Andnot : [0xfd, 0x4f] : "v128.andnot",
|
||||
V128Or : [0xfd, 0x50] : "v128.or",
|
||||
V128Xor : [0xfd, 0x51] : "v128.xor",
|
||||
V128Bitselect : [0xfd, 0x52] : "v128.bitselect",
|
||||
|
||||
I32x4Neg : [0xfd, 0x73] : "i32x4.neg",
|
||||
I32x4AnyTrue : [0xfd, 0x74] : "i32x4.any_true",
|
||||
I32x4AllTrue : [0xfd, 0x75] : "i32x4.all_true",
|
||||
I32x4Shl : [0xfd, 0x76] : "i32x4.shl",
|
||||
I32x4ShrS : [0xfd, 0x77] : "i32x4.shr_s",
|
||||
I32x4ShrU : [0xfd, 0x78] : "i32x4.shr_u",
|
||||
I32x4Add : [0xfd, 0x79] : "i32x4.add",
|
||||
I32x4Sub : [0xfd, 0x7c] : "i32x4.sub",
|
||||
I32x4Mul : [0xfd, 0x7f] : "i32x4.mul",
|
||||
I32x4MinS : [0xfd, 0x80] : "i32x4.min_s",
|
||||
I32x4MinU : [0xfd, 0x81] : "i32x4.min_u",
|
||||
I32x4MaxS : [0xfd, 0x82] : "i32x4.max_s",
|
||||
I32x4MaxU : [0xfd, 0x83] : "i32x4.max_u",
|
||||
I8x16Abs : [0xfd, 0x60] : "i8x16.abs",
|
||||
I8x16Neg : [0xfd, 0x61] : "i8x16.neg",
|
||||
I8x16AnyTrue : [0xfd, 0x62] : "i8x16.any_true",
|
||||
I8x16AllTrue : [0xfd, 0x63] : "i8x16.all_true",
|
||||
I8x16NarrowI16x8S : [0xfd, 0x65] : "i8x16.narrow_i16x8_s",
|
||||
I8x16NarrowI16x8U : [0xfd, 0x66] : "i8x16.narrow_i16x8_u",
|
||||
I8x16Shl : [0xfd, 0x6b] : "i8x16.shl",
|
||||
I8x16ShrS : [0xfd, 0x6c] : "i8x16.shr_s",
|
||||
I8x16ShrU : [0xfd, 0x6d] : "i8x16.shr_u",
|
||||
I8x16Add : [0xfd, 0x6e] : "i8x16.add",
|
||||
I8x16AddSaturateS : [0xfd, 0x6f] : "i8x16.add_saturate_s",
|
||||
I8x16AddSaturateU : [0xfd, 0x70] : "i8x16.add_saturate_u",
|
||||
I8x16Sub : [0xfd, 0x71] : "i8x16.sub",
|
||||
I8x16SubSaturateS : [0xfd, 0x72] : "i8x16.sub_saturate_s",
|
||||
I8x16SubSaturateU : [0xfd, 0x73] : "i8x16.sub_saturate_u",
|
||||
I8x16MinS : [0xfd, 0x76] : "i8x16.min_s",
|
||||
I8x16MinU : [0xfd, 0x77] : "i8x16.min_u",
|
||||
I8x16MaxS : [0xfd, 0x78] : "i8x16.max_s",
|
||||
I8x16MaxU : [0xfd, 0x79] : "i8x16.max_u",
|
||||
I8x16AvgrU : [0xfd, 0x7b] : "i8x16.avgr_u",
|
||||
|
||||
I64x2Neg : [0xfd, 0x84] : "i64x2.neg",
|
||||
I64x2AnyTrue : [0xfd, 0x85] : "i64x2.any_true",
|
||||
I64x2AllTrue : [0xfd, 0x86] : "i64x2.all_true",
|
||||
I64x2Shl : [0xfd, 0x87] : "i64x2.shl",
|
||||
I64x2ShrS : [0xfd, 0x88] : "i64x2.shr_s",
|
||||
I64x2ShrU : [0xfd, 0x89] : "i64x2.shr_u",
|
||||
I64x2Add : [0xfd, 0x8a] : "i64x2.add",
|
||||
I64x2Sub : [0xfd, 0x8d] : "i64x2.sub",
|
||||
I64x2Mul : [0xfd, 0x90] : "i64x2.mul",
|
||||
I16x8Abs : [0xfd, 0x80] : "i16x8.abs",
|
||||
I16x8Neg : [0xfd, 0x81] : "i16x8.neg",
|
||||
I16x8AnyTrue : [0xfd, 0x82] : "i16x8.any_true",
|
||||
I16x8AllTrue : [0xfd, 0x83] : "i16x8.all_true",
|
||||
I16x8NarrowI32x4S : [0xfd, 0x85] : "i16x8.narrow_i32x4_s",
|
||||
I16x8NarrowI32x4U : [0xfd, 0x86] : "i16x8.narrow_i32x4_u",
|
||||
I16x8WidenLowI8x16S : [0xfd, 0x87] : "i16x8.widen_low_i8x16_s",
|
||||
I16x8WidenHighI8x16S : [0xfd, 0x88] : "i16x8.widen_high_i8x16_s",
|
||||
I16x8WidenLowI8x16U : [0xfd, 0x89] : "i16x8.widen_low_i8x16_u",
|
||||
I16x8WidenHighI8x16u : [0xfd, 0x8a] : "i16x8.widen_high_i8x16_u",
|
||||
I16x8Shl : [0xfd, 0x8b] : "i16x8.shl",
|
||||
I16x8ShrS : [0xfd, 0x8c] : "i16x8.shr_s",
|
||||
I16x8ShrU : [0xfd, 0x8d] : "i16x8.shr_u",
|
||||
I16x8Add : [0xfd, 0x8e] : "i16x8.add",
|
||||
I16x8AddSaturateS : [0xfd, 0x8f] : "i16x8.add_saturate_s",
|
||||
I16x8AddSaturateU : [0xfd, 0x90] : "i16x8.add_saturate_u",
|
||||
I16x8Sub : [0xfd, 0x91] : "i16x8.sub",
|
||||
I16x8SubSaturateS : [0xfd, 0x92] : "i16x8.sub_saturate_s",
|
||||
I16x8SubSaturateU : [0xfd, 0x93] : "i16x8.sub_saturate_u",
|
||||
I16x8Mul : [0xfd, 0x95] : "i16x8.mul",
|
||||
I16x8MinS : [0xfd, 0x96] : "i16x8.min_s",
|
||||
I16x8MinU : [0xfd, 0x97] : "i16x8.min_u",
|
||||
I16x8MaxS : [0xfd, 0x98] : "i16x8.max_s",
|
||||
I16x8MaxU : [0xfd, 0x99] : "i16x8.max_u",
|
||||
I16x8AvgrU : [0xfd, 0x9b] : "i16x8.avgr_u",
|
||||
|
||||
F32x4Abs : [0xfd, 0x95] : "f32x4.abs",
|
||||
F32x4Neg : [0xfd, 0x96] : "f32x4.neg",
|
||||
F32x4Sqrt : [0xfd, 0x97] : "f32x4.sqrt",
|
||||
F32x4Add : [0xfd, 0x9a] : "f32x4.add",
|
||||
F32x4Sub : [0xfd, 0x9b] : "f32x4.sub",
|
||||
F32x4Mul : [0xfd, 0x9c] : "f32x4.mul",
|
||||
F32x4Div : [0xfd, 0x9d] : "f32x4.div",
|
||||
F32x4Min : [0xfd, 0x9e] : "f32x4.min",
|
||||
F32x4Max : [0xfd, 0x9f] : "f32x4.max",
|
||||
I32x4Abs : [0xfd, 0xa0] : "i32x4.abs",
|
||||
I32x4Neg : [0xfd, 0xa1] : "i32x4.neg",
|
||||
I32x4AnyTrue : [0xfd, 0xa2] : "i32x4.any_true",
|
||||
I32x4AllTrue : [0xfd, 0xa3] : "i32x4.all_true",
|
||||
I32x4WidenLowI16x8S : [0xfd, 0xa7] : "i32x4.widen_low_i16x8_s",
|
||||
I32x4WidenHighI16x8S : [0xfd, 0xa8] : "i32x4.widen_high_i16x8_s",
|
||||
I32x4WidenLowI16x8U : [0xfd, 0xa9] : "i32x4.widen_low_i16x8_u",
|
||||
I32x4WidenHighI16x8u : [0xfd, 0xaa] : "i32x4.widen_high_i16x8_u",
|
||||
I32x4Shl : [0xfd, 0xab] : "i32x4.shl",
|
||||
I32x4ShrS : [0xfd, 0xac] : "i32x4.shr_s",
|
||||
I32x4ShrU : [0xfd, 0xad] : "i32x4.shr_u",
|
||||
I32x4Add : [0xfd, 0xae] : "i32x4.add",
|
||||
I32x4Sub : [0xfd, 0xb1] : "i32x4.sub",
|
||||
I32x4DotI16x8S : [0xfd, 0xb4] : "i32x4.dot_i8x16_s",
|
||||
I32x4Mul : [0xfd, 0xb5] : "i32x4.mul",
|
||||
I32x4MinS : [0xfd, 0xb6] : "i32x4.min_s",
|
||||
I32x4MinU : [0xfd, 0xb7] : "i32x4.min_u",
|
||||
I32x4MaxS : [0xfd, 0xb8] : "i32x4.max_s",
|
||||
I32x4MaxU : [0xfd, 0xb9] : "i32x4.max_u",
|
||||
|
||||
F64x2Abs : [0xfd, 0xa0] : "f64x2.abs",
|
||||
F64x2Neg : [0xfd, 0xa1] : "f64x2.neg",
|
||||
F64x2Sqrt : [0xfd, 0xa2] : "f64x2.sqrt",
|
||||
F64x2Add : [0xfd, 0xa5] : "f64x2.add",
|
||||
F64x2Sub : [0xfd, 0xa6] : "f64x2.sub",
|
||||
F64x2Mul : [0xfd, 0xa7] : "f64x2.mul",
|
||||
F64x2Div : [0xfd, 0xa8] : "f64x2.div",
|
||||
F64x2Min : [0xfd, 0xa9] : "f64x2.min",
|
||||
F64x2Max : [0xfd, 0xaa] : "f64x2.max",
|
||||
I64x2Neg : [0xfd, 0xc1] : "i64x2.neg",
|
||||
I64x2Shl : [0xfd, 0xcb] : "i64x2.shl",
|
||||
I64x2ShrS : [0xfd, 0xcc] : "i64x2.shr_s",
|
||||
I64x2ShrU : [0xfd, 0xcd] : "i64x2.shr_u",
|
||||
I64x2Add : [0xfd, 0xce] : "i64x2.add",
|
||||
I64x2Sub : [0xfd, 0xd1] : "i64x2.sub",
|
||||
I64x2Mul : [0xfd, 0xd5] : "i64x2.mul",
|
||||
|
||||
I32x4TruncSatF32x4S : [0xfd, 0xab] : "i32x4.trunc_sat_f32x4_s",
|
||||
I32x4TruncSatF32x4U : [0xfd, 0xac] : "i32x4.trunc_sat_f32x4_u",
|
||||
F32x4ConvertI32x4S : [0xfd, 0xaf] : "f32x4.convert_i32x4_s",
|
||||
F32x4ConvertI32x4U : [0xfd, 0xb0] : "f32x4.convert_i32x4_u",
|
||||
V8x16Swizzle : [0xfd, 0xc0] : "v8x16.swizzle",
|
||||
V8x16Shuffle(V8x16Shuffle) : [0xfd, 0x03] : "v8x16.shuffle",
|
||||
V8x16LoadSplat(MemArg<1>) : [0xfd, 0xc2] : "v8x16.load_splat",
|
||||
V16x8LoadSplat(MemArg<2>) : [0xfd, 0xc3] : "v16x8.load_splat",
|
||||
V32x4LoadSplat(MemArg<4>) : [0xfd, 0xc4] : "v32x4.load_splat",
|
||||
V64x2LoadSplat(MemArg<8>) : [0xfd, 0xc5] : "v64x2.load_splat",
|
||||
F32x4Abs : [0xfd, 0xe0] : "f32x4.abs",
|
||||
F32x4Neg : [0xfd, 0xe1] : "f32x4.neg",
|
||||
F32x4Sqrt : [0xfd, 0xe3] : "f32x4.sqrt",
|
||||
F32x4Add : [0xfd, 0xe4] : "f32x4.add",
|
||||
F32x4Sub : [0xfd, 0xe5] : "f32x4.sub",
|
||||
F32x4Mul : [0xfd, 0xe6] : "f32x4.mul",
|
||||
F32x4Div : [0xfd, 0xe7] : "f32x4.div",
|
||||
F32x4Min : [0xfd, 0xe8] : "f32x4.min",
|
||||
F32x4Max : [0xfd, 0xe9] : "f32x4.max",
|
||||
|
||||
I8x16NarrowI16x8S : [0xfd, 0xc6] : "i8x16.narrow_i16x8_s",
|
||||
I8x16NarrowI16x8U : [0xfd, 0xc7] : "i8x16.narrow_i16x8_u",
|
||||
I16x8NarrowI32x4S : [0xfd, 0xc8] : "i16x8.narrow_i32x4_s",
|
||||
I16x8NarrowI32x4U : [0xfd, 0xc9] : "i16x8.narrow_i32x4_u",
|
||||
F64x2Abs : [0xfd, 0xec] : "f64x2.abs",
|
||||
F64x2Neg : [0xfd, 0xed] : "f64x2.neg",
|
||||
F64x2Sqrt : [0xfd, 0xef] : "f64x2.sqrt",
|
||||
F64x2Add : [0xfd, 0xf0] : "f64x2.add",
|
||||
F64x2Sub : [0xfd, 0xf1] : "f64x2.sub",
|
||||
F64x2Mul : [0xfd, 0xf2] : "f64x2.mul",
|
||||
F64x2Div : [0xfd, 0xf3] : "f64x2.div",
|
||||
F64x2Min : [0xfd, 0xf4] : "f64x2.min",
|
||||
F64x2Max : [0xfd, 0xf5] : "f64x2.max",
|
||||
|
||||
I16x8WidenLowI8x16S : [0xfd, 0xca] : "i16x8.widen_low_i8x16_s",
|
||||
I16x8WidenHighI8x16S : [0xfd, 0xcb] : "i16x8.widen_high_i8x16_s",
|
||||
I16x8WidenLowI8x16U : [0xfd, 0xcc] : "i16x8.widen_low_i8x16_u",
|
||||
I16x8WidenHighI8x16u : [0xfd, 0xcd] : "i16x8.widen_high_i8x16_u",
|
||||
I32x4WidenLowI16x8S : [0xfd, 0xce] : "i32x4.widen_low_i16x8_s",
|
||||
I32x4WidenHighI16x8S : [0xfd, 0xcf] : "i32x4.widen_high_i16x8_s",
|
||||
I32x4WidenLowI16x8U : [0xfd, 0xd0] : "i32x4.widen_low_i16x8_u",
|
||||
I32x4WidenHighI16x8u : [0xfd, 0xd1] : "i32x4.widen_high_i16x8_u",
|
||||
|
||||
I16x8Load8x8S(MemArg<8>) : [0xfd, 0xd2] : "i16x8.load8x8_s",
|
||||
I16x8Load8x8U(MemArg<8>) : [0xfd, 0xd3] : "i16x8.load8x8_u",
|
||||
I32x4Load16x4S(MemArg<8>) : [0xfd, 0xd4] : "i32x4.load16x4_s",
|
||||
I32x4Load16x4U(MemArg<8>) : [0xfd, 0xd5] : "i32x4.load16x4_u",
|
||||
I64x2Load32x2S(MemArg<8>) : [0xfd, 0xd6] : "i64x2.load32x2_s",
|
||||
I64x2Load32x2U(MemArg<8>) : [0xfd, 0xd7] : "i64x2.load32x2_u",
|
||||
V128Andnot : [0xfd, 0xd8] : "v128.andnot",
|
||||
|
||||
I8x16AvgrU : [0xfd, 0xd9] : "i8x16.avgr_u",
|
||||
I16x8AvgrU : [0xfd, 0xda] : "i16x8.avgr_u",
|
||||
|
||||
I8x16Abs : [0xfd, 0xe1] : "i8x16.abs",
|
||||
I16x8Abs : [0xfd, 0xe2] : "i16x8.abs",
|
||||
I32x4Abs : [0xfd, 0xe3] : "i32x4.abs",
|
||||
I32x4TruncSatF32x4S : [0xfd, 0xf8] : "i32x4.trunc_sat_f32x4_s",
|
||||
I32x4TruncSatF32x4U : [0xfd, 0xf9] : "i32x4.trunc_sat_f32x4_u",
|
||||
F32x4ConvertI32x4S : [0xfd, 0xfa] : "f32x4.convert_i32x4_s",
|
||||
F32x4ConvertI32x4U : [0xfd, 0xfb] : "f32x4.convert_i32x4_u",
|
||||
|
||||
// Exception handling proposal
|
||||
Try(BlockType<'a>) : [0x06] : "try",
|
||||
Catch : [0x07] : "catch",
|
||||
Throw(ast::Index<'a>) : [0x08] : "throw",
|
||||
|
|
|
@ -348,6 +348,8 @@ pub mod kw {
|
|||
custom_keyword!(exn);
|
||||
custom_keyword!(exnref);
|
||||
custom_keyword!(export);
|
||||
custom_keyword!(r#extern = "extern");
|
||||
custom_keyword!(externref);
|
||||
custom_keyword!(eq);
|
||||
custom_keyword!(eqref);
|
||||
custom_keyword!(f32);
|
||||
|
|
|
@ -208,12 +208,12 @@ impl<'a> ElemPayload<'a> {
|
|||
let func = parser.parens(|p| match p.parse::<Option<kw::item>>()? {
|
||||
Some(_) => {
|
||||
if parser.peek::<ast::LParen>() {
|
||||
parser.parens(parse_ref_func)
|
||||
parser.parens(|p| parse_ref_func(p, ty))
|
||||
} else {
|
||||
parse_ref_func(parser)
|
||||
parse_ref_func(parser, ty)
|
||||
}
|
||||
}
|
||||
None => parse_ref_func(p),
|
||||
None => parse_ref_func(parser, ty),
|
||||
})?;
|
||||
exprs.push(func);
|
||||
}
|
||||
|
@ -221,10 +221,14 @@ impl<'a> ElemPayload<'a> {
|
|||
}
|
||||
}
|
||||
|
||||
fn parse_ref_func<'a>(parser: Parser<'a>) -> Result<Option<ast::Index<'a>>> {
|
||||
fn parse_ref_func<'a>(parser: Parser<'a>, ty: ast::TableElemType) -> Result<Option<ast::Index<'a>>> {
|
||||
let mut l = parser.lookahead1();
|
||||
if l.peek::<kw::ref_null>() {
|
||||
parser.parse::<kw::ref_null>()?;
|
||||
let null_ty: ast::RefType = parser.parse()?;
|
||||
if null_ty != ty.into() {
|
||||
return Err(parser.error("elem segment item doesn't match elem segment type"));
|
||||
}
|
||||
Ok(None)
|
||||
} else if l.peek::<kw::ref_func>() {
|
||||
parser.parse::<kw::ref_func>()?;
|
||||
|
|
|
@ -12,6 +12,11 @@ pub struct Span {
|
|||
}
|
||||
|
||||
impl Span {
|
||||
/// Construct a `Span` from a byte offset in the source file.
|
||||
pub fn from_offset(offset: usize) -> Self {
|
||||
Span { offset }
|
||||
}
|
||||
|
||||
/// Returns the line/column information of this span within `text`.
|
||||
/// Line and column numbers are 0-indexed. User presentation is typically
|
||||
/// 1-indexed, but 0-indexing is appropriate for internal use with
|
||||
|
|
|
@ -12,14 +12,7 @@ pub enum ValType<'a> {
|
|||
V128,
|
||||
I8,
|
||||
I16,
|
||||
Funcref,
|
||||
Anyref,
|
||||
Nullref,
|
||||
Exnref,
|
||||
Ref(ast::Index<'a>),
|
||||
Optref(ast::Index<'a>),
|
||||
Eqref,
|
||||
I31ref,
|
||||
Ref(RefType<'a>),
|
||||
Rtt(ast::Index<'a>),
|
||||
}
|
||||
|
||||
|
@ -49,52 +42,27 @@ impl<'a> Parse<'a> for ValType<'a> {
|
|||
Ok(ValType::I16)
|
||||
} else if l.peek::<kw::funcref>() {
|
||||
parser.parse::<kw::funcref>()?;
|
||||
Ok(ValType::Funcref)
|
||||
Ok(ValType::Ref(RefType::Func))
|
||||
} else if l.peek::<kw::anyfunc>() {
|
||||
parser.parse::<kw::anyfunc>()?;
|
||||
Ok(ValType::Funcref)
|
||||
Ok(ValType::Ref(RefType::Func))
|
||||
} else if l.peek::<kw::externref>() {
|
||||
parser.parse::<kw::externref>()?;
|
||||
Ok(ValType::Ref(RefType::Extern))
|
||||
} else if l.peek::<kw::anyref>() {
|
||||
// Parse `anyref` as an alias of `externref` until all tests are
|
||||
// ported to use the new name
|
||||
parser.parse::<kw::anyref>()?;
|
||||
Ok(ValType::Anyref)
|
||||
} else if l.peek::<kw::nullref>() {
|
||||
parser.parse::<kw::nullref>()?;
|
||||
Ok(ValType::Nullref)
|
||||
Ok(ValType::Ref(RefType::Extern))
|
||||
} else if l.peek::<ast::LParen>() {
|
||||
parser.parens(|p| {
|
||||
let mut l = parser.lookahead1();
|
||||
if l.peek::<kw::r#ref>() {
|
||||
p.parse::<kw::r#ref>()?;
|
||||
|
||||
let mut l = parser.lookahead1();
|
||||
if l.peek::<kw::func>() {
|
||||
parser.parse::<kw::func>()?;
|
||||
Ok(ValType::Funcref)
|
||||
} else if l.peek::<kw::any>() {
|
||||
parser.parse::<kw::any>()?;
|
||||
Ok(ValType::Anyref)
|
||||
} else if l.peek::<kw::null>() {
|
||||
parser.parse::<kw::null>()?;
|
||||
Ok(ValType::Nullref)
|
||||
} else if l.peek::<kw::exn>() {
|
||||
parser.parse::<kw::exn>()?;
|
||||
Ok(ValType::Exnref)
|
||||
} else if l.peek::<kw::eq>() {
|
||||
parser.parse::<kw::eq>()?;
|
||||
Ok(ValType::Eqref)
|
||||
} else if l.peek::<kw::i31>() {
|
||||
parser.parse::<kw::i31>()?;
|
||||
Ok(ValType::I31ref)
|
||||
} else if l.peek::<kw::opt>() {
|
||||
parser.parse::<kw::opt>()?;
|
||||
Ok(ValType::Optref(parser.parse()?))
|
||||
} else if l.peek::<ast::Index>() {
|
||||
Ok(ValType::Ref(parser.parse()?))
|
||||
} else {
|
||||
Err(l.error())
|
||||
}
|
||||
Ok(ValType::Ref(p.parse()?))
|
||||
} else if l.peek::<kw::optref>() {
|
||||
p.parse::<kw::optref>()?;
|
||||
Ok(ValType::Optref(parser.parse()?))
|
||||
Ok(ValType::Ref(RefType::OptType(parser.parse()?)))
|
||||
} else if l.peek::<kw::rtt>() {
|
||||
p.parse::<kw::rtt>()?;
|
||||
Ok(ValType::Rtt(parser.parse()?))
|
||||
|
@ -104,13 +72,80 @@ impl<'a> Parse<'a> for ValType<'a> {
|
|||
})
|
||||
} else if l.peek::<kw::exnref>() {
|
||||
parser.parse::<kw::exnref>()?;
|
||||
Ok(ValType::Exnref)
|
||||
Ok(ValType::Ref(RefType::Exn))
|
||||
} else if l.peek::<kw::eqref>() {
|
||||
parser.parse::<kw::eqref>()?;
|
||||
Ok(ValType::Eqref)
|
||||
Ok(ValType::Ref(RefType::Eq))
|
||||
} else if l.peek::<kw::i31ref>() {
|
||||
parser.parse::<kw::i31ref>()?;
|
||||
Ok(ValType::I31ref)
|
||||
Ok(ValType::Ref(RefType::I31))
|
||||
} else {
|
||||
Err(l.error())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// The reference value types for a wasm module.
|
||||
#[allow(missing_docs)]
|
||||
#[derive(Debug, PartialEq, Eq, Hash, Copy, Clone)]
|
||||
pub enum RefType<'a> {
|
||||
/// An untyped function reference: funcref. This is part of the reference
|
||||
/// types proposal.
|
||||
Func,
|
||||
/// A reference to any host value: externref. This was originally known as
|
||||
/// anyref when it was the supertype of all reference value types. This is
|
||||
/// part of the reference types proposal.
|
||||
Extern,
|
||||
/// A reference to an exception: exnref. This is part of the exception
|
||||
/// handling proposal.
|
||||
Exn,
|
||||
/// A reference that has an identity that can be compared: eqref. This is
|
||||
/// part of the GC proposal.
|
||||
Eq,
|
||||
/// An unboxed 31-bit integer: i31ref. This may be going away if there is no common
|
||||
/// supertype of all reference types. Part of the GC proposal.
|
||||
I31,
|
||||
/// A reference to a function, struct, or array: ref T. This is part of the
|
||||
/// GC proposal.
|
||||
Type(ast::Index<'a>),
|
||||
/// A nullable reference to a function, struct, or array: optref T. This is
|
||||
/// part of the GC proposal.
|
||||
OptType(ast::Index<'a>),
|
||||
}
|
||||
|
||||
impl<'a> From<TableElemType> for RefType<'a> {
|
||||
fn from(elem: TableElemType) -> Self {
|
||||
match elem {
|
||||
TableElemType::Funcref => RefType::Func,
|
||||
TableElemType::Externref => RefType::Extern,
|
||||
TableElemType::Exnref => RefType::Exn,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> Parse<'a> for RefType<'a> {
|
||||
fn parse(parser: Parser<'a>) -> Result<Self> {
|
||||
let mut l = parser.lookahead1();
|
||||
if l.peek::<kw::func>() {
|
||||
parser.parse::<kw::func>()?;
|
||||
Ok(RefType::Func)
|
||||
} else if l.peek::<kw::r#extern>() {
|
||||
parser.parse::<kw::r#extern>()?;
|
||||
Ok(RefType::Extern)
|
||||
} else if l.peek::<kw::exn>() {
|
||||
parser.parse::<kw::exn>()?;
|
||||
Ok(RefType::Exn)
|
||||
} else if l.peek::<kw::eq>() {
|
||||
parser.parse::<kw::eq>()?;
|
||||
Ok(RefType::Eq)
|
||||
} else if l.peek::<kw::i31>() {
|
||||
parser.parse::<kw::i31>()?;
|
||||
Ok(RefType::I31)
|
||||
} else if l.peek::<kw::opt>() {
|
||||
parser.parse::<kw::opt>()?;
|
||||
Ok(RefType::OptType(parser.parse()?))
|
||||
} else if l.peek::<ast::Index>() {
|
||||
Ok(RefType::Type(parser.parse()?))
|
||||
} else {
|
||||
Err(l.error())
|
||||
}
|
||||
|
@ -146,16 +181,12 @@ impl<'a> Parse<'a> for GlobalType<'a> {
|
|||
}
|
||||
|
||||
/// List of different kinds of table types we can have.
|
||||
///
|
||||
/// Currently there's only one, a `funcref`.
|
||||
#[derive(Copy, Clone, Debug)]
|
||||
pub enum TableElemType {
|
||||
/// An element for a table that is a list of functions.
|
||||
Funcref,
|
||||
/// An element for a table that is a list of `anyref` values.
|
||||
Anyref,
|
||||
/// An element for a table that is a list of `nullref` values.
|
||||
Nullref,
|
||||
/// An element for a table that is a list of `externref` values.
|
||||
Externref,
|
||||
/// An element for a table that is a list of `exnref` values.
|
||||
Exnref,
|
||||
}
|
||||
|
@ -172,11 +203,13 @@ impl<'a> Parse<'a> for TableElemType {
|
|||
parser.parse::<kw::funcref>()?;
|
||||
Ok(TableElemType::Funcref)
|
||||
} else if l.peek::<kw::anyref>() {
|
||||
// Parse `anyref` as an alias of `externref` until all tests are
|
||||
// ported to use the new name
|
||||
parser.parse::<kw::anyref>()?;
|
||||
Ok(TableElemType::Anyref)
|
||||
} else if l.peek::<kw::nullref>() {
|
||||
parser.parse::<kw::nullref>()?;
|
||||
Ok(TableElemType::Nullref)
|
||||
Ok(TableElemType::Externref)
|
||||
} else if l.peek::<kw::externref>() {
|
||||
parser.parse::<kw::externref>()?;
|
||||
Ok(TableElemType::Externref)
|
||||
} else if l.peek::<kw::exnref>() {
|
||||
parser.parse::<kw::exnref>()?;
|
||||
Ok(TableElemType::Exnref)
|
||||
|
@ -190,7 +223,7 @@ impl Peek for TableElemType {
|
|||
fn peek(cursor: Cursor<'_>) -> bool {
|
||||
kw::funcref::peek(cursor)
|
||||
|| kw::anyref::peek(cursor)
|
||||
|| kw::nullref::peek(cursor)
|
||||
|| kw::externref::peek(cursor)
|
||||
|| /* legacy */ kw::anyfunc::peek(cursor)
|
||||
|| kw::exnref::peek(cursor)
|
||||
}
|
||||
|
|
|
@ -250,24 +250,33 @@ impl<'a> Encode for ValType<'a> {
|
|||
ValType::V128 => e.push(0x7b),
|
||||
ValType::I8 => e.push(0x7a),
|
||||
ValType::I16 => e.push(0x79),
|
||||
ValType::Funcref => e.push(0x70),
|
||||
ValType::Anyref => e.push(0x6f),
|
||||
ValType::Nullref => e.push(0x6e),
|
||||
ValType::Ref(index) => {
|
||||
e.push(0x6d);
|
||||
index.encode(e);
|
||||
ValType::Ref(ty) => {
|
||||
ty.encode(e);
|
||||
}
|
||||
ValType::Optref(index) => {
|
||||
e.push(0x6c);
|
||||
index.encode(e);
|
||||
}
|
||||
ValType::Eqref => e.push(0x6b),
|
||||
ValType::I31ref => e.push(0x6a),
|
||||
ValType::Rtt(index) => {
|
||||
e.push(0x69);
|
||||
index.encode(e);
|
||||
}
|
||||
ValType::Exnref => e.push(0x68),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<'a> Encode for RefType<'a> {
|
||||
fn encode(&self, e: &mut Vec<u8>) {
|
||||
match self {
|
||||
RefType::Func => e.push(0x70),
|
||||
RefType::Extern => e.push(0x6f),
|
||||
RefType::Eq => e.push(0x6b),
|
||||
RefType::I31 => e.push(0x6a),
|
||||
RefType::Exn => e.push(0x68),
|
||||
RefType::Type(index) => {
|
||||
e.push(0x6d);
|
||||
index.encode(e);
|
||||
}
|
||||
RefType::OptType(index) => {
|
||||
e.push(0x6c);
|
||||
index.encode(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -329,10 +338,9 @@ impl Encode for TableType {
|
|||
impl Encode for TableElemType {
|
||||
fn encode(&self, e: &mut Vec<u8>) {
|
||||
match self {
|
||||
TableElemType::Funcref => ValType::Funcref.encode(e),
|
||||
TableElemType::Anyref => ValType::Anyref.encode(e),
|
||||
TableElemType::Nullref => ValType::Nullref.encode(e),
|
||||
TableElemType::Exnref => ValType::Exnref.encode(e),
|
||||
TableElemType::Funcref => RefType::Func.encode(e),
|
||||
TableElemType::Externref => RefType::Extern.encode(e),
|
||||
TableElemType::Exnref => RefType::Exn.encode(e),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -517,7 +525,7 @@ impl Encode for ElemPayload<'_> {
|
|||
fn encode(&self, e: &mut Vec<u8>) {
|
||||
match self {
|
||||
ElemPayload::Indices(v) => v.encode(e),
|
||||
ElemPayload::Exprs { exprs, .. } => {
|
||||
ElemPayload::Exprs { exprs, ty } => {
|
||||
exprs.len().encode(e);
|
||||
for idx in exprs {
|
||||
match idx {
|
||||
|
@ -525,7 +533,7 @@ impl Encode for ElemPayload<'_> {
|
|||
Instruction::RefFunc(*idx).encode(e);
|
||||
}
|
||||
None => {
|
||||
Instruction::RefNull.encode(e);
|
||||
Instruction::RefNull((*ty).into()).encode(e);
|
||||
}
|
||||
}
|
||||
Instruction::End(None).encode(e);
|
||||
|
|
|
@ -209,7 +209,20 @@ impl<'a> Resolver<'a> {
|
|||
|
||||
fn resolve_valtype(&self, ty: &mut ValType<'a>) -> Result<(), Error> {
|
||||
match ty {
|
||||
ValType::Ref(i) | ValType::Optref(i) | ValType::Rtt(i) => {
|
||||
ValType::Ref(ty) => self.resolve_reftype(ty)?,
|
||||
ValType::Rtt(i) => {
|
||||
self.ns(Ns::Type)
|
||||
.resolve(i)
|
||||
.map_err(|id| self.resolve_error(id, "type"))?;
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn resolve_reftype(&self, ty: &mut RefType<'a>) -> Result<(), Error> {
|
||||
match ty {
|
||||
RefType::Type(i) | RefType::OptType(i) => {
|
||||
self.ns(Ns::Type)
|
||||
.resolve(i)
|
||||
.map_err(|id| self.resolve_error(id, "type"))?;
|
||||
|
@ -514,7 +527,7 @@ impl<'a, 'b> ExprResolver<'a, 'b> {
|
|||
));
|
||||
}
|
||||
|
||||
Br(i) | BrIf(i) | BrOnCast(i) => self.resolve_label(i),
|
||||
Br(i) | BrIf(i) | BrOnCast(i) | BrOnNull(i) => self.resolve_label(i),
|
||||
|
||||
BrTable(i) => {
|
||||
for label in i.labels.iter_mut() {
|
||||
|
@ -548,6 +561,8 @@ impl<'a, 'b> ExprResolver<'a, 'b> {
|
|||
self.resolver.resolve_valtype(&mut s.to)
|
||||
}
|
||||
|
||||
RefNull(ty) | RefIsNull(ty) => self.resolver.resolve_reftype(ty),
|
||||
|
||||
_ => Ok(()),
|
||||
}
|
||||
}
|
||||
|
|
Различия файлов скрыты, потому что одна или несколько строк слишком длинны
|
@ -2,24 +2,15 @@
|
|||
# It is not intended for manual editing.
|
||||
[[package]]
|
||||
name = "anyhow"
|
||||
version = "1.0.26"
|
||||
version = "1.0.28"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "7825f6833612eb2414095684fcf6c635becf3ce97fe48cf6421321e93bfbd53c"
|
||||
checksum = "d9a60d744a80c30fcb657dfe2c1b22bcb3e814c1a1e3674f32bf5820b570fbff"
|
||||
|
||||
[[package]]
|
||||
name = "autocfg"
|
||||
version = "0.1.7"
|
||||
version = "1.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1d49d90015b3c36167a20fe2810c5cd875ad504b39cff3d4eae7977e6b7c1cb2"
|
||||
|
||||
[[package]]
|
||||
name = "c2-chacha"
|
||||
version = "0.2.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "214238caa1bf3a496ec3392968969cab8549f96ff30652c9e56885329315f6bb"
|
||||
dependencies = [
|
||||
"ppv-lite86",
|
||||
]
|
||||
checksum = "f8aac770f1885fd7e387acedd76065302551364496e46b3dd00860b2f8359b9d"
|
||||
|
||||
[[package]]
|
||||
name = "cfg-if"
|
||||
|
@ -29,24 +20,26 @@ checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822"
|
|||
|
||||
[[package]]
|
||||
name = "crossbeam-deque"
|
||||
version = "0.7.2"
|
||||
version = "0.7.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "c3aa945d63861bfe624b55d153a39684da1e8c0bc8fba932f7ee3a3c16cea3ca"
|
||||
checksum = "9f02af974daeee82218205558e51ec8768b48cf524bd01d550abe5573a608285"
|
||||
dependencies = [
|
||||
"crossbeam-epoch",
|
||||
"crossbeam-utils",
|
||||
"maybe-uninit",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "crossbeam-epoch"
|
||||
version = "0.8.0"
|
||||
version = "0.8.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5064ebdbf05ce3cb95e45c8b086f72263f4166b29b97f6baff7ef7fe047b55ac"
|
||||
checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"cfg-if",
|
||||
"crossbeam-utils",
|
||||
"lazy_static",
|
||||
"maybe-uninit",
|
||||
"memoffset",
|
||||
"scopeguard",
|
||||
]
|
||||
|
@ -63,9 +56,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "crossbeam-utils"
|
||||
version = "0.7.0"
|
||||
version = "0.7.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "ce446db02cdc3165b94ae73111e570793400d0794e46125cc4056c81cbb039f4"
|
||||
checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8"
|
||||
dependencies = [
|
||||
"autocfg",
|
||||
"cfg-if",
|
||||
|
@ -100,9 +93,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "hermit-abi"
|
||||
version = "0.1.7"
|
||||
version = "0.1.12"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "e2c55f143919fbc0bc77e427fe2d74cf23786d7c1875666f2fde3ac3c659bb67"
|
||||
checksum = "61565ff7aaace3525556587bd2dc31d4a07071957be715e63ce7b1eccf51a8f4"
|
||||
dependencies = [
|
||||
"libc",
|
||||
]
|
||||
|
@ -127,24 +120,30 @@ checksum = "3576a87f2ba00f6f106fdfcd16db1d698d648a26ad8e0573cad8537c3c362d2a"
|
|||
|
||||
[[package]]
|
||||
name = "libc"
|
||||
version = "0.2.67"
|
||||
version = "0.2.69"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "eb147597cdf94ed43ab7a9038716637d2d1bf2bc571da995d0028dec06bd3018"
|
||||
checksum = "99e85c08494b21a9054e7fe1374a732aeadaff3980b6990b94bfd3a70f690005"
|
||||
|
||||
[[package]]
|
||||
name = "maybe-uninit"
|
||||
version = "2.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00"
|
||||
|
||||
[[package]]
|
||||
name = "memoffset"
|
||||
version = "0.5.3"
|
||||
version = "0.5.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "75189eb85871ea5c2e2c15abbdd541185f63b408415e5051f5cac122d8c774b9"
|
||||
checksum = "b4fc2c02a7e374099d4ee95a193111f72d2110197fe200272371758f6c3643d8"
|
||||
dependencies = [
|
||||
"rustc_version",
|
||||
"autocfg",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "num_cpus"
|
||||
version = "1.12.0"
|
||||
version = "1.13.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "46203554f085ff89c235cd12f7075f3233af9b11ed7c9e16dfe2560d03313ce6"
|
||||
checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3"
|
||||
dependencies = [
|
||||
"hermit-abi",
|
||||
"libc",
|
||||
|
@ -171,11 +170,11 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "rand_chacha"
|
||||
version = "0.2.1"
|
||||
version = "0.2.2"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "03a2a90da8c7523f554344f921aa97283eadf6ac484a6d2a7d0212fa7f8d6853"
|
||||
checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402"
|
||||
dependencies = [
|
||||
"c2-chacha",
|
||||
"ppv-lite86",
|
||||
"rand_core",
|
||||
]
|
||||
|
||||
|
@ -236,20 +235,11 @@ dependencies = [
|
|||
"winapi",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rustc_version"
|
||||
version = "0.2.3"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a"
|
||||
dependencies = [
|
||||
"semver",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "ryu"
|
||||
version = "1.0.2"
|
||||
version = "1.0.4"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "bfa8506c1de11c9c4e4c38863ccbe02a305c8188e85a05a784c9e11e1c3910c8"
|
||||
checksum = "ed3d612bc64430efeb3f7ee6ef26d590dce0c43249217bddc62112540c7941e1"
|
||||
|
||||
[[package]]
|
||||
name = "scopeguard"
|
||||
|
@ -257,32 +247,17 @@ version = "1.1.0"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd"
|
||||
|
||||
[[package]]
|
||||
name = "semver"
|
||||
version = "0.9.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403"
|
||||
dependencies = [
|
||||
"semver-parser",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "semver-parser"
|
||||
version = "0.7.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
|
||||
|
||||
[[package]]
|
||||
name = "serde"
|
||||
version = "1.0.104"
|
||||
version = "1.0.106"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "414115f25f818d7dfccec8ee535d76949ae78584fc4f79a6f45a904bf8ab4449"
|
||||
checksum = "36df6ac6412072f67cf767ebbde4133a5b2e88e76dc6187fa7104cd16f783399"
|
||||
|
||||
[[package]]
|
||||
name = "serde_json"
|
||||
version = "1.0.48"
|
||||
version = "1.0.52"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "9371ade75d4c2d6cb154141b9752cf3781ec9c05e0e5cf35060e1e70ee7b9c25"
|
||||
checksum = "a7894c8ed05b7a3a279aeb79025fdec1d3158080b75b98a08faf2806bb799edd"
|
||||
dependencies = [
|
||||
"itoa",
|
||||
"ryu",
|
||||
|
@ -317,22 +292,22 @@ checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519"
|
|||
|
||||
[[package]]
|
||||
name = "wasmparser"
|
||||
version = "0.51.2"
|
||||
version = "0.52.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "a40d24f114a3f24b459ec292019220cff6388673b4a2c0a11483665b599ef15c"
|
||||
checksum = "7daff424bb0ec17d7dfb3f36e6d13a3882b2a5bebf997769ac853d5f950d6513"
|
||||
|
||||
[[package]]
|
||||
name = "wast"
|
||||
version = "13.0.0"
|
||||
version = "16.0.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "5b20abd8b4a26f7e0d4dd5e357e90a3d555ec190e94472c9b2b27c5b9777f9ae"
|
||||
checksum = "8564a0c8f4d468d71c2b263dd1f675fa2cac6e7331ff8379cbb88cb79fcef8d1"
|
||||
dependencies = [
|
||||
"leb128",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "wat"
|
||||
version = "1.0.14"
|
||||
version = "1.0.17"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"getopts",
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
[package]
|
||||
edition = "2018"
|
||||
name = "wat"
|
||||
version = "1.0.14"
|
||||
version = "1.0.17"
|
||||
authors = ["Alex Crichton <alex@alexcrichton.com>"]
|
||||
exclude = ["tests/wabt", "tests/testsuite"]
|
||||
description = "Rust parser for the WebAssembly Text format, WAT\n"
|
||||
|
@ -35,7 +35,7 @@ harness = false
|
|||
name = "parse-fail"
|
||||
harness = false
|
||||
[dependencies.wast]
|
||||
version = "13.0.0"
|
||||
version = "16.0.0"
|
||||
[dev-dependencies.anyhow]
|
||||
version = "1.0"
|
||||
|
||||
|
@ -52,4 +52,4 @@ version = "1.0"
|
|||
version = "3.1"
|
||||
|
||||
[dev-dependencies.wasmparser]
|
||||
version = "0.51"
|
||||
version = "0.52"
|
||||
|
|
|
@ -0,0 +1 @@
|
|||
(func br_on_null $s)
|
|
@ -0,0 +1,5 @@
|
|||
failed to find label named `$s`
|
||||
--> tests/parse-fail/bad-index.wat:1:18
|
||||
|
|
||||
1 | (func br_on_null $s)
|
||||
| ^
|
|
@ -21,6 +21,5 @@
|
|||
(func
|
||||
struct.narrow i32 f32
|
||||
struct.narrow anyref funcref
|
||||
struct.narrow anyref nullref
|
||||
)
|
||||
)
|
||||
|
|
|
@ -245,6 +245,7 @@ fn error_matches(error: &str, message: &str) -> bool {
|
|||
|| message == "unclosed annotation"
|
||||
|| message == "malformed annotation id"
|
||||
|| message == "alignment must be a power of two"
|
||||
|| message == "i32 constant out of range"
|
||||
{
|
||||
return error.contains("expected ")
|
||||
|| error.contains("constant out of range")
|
||||
|
@ -445,6 +446,10 @@ struct Wast2Json {
|
|||
}
|
||||
|
||||
fn wast2json(test: &Path) -> Option<Wast2Json> {
|
||||
// Right now wabt infinite loops on this test.
|
||||
if test.ends_with("testsuite/proposals/annotations/annotations.wast") {
|
||||
return None;
|
||||
}
|
||||
let td = tempfile::TempDir::new().unwrap();
|
||||
let result = Command::new("wast2json")
|
||||
.arg(test)
|
||||
|
@ -504,5 +509,23 @@ fn skip_test(test: &Path, contents: &str) -> bool {
|
|||
return true;
|
||||
}
|
||||
|
||||
// Waiting for wabt to remove subtyping from reference-types.
|
||||
if test
|
||||
.iter()
|
||||
.any(|x| x == "bulk-memory-operations" || x == "reference-types")
|
||||
|| test.ends_with("reference-types.txt")
|
||||
|| test.ends_with("all-features.txt")
|
||||
|| test.ends_with("all-features.txt")
|
||||
|| test.ends_with("bulk-memory-named.txt")
|
||||
|| test.ends_with("reference-types-named.txt")
|
||||
|| test.ends_with("table-grow.txt")
|
||||
|| test.ends_with("result-exnref.txt")
|
||||
|| test.ends_with("global-exnref.txt")
|
||||
|| test.ends_with("global.txt")
|
||||
|| test.ends_with("bulk-memory.txt")
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
false
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче