diff --git a/Cargo.lock b/Cargo.lock index 39a1dbccd1a5..9d8485988464 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -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", ] diff --git a/js/src/rust/Cargo.toml b/js/src/rust/Cargo.toml index 4094a71c15fe..a3d80e5896a1 100644 --- a/js/src/rust/Cargo.toml +++ b/js/src/rust/Cargo.toml @@ -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" } diff --git a/third_party/rust/wast/.cargo-checksum.json b/third_party/rust/wast/.cargo-checksum.json index f939b8d51bb0..982d04f8f35c 100644 --- a/third_party/rust/wast/.cargo-checksum.json +++ b/third_party/rust/wast/.cargo-checksum.json @@ -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"} \ No newline at end of file +{"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"} \ No newline at end of file diff --git a/third_party/rust/wast/Cargo.toml b/third_party/rust/wast/Cargo.toml index 6acdb5c5e5f3..b16cf5e952fa 100644 --- a/third_party/rust/wast/Cargo.toml +++ b/third_party/rust/wast/Cargo.toml @@ -13,7 +13,7 @@ [package] edition = "2018" name = "wast" -version = "13.0.0" +version = "16.0.0" authors = ["Alex Crichton "] description = "Customizable Rust parsers for the WebAssembly Text formats WAT and WAST\n" homepage = "https://github.com/bytecodealliance/wat/tree/master/crates/wast" diff --git a/third_party/rust/wast/src/ast/expr.rs b/third_party/rust/wast/src/ast/expr.rs index 5152314b5baa..1ed4bc758067 100644 --- a/third_party/rust/wast/src/ast/expr.rs +++ b/third_party/rust/wast/src/ast/expr.rs @@ -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", diff --git a/third_party/rust/wast/src/ast/mod.rs b/third_party/rust/wast/src/ast/mod.rs index 35eaf298c08b..07cd6dfb593f 100644 --- a/third_party/rust/wast/src/ast/mod.rs +++ b/third_party/rust/wast/src/ast/mod.rs @@ -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); diff --git a/third_party/rust/wast/src/ast/table.rs b/third_party/rust/wast/src/ast/table.rs index a59bb3a2aa09..eee4b24dbf34 100644 --- a/third_party/rust/wast/src/ast/table.rs +++ b/third_party/rust/wast/src/ast/table.rs @@ -208,12 +208,12 @@ impl<'a> ElemPayload<'a> { let func = parser.parens(|p| match p.parse::>()? { Some(_) => { if parser.peek::() { - 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>> { +fn parse_ref_func<'a>(parser: Parser<'a>, ty: ast::TableElemType) -> Result>> { let mut l = parser.lookahead1(); if l.peek::() { parser.parse::()?; + 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::() { parser.parse::()?; diff --git a/third_party/rust/wast/src/ast/token.rs b/third_party/rust/wast/src/ast/token.rs index f08047f88486..1247956adad0 100644 --- a/third_party/rust/wast/src/ast/token.rs +++ b/third_party/rust/wast/src/ast/token.rs @@ -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 diff --git a/third_party/rust/wast/src/ast/types.rs b/third_party/rust/wast/src/ast/types.rs index e0afc467e9bf..797792e6ad8c 100644 --- a/third_party/rust/wast/src/ast/types.rs +++ b/third_party/rust/wast/src/ast/types.rs @@ -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::() { parser.parse::()?; - Ok(ValType::Funcref) + Ok(ValType::Ref(RefType::Func)) } else if l.peek::() { parser.parse::()?; - Ok(ValType::Funcref) + Ok(ValType::Ref(RefType::Func)) + } else if l.peek::() { + parser.parse::()?; + Ok(ValType::Ref(RefType::Extern)) } else if l.peek::() { + // Parse `anyref` as an alias of `externref` until all tests are + // ported to use the new name parser.parse::()?; - Ok(ValType::Anyref) - } else if l.peek::() { - parser.parse::()?; - Ok(ValType::Nullref) + Ok(ValType::Ref(RefType::Extern)) } else if l.peek::() { parser.parens(|p| { let mut l = parser.lookahead1(); if l.peek::() { p.parse::()?; - - let mut l = parser.lookahead1(); - if l.peek::() { - parser.parse::()?; - Ok(ValType::Funcref) - } else if l.peek::() { - parser.parse::()?; - Ok(ValType::Anyref) - } else if l.peek::() { - parser.parse::()?; - Ok(ValType::Nullref) - } else if l.peek::() { - parser.parse::()?; - Ok(ValType::Exnref) - } else if l.peek::() { - parser.parse::()?; - Ok(ValType::Eqref) - } else if l.peek::() { - parser.parse::()?; - Ok(ValType::I31ref) - } else if l.peek::() { - parser.parse::()?; - Ok(ValType::Optref(parser.parse()?)) - } else if l.peek::() { - Ok(ValType::Ref(parser.parse()?)) - } else { - Err(l.error()) - } + Ok(ValType::Ref(p.parse()?)) } else if l.peek::() { p.parse::()?; - Ok(ValType::Optref(parser.parse()?)) + Ok(ValType::Ref(RefType::OptType(parser.parse()?))) } else if l.peek::() { p.parse::()?; Ok(ValType::Rtt(parser.parse()?)) @@ -104,13 +72,80 @@ impl<'a> Parse<'a> for ValType<'a> { }) } else if l.peek::() { parser.parse::()?; - Ok(ValType::Exnref) + Ok(ValType::Ref(RefType::Exn)) } else if l.peek::() { parser.parse::()?; - Ok(ValType::Eqref) + Ok(ValType::Ref(RefType::Eq)) } else if l.peek::() { parser.parse::()?; - 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 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 { + let mut l = parser.lookahead1(); + if l.peek::() { + parser.parse::()?; + Ok(RefType::Func) + } else if l.peek::() { + parser.parse::()?; + Ok(RefType::Extern) + } else if l.peek::() { + parser.parse::()?; + Ok(RefType::Exn) + } else if l.peek::() { + parser.parse::()?; + Ok(RefType::Eq) + } else if l.peek::() { + parser.parse::()?; + Ok(RefType::I31) + } else if l.peek::() { + parser.parse::()?; + Ok(RefType::OptType(parser.parse()?)) + } else if l.peek::() { + 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::()?; Ok(TableElemType::Funcref) } else if l.peek::() { + // Parse `anyref` as an alias of `externref` until all tests are + // ported to use the new name parser.parse::()?; - Ok(TableElemType::Anyref) - } else if l.peek::() { - parser.parse::()?; - Ok(TableElemType::Nullref) + Ok(TableElemType::Externref) + } else if l.peek::() { + parser.parse::()?; + Ok(TableElemType::Externref) } else if l.peek::() { parser.parse::()?; 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) } diff --git a/third_party/rust/wast/src/binary.rs b/third_party/rust/wast/src/binary.rs index e68890fd6ee0..96add442e78c 100644 --- a/third_party/rust/wast/src/binary.rs +++ b/third_party/rust/wast/src/binary.rs @@ -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) { + 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) { 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) { 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); diff --git a/third_party/rust/wast/src/resolve/names.rs b/third_party/rust/wast/src/resolve/names.rs index 71d6630e2c08..19acef7cc325 100644 --- a/third_party/rust/wast/src/resolve/names.rs +++ b/third_party/rust/wast/src/resolve/names.rs @@ -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(()), } } diff --git a/third_party/rust/wat/.cargo-checksum.json b/third_party/rust/wat/.cargo-checksum.json index 6855729d4b6a..251c465c360f 100644 --- a/third_party/rust/wat/.cargo-checksum.json +++ b/third_party/rust/wat/.cargo-checksum.json @@ -1 +1 @@ -{"files":{"CODE_OF_CONDUCT.md":"a13aaaf393818bd91207c618724d3fb74944ca5161201822a84af951bcf655ef","Cargo.lock":"67c1d12a8975638349f6d5e82fb23f0d552f0c5b8297c4f3516e440603f4e37d","Cargo.toml":"23f018a7bae5faab0c6ec7aa1bcd88c32206248825428ddd507da0db5daa47fb","LICENSE":"268872b9816f90fd8e85db5a28d33f8150ebb8dd016653fb39ef1f94f2686bc5","ORG_CODE_OF_CONDUCT.md":"59c4c4435538496193cd73e89b2cd971d1011dba573158cf108abe6af6603e6b","README.md":"142745665518b56481bc91d609db9f055526b78bd88af85a969910b2089a67ab","SECURITY.md":"4d75afb09dd28eb5982e3a1f768ee398d90204669ceef3240a16b31dcf04148a","examples/wat2wasm.rs":"732f98472727c7a76bf08e0a9984032925b556cc357fbcd24007e00b9b80fb13","src/lib.rs":"03652351228b7f7a520f4e7f1e689fa34a37b8e5e0fc8367a167cc893cdbc449","tests/annotations.rs":"e7532c26a8671391576da77b13fb47d756a785a66945b1bc9b5621d5b6d7f2fc","tests/comments.rs":"0513f64a2094dfa422ce30b0e6ff2d266fd240be54be702120558ff62fd9e703","tests/parse-fail.rs":"0f1d5dffd1e6145105571222096703c89c4f4a46e25c848faa730f731155ea1c","tests/parse-fail/bad-name.wat":"e5ff5d410007779a0de6609ea4cc693f0e603d36a106b8f5098c1980dd9f8124","tests/parse-fail/bad-name.wat.err":"fb5638476c1b85d9d1919e3dbcb0f16f82d088a4a22d4a0c186d7b8ba6e1902b","tests/parse-fail/bad-name2.wat":"5a6a4d0c19e5f2e48d7cebf361aca9b9000b7ef0c652997b5bd0ffaadbd2ca8a","tests/parse-fail/bad-name2.wat.err":"129707cce45f1e3cfb3e2ca5c702182e16ca5eeb2dbb2edd0710b004a8e194a5","tests/parse-fail/bad-name3.wat":"c19133d738cc84e9174301f27d4050c216bda81c7e9918d03ac792b088f24a05","tests/parse-fail/bad-name3.wat.err":"84ea63d40a619a0782ec6e94fce63921188ab87b1c3875eacae0a371144ed83a","tests/parse-fail/block1.wat":"91e74b5c3b43be692e7a6ae74fbfa674c4b6197299eb61338c4eccf282b18f17","tests/parse-fail/block1.wat.err":"40a083ae496b41dee7002cc6a664c5db0c5e4d904ae03b815773a769c4493fca","tests/parse-fail/block2.wat":"a8c07b4c09d51f10a8ffdf19806586022552398701cd90eb6d09816d45df06e5","tests/parse-fail/block2.wat.err":"33c842ec5dd0f2fdd3a9ce8187dd98b45ceee48c12810802af809d05b9cd25e9","tests/parse-fail/block3.wat":"29739abfbabd7c55f00ddfbbb9ebd818b4a114ef2336d50514f0842f7e075905","tests/parse-fail/block3.wat.err":"fc667ae2e71a260f62a3c7393bc97272e7c0ff38b17594f4370847b8a5019060","tests/parse-fail/inline1.wat":"4e9767d67207aace2ac5e6f63a30e7510e4aa245ba35420539509e2254470272","tests/parse-fail/inline1.wat.err":"0143017a9825e518baa6009bae2c8d63520051dedd3437705bbe36b038a57f41","tests/parse-fail/string1.wat":"620d46d585ce94b382b5fde628c1399f3e562014b7a44af46e92f7bd045ca86e","tests/parse-fail/string1.wat.err":"fc53f3a1c4a65d8f25e5af51dec7699f45cecba114ca9c7871781bc70f664320","tests/parse-fail/string10.wat":"f7409dd45e153a1b11cb23e38f4ed87da12bedde38f8f0ccfe91037b0a4d97bd","tests/parse-fail/string10.wat.err":"ce677db5e37e0ed81ca357ed6b5edb21d85c27303ee194855bea7a88457efb6a","tests/parse-fail/string11.wat":"f6e0400b8c6a2014efa1ac676c567e140d8f86b5f4d5129773e6d67af537b615","tests/parse-fail/string11.wat.err":"4c6a550d29eda38a4e1bf7a589596f11655dc779479d7b8d466cfc53f815a742","tests/parse-fail/string12.wat":"23e30070eef22271651cce096a801fc4f79f3c37343c88bb8d2fc99b32d3b8b9","tests/parse-fail/string12.wat.err":"6e9a2ec052068bb234da56404087c03a66705846d82c095605530243fdce38f3","tests/parse-fail/string13.wat":"81a305b981159ee10e140749ea3220c9edaaff53605e63c21995de47382b5faf","tests/parse-fail/string13.wat.err":"ac0c51a1964abc1a1104858d16c124a4e5495705bc3adc0ab123cd0ba8ab9ee9","tests/parse-fail/string14.wat":"c45c2cc9f7afbfbd4be8e513106d22f7e5e817091448576c6bdf0701b81d95dd","tests/parse-fail/string14.wat.err":"cc3f6b0c093d878373ab29726b8ac0620b982a4842ec521b8661e864eed1ef05","tests/parse-fail/string15.wat":"b5e0d5ade40de53b2d767a132e28376bb8c7a6f6238c4d8c248ae717c41d7f1f","tests/parse-fail/string15.wat.err":"6549a0575bc228c2e12ec197e40bb5fdc665325a0242ca8a62e7a8dc5de6aee8","tests/parse-fail/string16.wat":"38c3688cee80a9d089d239aa06eb1d27c5364ad2bd270aca57d05997c20aa682","tests/parse-fail/string16.wat.err":"4274b3bbe4df4cf0373619b1fcd082d0c802990817d2aca26ed885168c80e489","tests/parse-fail/string2.wat":"1172964aed31537b8c466d1f045f3e756926e7b221f80b2aff4a9a6721ea0beb","tests/parse-fail/string2.wat.err":"4618d3b20a78a077337eb5d6cae14ac39d9853762f011fbd23cff8921618dbde","tests/parse-fail/string3.wat":"07e0fbcd6270c1db100917c151ee4ac3f935e4ee1b27bce3c453b22b4b74f4d6","tests/parse-fail/string3.wat.err":"84833a2f45216097a871ae88beb515ebeb8dab5d7c007ec98f1fcf1b20f7558d","tests/parse-fail/string4.wat":"c970da2051b0613bdd1de4664f10424e14f2ebabe604175d4fb9b763b37af577","tests/parse-fail/string4.wat.err":"406706594d305c560fabd66417ad4fc276939990b5e701bd9d13fc223d207219","tests/parse-fail/string5.wat":"386cf314bb05acdaaabdf4da1caf140167271a26bd08bf34c3a7427d4bc4431f","tests/parse-fail/string5.wat.err":"1e56b44a23a37b2b2ad05aa9dd7e1e18191b5cc22151f93bbcf9d618779a57bd","tests/parse-fail/string6.wat":"8f1fe2825ff96f2acee9130a7721f86fcc93c221baa9411bf1fb6f0870d38ccb","tests/parse-fail/string6.wat.err":"d55dfd84d94e893f167ae73b7a080aefb2bfb05cc8a1ec201c4d3066fb8549b4","tests/parse-fail/string7.wat":"b12f8c75313d7f834489d3c353422f90bc945b37139586446eda82e334a97cde","tests/parse-fail/string7.wat.err":"4cee0ca61992c249dd0faaf2529a073cf8deeb36111a3f69b43695e5682560a2","tests/parse-fail/string8.wat":"4c2e0e1f883bb4e8cba9313497ed792130e5848e62bde7716102788d7467be10","tests/parse-fail/string8.wat.err":"840c6def7c60dd7c2b7261549cab435ba78c9b3a937adf6d5d9595ff8af01c91","tests/parse-fail/string9.wat":"2b7670caed2b0688d535de6e4e416f35fa717cfbe096a6cc764a669085c8f52f","tests/parse-fail/string9.wat.err":"37b5a9c3af9631500f31f9e5e3efa821b8d96063c57d60fd01df6be6a5c323e1","tests/parse-fail/unbalanced.wat":"f664fbef53a0308f864ba496d38044eb90482636e32586512939d4930729f3fe","tests/parse-fail/unbalanced.wat.err":"aba579f7b836856e69afe05da8328aabe0643d94e369898e686aa7bb0b07e9c9","tests/recursive.rs":"ad8a2b07bf955121a7c9e326ed35f9b2bc56b440c8cc0bbde24d423a79945c1a","tests/regression/atomics.wat":"a108dfdf4e9bb2354d1e7fedcd5400895b83d61e2a490822126b052f817bb181","tests/regression/blockty.wat":"0065feef652cb61ac373872087e47f814a41123e186c330e4e528bd826aac65c","tests/regression/comments.wat":"4f53ed7a57032c2a46c3500fa67f67ee99fe11356ea4da7cbd5fb5f0622a87b7","tests/regression/dummy.wat":"3584af5e1ab0b1da09b5326237be4b178de0bb388d6093efd94e6aec56c20a74","tests/regression/duplicate.wast":"4165aa6a0b63f8da9711d8c87b0050bec7782c1a4d2458be650da62d97d95af6","tests/regression/empty.wast":"f90a763ae591c7a36e6c196f3590f256893131c4bb01dd2d72be71955e0101de","tests/regression/exnref.wat":"fb9db7f161520765ffba42e1d46ba82b02c1e4d3d806ab6604c121b56fd55b4c","tests/regression/float1.wat":"ac6d63cafac2fb07350b12cf9f51c103befd45bcad533fe219a243cb85bdcc33","tests/regression/fuzz1.wat":"040b9ab7057921fbd10f92ce19043127308a91d68a8bb36ab2693eb63e416127","tests/regression/gc-ref-global-import.wat":"119d5ce3b368c87fd60285afd05ecee0ef0708f431680ab27d07e4816facf9ca","tests/regression/gc-ref.wat":"e43018a372af39ee8fdab2b138521f99d9d2e20e471ce65162a4675cb798625e","tests/regression/gc-struct.wat":"0435930a8c0f32c7ca86c9729170c55f0d8eb16d8375c512acb6fc1c210f26b9","tests/regression/invalid-ty.wat":"c39a6983fbb6bb4a1d1707c9090b21722a045971d413061be1c8303fe08822a2","tests/regression/invalid-ty2.wat":"9ad7058686938288cc6eee992d1dc7297ef6bcfd5df4114b85e9a2538e80cf05","tests/regression/table-copy.wat":"21499c333dff7133939891ebd0a4c80cc9600e269f3e46b9045b653c95a650a7","tests/regression/table-init.wat":"5f63eba7e9459a58a7a2af48121d137747eefe22457bafa00c87c36772597a2d","tests/regression/table-opt-idx.wat":"de12f59cdb7e843bb08b6be3a5f8649d59d68eef9389650580ef607ebe710ef8","tests/wabt.rs":"f10a25235d3bc01256cb7c71787b9af1fab5dd7e9a8a76dc69372be3cc0c6421"},"package":"51a615830ee3e7200b505c441fec09aac2f114deae69df52f215cb828ba112c4"} \ No newline at end of file +{"files":{"CODE_OF_CONDUCT.md":"a13aaaf393818bd91207c618724d3fb74944ca5161201822a84af951bcf655ef","Cargo.lock":"a90f917a3245a75bf71fd42be453f690d6bb81d12826a45475d4f34b5e26f03a","Cargo.toml":"5c80fef0f05012288e5db447dc31208c89ac6a098a8cb3cffa635f3a92027a94","LICENSE":"268872b9816f90fd8e85db5a28d33f8150ebb8dd016653fb39ef1f94f2686bc5","ORG_CODE_OF_CONDUCT.md":"59c4c4435538496193cd73e89b2cd971d1011dba573158cf108abe6af6603e6b","README.md":"142745665518b56481bc91d609db9f055526b78bd88af85a969910b2089a67ab","SECURITY.md":"4d75afb09dd28eb5982e3a1f768ee398d90204669ceef3240a16b31dcf04148a","examples/wat2wasm.rs":"732f98472727c7a76bf08e0a9984032925b556cc357fbcd24007e00b9b80fb13","src/lib.rs":"03652351228b7f7a520f4e7f1e689fa34a37b8e5e0fc8367a167cc893cdbc449","tests/annotations.rs":"e7532c26a8671391576da77b13fb47d756a785a66945b1bc9b5621d5b6d7f2fc","tests/comments.rs":"0513f64a2094dfa422ce30b0e6ff2d266fd240be54be702120558ff62fd9e703","tests/parse-fail.rs":"0f1d5dffd1e6145105571222096703c89c4f4a46e25c848faa730f731155ea1c","tests/parse-fail/bad-index.wat":"d21489daeec3a35327dcc9e2ba2d0acdd05f4aeaff2272cca608fda4d2338497","tests/parse-fail/bad-index.wat.err":"b66851e048a20240c3dc4c2a1a991436daf688a62fa94ff8f63a908fcaee8a9a","tests/parse-fail/bad-name.wat":"e5ff5d410007779a0de6609ea4cc693f0e603d36a106b8f5098c1980dd9f8124","tests/parse-fail/bad-name.wat.err":"fb5638476c1b85d9d1919e3dbcb0f16f82d088a4a22d4a0c186d7b8ba6e1902b","tests/parse-fail/bad-name2.wat":"5a6a4d0c19e5f2e48d7cebf361aca9b9000b7ef0c652997b5bd0ffaadbd2ca8a","tests/parse-fail/bad-name2.wat.err":"129707cce45f1e3cfb3e2ca5c702182e16ca5eeb2dbb2edd0710b004a8e194a5","tests/parse-fail/bad-name3.wat":"c19133d738cc84e9174301f27d4050c216bda81c7e9918d03ac792b088f24a05","tests/parse-fail/bad-name3.wat.err":"84ea63d40a619a0782ec6e94fce63921188ab87b1c3875eacae0a371144ed83a","tests/parse-fail/block1.wat":"91e74b5c3b43be692e7a6ae74fbfa674c4b6197299eb61338c4eccf282b18f17","tests/parse-fail/block1.wat.err":"40a083ae496b41dee7002cc6a664c5db0c5e4d904ae03b815773a769c4493fca","tests/parse-fail/block2.wat":"a8c07b4c09d51f10a8ffdf19806586022552398701cd90eb6d09816d45df06e5","tests/parse-fail/block2.wat.err":"33c842ec5dd0f2fdd3a9ce8187dd98b45ceee48c12810802af809d05b9cd25e9","tests/parse-fail/block3.wat":"29739abfbabd7c55f00ddfbbb9ebd818b4a114ef2336d50514f0842f7e075905","tests/parse-fail/block3.wat.err":"fc667ae2e71a260f62a3c7393bc97272e7c0ff38b17594f4370847b8a5019060","tests/parse-fail/inline1.wat":"4e9767d67207aace2ac5e6f63a30e7510e4aa245ba35420539509e2254470272","tests/parse-fail/inline1.wat.err":"0143017a9825e518baa6009bae2c8d63520051dedd3437705bbe36b038a57f41","tests/parse-fail/string1.wat":"620d46d585ce94b382b5fde628c1399f3e562014b7a44af46e92f7bd045ca86e","tests/parse-fail/string1.wat.err":"fc53f3a1c4a65d8f25e5af51dec7699f45cecba114ca9c7871781bc70f664320","tests/parse-fail/string10.wat":"f7409dd45e153a1b11cb23e38f4ed87da12bedde38f8f0ccfe91037b0a4d97bd","tests/parse-fail/string10.wat.err":"ce677db5e37e0ed81ca357ed6b5edb21d85c27303ee194855bea7a88457efb6a","tests/parse-fail/string11.wat":"f6e0400b8c6a2014efa1ac676c567e140d8f86b5f4d5129773e6d67af537b615","tests/parse-fail/string11.wat.err":"4c6a550d29eda38a4e1bf7a589596f11655dc779479d7b8d466cfc53f815a742","tests/parse-fail/string12.wat":"23e30070eef22271651cce096a801fc4f79f3c37343c88bb8d2fc99b32d3b8b9","tests/parse-fail/string12.wat.err":"6e9a2ec052068bb234da56404087c03a66705846d82c095605530243fdce38f3","tests/parse-fail/string13.wat":"81a305b981159ee10e140749ea3220c9edaaff53605e63c21995de47382b5faf","tests/parse-fail/string13.wat.err":"ac0c51a1964abc1a1104858d16c124a4e5495705bc3adc0ab123cd0ba8ab9ee9","tests/parse-fail/string14.wat":"c45c2cc9f7afbfbd4be8e513106d22f7e5e817091448576c6bdf0701b81d95dd","tests/parse-fail/string14.wat.err":"cc3f6b0c093d878373ab29726b8ac0620b982a4842ec521b8661e864eed1ef05","tests/parse-fail/string15.wat":"b5e0d5ade40de53b2d767a132e28376bb8c7a6f6238c4d8c248ae717c41d7f1f","tests/parse-fail/string15.wat.err":"6549a0575bc228c2e12ec197e40bb5fdc665325a0242ca8a62e7a8dc5de6aee8","tests/parse-fail/string16.wat":"38c3688cee80a9d089d239aa06eb1d27c5364ad2bd270aca57d05997c20aa682","tests/parse-fail/string16.wat.err":"4274b3bbe4df4cf0373619b1fcd082d0c802990817d2aca26ed885168c80e489","tests/parse-fail/string2.wat":"1172964aed31537b8c466d1f045f3e756926e7b221f80b2aff4a9a6721ea0beb","tests/parse-fail/string2.wat.err":"4618d3b20a78a077337eb5d6cae14ac39d9853762f011fbd23cff8921618dbde","tests/parse-fail/string3.wat":"07e0fbcd6270c1db100917c151ee4ac3f935e4ee1b27bce3c453b22b4b74f4d6","tests/parse-fail/string3.wat.err":"84833a2f45216097a871ae88beb515ebeb8dab5d7c007ec98f1fcf1b20f7558d","tests/parse-fail/string4.wat":"c970da2051b0613bdd1de4664f10424e14f2ebabe604175d4fb9b763b37af577","tests/parse-fail/string4.wat.err":"406706594d305c560fabd66417ad4fc276939990b5e701bd9d13fc223d207219","tests/parse-fail/string5.wat":"386cf314bb05acdaaabdf4da1caf140167271a26bd08bf34c3a7427d4bc4431f","tests/parse-fail/string5.wat.err":"1e56b44a23a37b2b2ad05aa9dd7e1e18191b5cc22151f93bbcf9d618779a57bd","tests/parse-fail/string6.wat":"8f1fe2825ff96f2acee9130a7721f86fcc93c221baa9411bf1fb6f0870d38ccb","tests/parse-fail/string6.wat.err":"d55dfd84d94e893f167ae73b7a080aefb2bfb05cc8a1ec201c4d3066fb8549b4","tests/parse-fail/string7.wat":"b12f8c75313d7f834489d3c353422f90bc945b37139586446eda82e334a97cde","tests/parse-fail/string7.wat.err":"4cee0ca61992c249dd0faaf2529a073cf8deeb36111a3f69b43695e5682560a2","tests/parse-fail/string8.wat":"4c2e0e1f883bb4e8cba9313497ed792130e5848e62bde7716102788d7467be10","tests/parse-fail/string8.wat.err":"840c6def7c60dd7c2b7261549cab435ba78c9b3a937adf6d5d9595ff8af01c91","tests/parse-fail/string9.wat":"2b7670caed2b0688d535de6e4e416f35fa717cfbe096a6cc764a669085c8f52f","tests/parse-fail/string9.wat.err":"37b5a9c3af9631500f31f9e5e3efa821b8d96063c57d60fd01df6be6a5c323e1","tests/parse-fail/unbalanced.wat":"f664fbef53a0308f864ba496d38044eb90482636e32586512939d4930729f3fe","tests/parse-fail/unbalanced.wat.err":"aba579f7b836856e69afe05da8328aabe0643d94e369898e686aa7bb0b07e9c9","tests/recursive.rs":"ad8a2b07bf955121a7c9e326ed35f9b2bc56b440c8cc0bbde24d423a79945c1a","tests/regression/atomics.wat":"a108dfdf4e9bb2354d1e7fedcd5400895b83d61e2a490822126b052f817bb181","tests/regression/blockty.wat":"0065feef652cb61ac373872087e47f814a41123e186c330e4e528bd826aac65c","tests/regression/comments.wat":"4f53ed7a57032c2a46c3500fa67f67ee99fe11356ea4da7cbd5fb5f0622a87b7","tests/regression/dummy.wat":"3584af5e1ab0b1da09b5326237be4b178de0bb388d6093efd94e6aec56c20a74","tests/regression/duplicate.wast":"4165aa6a0b63f8da9711d8c87b0050bec7782c1a4d2458be650da62d97d95af6","tests/regression/empty.wast":"f90a763ae591c7a36e6c196f3590f256893131c4bb01dd2d72be71955e0101de","tests/regression/exnref.wat":"fb9db7f161520765ffba42e1d46ba82b02c1e4d3d806ab6604c121b56fd55b4c","tests/regression/float1.wat":"ac6d63cafac2fb07350b12cf9f51c103befd45bcad533fe219a243cb85bdcc33","tests/regression/fuzz1.wat":"040b9ab7057921fbd10f92ce19043127308a91d68a8bb36ab2693eb63e416127","tests/regression/gc-ref-global-import.wat":"119d5ce3b368c87fd60285afd05ecee0ef0708f431680ab27d07e4816facf9ca","tests/regression/gc-ref.wat":"e43018a372af39ee8fdab2b138521f99d9d2e20e471ce65162a4675cb798625e","tests/regression/gc-struct.wat":"f35201997ad2b2c445879fab551c1639b65a25430494ca71ca9c9bde1c819dc2","tests/regression/invalid-ty.wat":"c39a6983fbb6bb4a1d1707c9090b21722a045971d413061be1c8303fe08822a2","tests/regression/invalid-ty2.wat":"9ad7058686938288cc6eee992d1dc7297ef6bcfd5df4114b85e9a2538e80cf05","tests/regression/table-copy.wat":"21499c333dff7133939891ebd0a4c80cc9600e269f3e46b9045b653c95a650a7","tests/regression/table-init.wat":"5f63eba7e9459a58a7a2af48121d137747eefe22457bafa00c87c36772597a2d","tests/regression/table-opt-idx.wat":"de12f59cdb7e843bb08b6be3a5f8649d59d68eef9389650580ef607ebe710ef8","tests/wabt.rs":"0f120c59d987b119cbaf05f4532590a8b15c1d2f607c4b37f8579febf70e6e9f"},"package":"a02463c6661a0d5a089d795e2e49ab34594b41265e8bd5ff3e0810e2a1f84222"} \ No newline at end of file diff --git a/third_party/rust/wat/Cargo.lock b/third_party/rust/wat/Cargo.lock index 607970845525..96c58220ce3b 100644 --- a/third_party/rust/wat/Cargo.lock +++ b/third_party/rust/wat/Cargo.lock @@ -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", diff --git a/third_party/rust/wat/Cargo.toml b/third_party/rust/wat/Cargo.toml index 6cf700e67aca..022723084b5a 100644 --- a/third_party/rust/wat/Cargo.toml +++ b/third_party/rust/wat/Cargo.toml @@ -13,7 +13,7 @@ [package] edition = "2018" name = "wat" -version = "1.0.14" +version = "1.0.17" authors = ["Alex Crichton "] 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" diff --git a/third_party/rust/wat/tests/parse-fail/bad-index.wat b/third_party/rust/wat/tests/parse-fail/bad-index.wat new file mode 100644 index 000000000000..34262539a59b --- /dev/null +++ b/third_party/rust/wat/tests/parse-fail/bad-index.wat @@ -0,0 +1 @@ +(func br_on_null $s) diff --git a/third_party/rust/wat/tests/parse-fail/bad-index.wat.err b/third_party/rust/wat/tests/parse-fail/bad-index.wat.err new file mode 100644 index 000000000000..717d46017be7 --- /dev/null +++ b/third_party/rust/wat/tests/parse-fail/bad-index.wat.err @@ -0,0 +1,5 @@ +failed to find label named `$s` + --> tests/parse-fail/bad-index.wat:1:18 + | + 1 | (func br_on_null $s) + | ^ diff --git a/third_party/rust/wat/tests/regression/gc-struct.wat b/third_party/rust/wat/tests/regression/gc-struct.wat index 0c3bf433dc17..9aec0cce2987 100644 --- a/third_party/rust/wat/tests/regression/gc-struct.wat +++ b/third_party/rust/wat/tests/regression/gc-struct.wat @@ -21,6 +21,5 @@ (func struct.narrow i32 f32 struct.narrow anyref funcref - struct.narrow anyref nullref ) ) diff --git a/third_party/rust/wat/tests/wabt.rs b/third_party/rust/wat/tests/wabt.rs index 786660520683..2de20fd5bb08 100644 --- a/third_party/rust/wat/tests/wabt.rs +++ b/third_party/rust/wat/tests/wabt.rs @@ -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 { + // 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 }