diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 12:41:41 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-05-04 12:41:41 +0000 |
commit | 10ee2acdd26a7f1298c6f6d6b7af9b469fe29b87 (patch) | |
tree | bdffd5d80c26cf4a7a518281a204be1ace85b4c1 /vendor/wasm-bindgen-macro/ui-tests | |
parent | Releasing progress-linux version 1.70.0+dfsg1-9~progress7.99u1. (diff) | |
download | rustc-10ee2acdd26a7f1298c6f6d6b7af9b469fe29b87.tar.xz rustc-10ee2acdd26a7f1298c6f6d6b7af9b469fe29b87.zip |
Merging upstream version 1.70.0+dfsg2.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/wasm-bindgen-macro/ui-tests')
38 files changed, 940 insertions, 0 deletions
diff --git a/vendor/wasm-bindgen-macro/ui-tests/async-errors.rs b/vendor/wasm-bindgen-macro/ui-tests/async-errors.rs new file mode 100644 index 000000000..22c5107e4 --- /dev/null +++ b/vendor/wasm-bindgen-macro/ui-tests/async-errors.rs @@ -0,0 +1,40 @@ +#![allow(unreachable_code)] +use wasm_bindgen::prelude::*; + +#[wasm_bindgen] +pub struct MyType; + +#[wasm_bindgen] +pub async fn good1() { loop {} } +#[wasm_bindgen] +pub async fn good2() -> JsValue { loop {} } +#[wasm_bindgen] +pub async fn good3() -> u32 { loop {} } +#[wasm_bindgen] +pub async fn good4() -> MyType { loop {} } +#[wasm_bindgen] +pub async fn good5() -> Result<(), JsValue> { loop {} } +#[wasm_bindgen] +pub async fn good6() -> Result<JsValue, JsValue> { loop {} } +#[wasm_bindgen] +pub async fn good7() -> Result<u32, JsValue> { loop {} } +#[wasm_bindgen] +pub async fn good8() -> Result<MyType, JsValue> { loop {} } +#[wasm_bindgen] +pub async fn good9() -> Result<MyType, u32> { loop {} } +#[wasm_bindgen] +pub async fn good10() -> Result<MyType, MyType> { loop {} } + +pub struct BadType; + +#[wasm_bindgen] +pub async fn bad1() -> Result<(), ()> { loop {} } +#[wasm_bindgen] +pub async fn bad2() -> Result<(), BadType> { loop {} } +#[wasm_bindgen] +pub async fn bad3() -> BadType { loop {} } +#[wasm_bindgen] +pub async fn bad4() -> Result<BadType, JsValue> { loop {} } + + +fn main() {} diff --git a/vendor/wasm-bindgen-macro/ui-tests/async-errors.stderr b/vendor/wasm-bindgen-macro/ui-tests/async-errors.stderr new file mode 100644 index 000000000..492492a18 --- /dev/null +++ b/vendor/wasm-bindgen-macro/ui-tests/async-errors.stderr @@ -0,0 +1,68 @@ +error[E0277]: the trait bound `Result<(), ()>: IntoJsResult` is not satisfied + --> ui-tests/async-errors.rs:30:1 + | +30 | #[wasm_bindgen] + | ^^^^^^^^^^^^^^^ the trait `IntoJsResult` is not implemented for `Result<(), ()>` + | + = help: the following implementations were found: + <Result<(), E> as IntoJsResult> + <Result<T, E> as IntoJsResult> +note: required by `into_js_result` + --> $WORKSPACE/src/lib.rs + | + | fn into_js_result(self) -> Result<JsValue, JsValue>; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + = note: this error originates in the attribute macro `wasm_bindgen` (in Nightly builds, run with -Z macro-backtrace for more info) + +error[E0277]: the trait bound `Result<(), BadType>: IntoJsResult` is not satisfied + --> ui-tests/async-errors.rs:32:1 + | +32 | #[wasm_bindgen] + | ^^^^^^^^^^^^^^^ the trait `IntoJsResult` is not implemented for `Result<(), BadType>` + | + = help: the following implementations were found: + <Result<(), E> as IntoJsResult> + <Result<T, E> as IntoJsResult> +note: required by `into_js_result` + --> $WORKSPACE/src/lib.rs + | + | fn into_js_result(self) -> Result<JsValue, JsValue>; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + = note: this error originates in the attribute macro `wasm_bindgen` (in Nightly builds, run with -Z macro-backtrace for more info) + +error[E0277]: the trait bound `wasm_bindgen::JsValue: From<BadType>` is not satisfied + --> ui-tests/async-errors.rs:34:1 + | +34 | #[wasm_bindgen] + | ^^^^^^^^^^^^^^^ the trait `From<BadType>` is not implemented for `wasm_bindgen::JsValue` + | + = help: the following implementations were found: + <wasm_bindgen::JsValue as From<&'a String>> + <wasm_bindgen::JsValue as From<&'a T>> + <wasm_bindgen::JsValue as From<&'a str>> + <wasm_bindgen::JsValue as From<JsError>> + and 73 others + = note: required because of the requirements on the impl of `Into<wasm_bindgen::JsValue>` for `BadType` + = note: required because of the requirements on the impl of `IntoJsResult` for `BadType` +note: required by `into_js_result` + --> $WORKSPACE/src/lib.rs + | + | fn into_js_result(self) -> Result<JsValue, JsValue>; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + = note: this error originates in the attribute macro `wasm_bindgen` (in Nightly builds, run with -Z macro-backtrace for more info) + +error[E0277]: the trait bound `Result<BadType, wasm_bindgen::JsValue>: IntoJsResult` is not satisfied + --> ui-tests/async-errors.rs:36:1 + | +36 | #[wasm_bindgen] + | ^^^^^^^^^^^^^^^ the trait `IntoJsResult` is not implemented for `Result<BadType, wasm_bindgen::JsValue>` + | + = help: the following implementations were found: + <Result<(), E> as IntoJsResult> + <Result<T, E> as IntoJsResult> +note: required by `into_js_result` + --> $WORKSPACE/src/lib.rs + | + | fn into_js_result(self) -> Result<JsValue, JsValue>; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + = note: this error originates in the attribute macro `wasm_bindgen` (in Nightly builds, run with -Z macro-backtrace for more info) diff --git a/vendor/wasm-bindgen-macro/ui-tests/attribute-fails-to-parse.rs b/vendor/wasm-bindgen-macro/ui-tests/attribute-fails-to-parse.rs new file mode 100644 index 000000000..2d5b34bce --- /dev/null +++ b/vendor/wasm-bindgen-macro/ui-tests/attribute-fails-to-parse.rs @@ -0,0 +1,6 @@ +use wasm_bindgen::prelude::*; + +#[wasm_bindgen(nonsense)] +pub fn foo() {} + +fn main() {} diff --git a/vendor/wasm-bindgen-macro/ui-tests/attribute-fails-to-parse.stderr b/vendor/wasm-bindgen-macro/ui-tests/attribute-fails-to-parse.stderr new file mode 100644 index 000000000..dfe9ecf0e --- /dev/null +++ b/vendor/wasm-bindgen-macro/ui-tests/attribute-fails-to-parse.stderr @@ -0,0 +1,5 @@ +error: unknown attribute + --> $DIR/attribute-fails-to-parse.rs:3:16 + | +3 | #[wasm_bindgen(nonsense)] + | ^^^^^^^^ diff --git a/vendor/wasm-bindgen-macro/ui-tests/bad-signatures.rs b/vendor/wasm-bindgen-macro/ui-tests/bad-signatures.rs new file mode 100644 index 000000000..de2c0e156 --- /dev/null +++ b/vendor/wasm-bindgen-macro/ui-tests/bad-signatures.rs @@ -0,0 +1,13 @@ +use wasm_bindgen::prelude::*; + +#[wasm_bindgen] +pub fn foo() -> &u32 {} + +#[wasm_bindgen] +extern "C" { + fn foo(Foo(x): Foo); + + fn foo() -> &u32; +} + +fn main() {} diff --git a/vendor/wasm-bindgen-macro/ui-tests/bad-signatures.stderr b/vendor/wasm-bindgen-macro/ui-tests/bad-signatures.stderr new file mode 100644 index 000000000..48d8d40dd --- /dev/null +++ b/vendor/wasm-bindgen-macro/ui-tests/bad-signatures.stderr @@ -0,0 +1,17 @@ +error: cannot return a borrowed ref with #[wasm_bindgen] + --> $DIR/bad-signatures.rs:4:17 + | +4 | pub fn foo() -> &u32 {} + | ^^^^ + +error: unsupported pattern in #[wasm_bindgen] imported function + --> $DIR/bad-signatures.rs:8:12 + | +8 | fn foo(Foo(x): Foo); + | ^^^^^^ + +error: cannot return references in #[wasm_bindgen] imports yet + --> $DIR/bad-signatures.rs:10:17 + | +10 | fn foo() -> &u32; + | ^^^^ diff --git a/vendor/wasm-bindgen-macro/ui-tests/import-local.rs b/vendor/wasm-bindgen-macro/ui-tests/import-local.rs new file mode 100644 index 000000000..ff86375bb --- /dev/null +++ b/vendor/wasm-bindgen-macro/ui-tests/import-local.rs @@ -0,0 +1,13 @@ +use wasm_bindgen::prelude::*; + +#[wasm_bindgen(module = "./foo.js")] +extern { + fn wut(); +} + +#[wasm_bindgen(module = "../foo.js")] +extern { + fn wut2(); +} + +fn main() {} diff --git a/vendor/wasm-bindgen-macro/ui-tests/import-local.stderr b/vendor/wasm-bindgen-macro/ui-tests/import-local.stderr new file mode 100644 index 000000000..707b30fcc --- /dev/null +++ b/vendor/wasm-bindgen-macro/ui-tests/import-local.stderr @@ -0,0 +1,11 @@ +error: relative module paths aren't supported yet + --> $DIR/import-local.rs:3:25 + | +3 | #[wasm_bindgen(module = "./foo.js")] + | ^^^^^^^^^^ + +error: relative module paths aren't supported yet + --> $DIR/import-local.rs:8:25 + | +8 | #[wasm_bindgen(module = "../foo.js")] + | ^^^^^^^^^^^ diff --git a/vendor/wasm-bindgen-macro/ui-tests/invalid-attr.rs b/vendor/wasm-bindgen-macro/ui-tests/invalid-attr.rs new file mode 100644 index 000000000..188a1c833 --- /dev/null +++ b/vendor/wasm-bindgen-macro/ui-tests/invalid-attr.rs @@ -0,0 +1,15 @@ +use wasm_bindgen::prelude::*; + +#[wasm_bindgen(x)] +pub fn foo() {} + +#[wasm_bindgen] +extern "C" { + #[wasm_bindgen(y)] + fn bar(); + + #[wasm_bindgen { }] + fn bar(); +} + +fn main() {} diff --git a/vendor/wasm-bindgen-macro/ui-tests/invalid-attr.stderr b/vendor/wasm-bindgen-macro/ui-tests/invalid-attr.stderr new file mode 100644 index 000000000..47264acd3 --- /dev/null +++ b/vendor/wasm-bindgen-macro/ui-tests/invalid-attr.stderr @@ -0,0 +1,17 @@ +error: unknown attribute + --> $DIR/invalid-attr.rs:3:16 + | +3 | #[wasm_bindgen(x)] + | ^ + +error: unknown attribute + --> $DIR/invalid-attr.rs:8:20 + | +8 | #[wasm_bindgen(y)] + | ^ + +error: malformed #[wasm_bindgen] attribute + --> $DIR/invalid-attr.rs:11:5 + | +11 | #[wasm_bindgen { }] + | ^^^^^^^^^^^^^^^^^^^^ diff --git a/vendor/wasm-bindgen-macro/ui-tests/invalid-enums.rs b/vendor/wasm-bindgen-macro/ui-tests/invalid-enums.rs new file mode 100644 index 000000000..abea3fa67 --- /dev/null +++ b/vendor/wasm-bindgen-macro/ui-tests/invalid-enums.rs @@ -0,0 +1,21 @@ +use wasm_bindgen::prelude::*; + +#[wasm_bindgen] +enum A {} + +#[wasm_bindgen] +pub enum B { + D(u32), +} + +#[wasm_bindgen] +pub enum C { + X = 1 + 3, +} + +#[wasm_bindgen] +pub enum D { + X = 4294967296, +} + +fn main() {} diff --git a/vendor/wasm-bindgen-macro/ui-tests/invalid-enums.stderr b/vendor/wasm-bindgen-macro/ui-tests/invalid-enums.stderr new file mode 100644 index 000000000..7ad51f9a5 --- /dev/null +++ b/vendor/wasm-bindgen-macro/ui-tests/invalid-enums.stderr @@ -0,0 +1,23 @@ +error: cannot export empty enums to JS + --> $DIR/invalid-enums.rs:4:1 + | +4 | enum A {} + | ^^^^^^^^^ + +error: only C-Style enums allowed with #[wasm_bindgen] + --> $DIR/invalid-enums.rs:8:6 + | +8 | D(u32), + | ^^^^^ + +error: enums with #[wasm_bindgen] may only have number literal values + --> $DIR/invalid-enums.rs:13:9 + | +13 | X = 1 + 3, + | ^^^^^ + +error: enums with #[wasm_bindgen] can only support numbers that can be represented as u32 + --> $DIR/invalid-enums.rs:18:9 + | +18 | X = 4294967296, + | ^^^^^^^^^^ diff --git a/vendor/wasm-bindgen-macro/ui-tests/invalid-imports.rs b/vendor/wasm-bindgen-macro/ui-tests/invalid-imports.rs new file mode 100644 index 000000000..ecd223b70 --- /dev/null +++ b/vendor/wasm-bindgen-macro/ui-tests/invalid-imports.rs @@ -0,0 +1,41 @@ +use wasm_bindgen::prelude::*; + +#[wasm_bindgen] +extern "C" { + type A; + + fn f() -> &'static u32; + + #[wasm_bindgen(method)] + fn f1(); + #[wasm_bindgen(method)] + fn f2(x: u32); + #[wasm_bindgen(method)] + fn f3(x: &&u32); + #[wasm_bindgen(method)] + fn f4(x: &foo::Bar); + #[wasm_bindgen(method)] + fn f4(x: &::Bar); + #[wasm_bindgen(method)] + fn f4(x: &Bar<T>); + #[wasm_bindgen(method)] + fn f4(x: &Fn(T)); + + #[wasm_bindgen(constructor)] + fn f(); + #[wasm_bindgen(constructor)] + fn f() -> ::Bar; + #[wasm_bindgen(constructor)] + fn f() -> &Bar; + + #[wasm_bindgen(catch)] + fn f() -> u32; + #[wasm_bindgen(catch)] + fn f() -> &u32; + #[wasm_bindgen(catch)] + fn f() -> Result<>; + #[wasm_bindgen(catch)] + fn f() -> Result<'a>; +} + +fn main() {} diff --git a/vendor/wasm-bindgen-macro/ui-tests/invalid-imports.stderr b/vendor/wasm-bindgen-macro/ui-tests/invalid-imports.stderr new file mode 100644 index 000000000..aeb09c574 --- /dev/null +++ b/vendor/wasm-bindgen-macro/ui-tests/invalid-imports.stderr @@ -0,0 +1,71 @@ +error: it is currently not sound to use lifetimes in function signatures + --> $DIR/invalid-imports.rs:7:16 + | +7 | fn f() -> &'static u32; + | ^^^^^^^ + +error: imported methods must have at least one argument + --> $DIR/invalid-imports.rs:10:5 + | +10 | fn f1(); + | ^^^^^^^^ + +error: first argument of method must be a shared reference + --> $DIR/invalid-imports.rs:12:14 + | +12 | fn f2(x: u32); + | ^^^ + +error: first argument of method must be a path + --> $DIR/invalid-imports.rs:14:14 + | +14 | fn f3(x: &&u32); + | ^^^^^ + +error: paths with type parameters are not supported yet + --> $DIR/invalid-imports.rs:20:15 + | +20 | fn f4(x: &Bar<T>); + | ^^^^^^ + +error: paths with type parameters are not supported yet + --> $DIR/invalid-imports.rs:22:15 + | +22 | fn f4(x: &Fn(T)); + | ^^^^^ + +error: constructor returns must be bare types + --> $DIR/invalid-imports.rs:25:5 + | +25 | fn f(); + | ^^^^^^^ + +error: return value of constructor must be a bare path + --> $DIR/invalid-imports.rs:29:5 + | +29 | fn f() -> &Bar; + | ^^^^^^^^^^^^^^^ + +error: must be Result<...> + --> $DIR/invalid-imports.rs:32:15 + | +32 | fn f() -> u32; + | ^^^ + +error: must be Result<...> + --> $DIR/invalid-imports.rs:34:15 + | +34 | fn f() -> &u32; + | ^^^^ + +error: must have at least one generic parameter + --> $DIR/invalid-imports.rs:36:15 + | +36 | fn f() -> Result<>; + | ^^^^^^^^ + +error: it is currently not sound to use lifetimes in function signatures + --> $DIR/invalid-imports.rs:38:22 + | +38 | fn f() -> Result<'a>; + | ^^ diff --git a/vendor/wasm-bindgen-macro/ui-tests/invalid-items.rs b/vendor/wasm-bindgen-macro/ui-tests/invalid-items.rs new file mode 100644 index 000000000..f1a356331 --- /dev/null +++ b/vendor/wasm-bindgen-macro/ui-tests/invalid-items.rs @@ -0,0 +1,33 @@ +use wasm_bindgen::prelude::*; + +#[wasm_bindgen] +fn foo() {} + +#[wasm_bindgen] +pub const fn foo2() {} + +#[wasm_bindgen] +struct Foo<T>(T); + +#[wasm_bindgen] +extern "C" { + static mut FOO: u32; + + pub fn foo3(x: i32, ...); +} + +#[wasm_bindgen] +extern "system" { +} + +#[wasm_bindgen] +pub fn foo4<T>() {} +#[wasm_bindgen] +pub fn foo5<'a>() {} +#[wasm_bindgen] +pub fn foo6<'a, T>() {} + +#[wasm_bindgen] +trait X {} + +fn main() {} diff --git a/vendor/wasm-bindgen-macro/ui-tests/invalid-items.stderr b/vendor/wasm-bindgen-macro/ui-tests/invalid-items.stderr new file mode 100644 index 000000000..1800ade29 --- /dev/null +++ b/vendor/wasm-bindgen-macro/ui-tests/invalid-items.stderr @@ -0,0 +1,59 @@ +error: can only #[wasm_bindgen] public functions + --> $DIR/invalid-items.rs:4:1 + | +4 | fn foo() {} + | ^^^^^^^^^^^ + +error: can only #[wasm_bindgen] non-const functions + --> $DIR/invalid-items.rs:7:5 + | +7 | pub const fn foo2() {} + | ^^^^^ + +error: structs with #[wasm_bindgen] cannot have lifetime or type parameters currently + --> $DIR/invalid-items.rs:10:11 + | +10 | struct Foo<T>(T); + | ^^^ + +error: cannot import mutable globals yet + --> $DIR/invalid-items.rs:14:12 + | +14 | static mut FOO: u32; + | ^^^ + +error: can't #[wasm_bindgen] variadic functions + --> $DIR/invalid-items.rs:16:25 + | +16 | pub fn foo3(x: i32, ...); + | ^^^ + +error: only foreign mods with the `C` ABI are allowed + --> $DIR/invalid-items.rs:20:8 + | +20 | extern "system" { + | ^^^^^^^^ + +error: can't #[wasm_bindgen] functions with lifetime or type parameters + --> $DIR/invalid-items.rs:24:12 + | +24 | pub fn foo4<T>() {} + | ^^^ + +error: can't #[wasm_bindgen] functions with lifetime or type parameters + --> $DIR/invalid-items.rs:26:12 + | +26 | pub fn foo5<'a>() {} + | ^^^^ + +error: can't #[wasm_bindgen] functions with lifetime or type parameters + --> $DIR/invalid-items.rs:28:12 + | +28 | pub fn foo6<'a, T>() {} + | ^^^^^^^ + +error: #[wasm_bindgen] can only be applied to a function, struct, enum, impl, or extern block + --> $DIR/invalid-items.rs:31:1 + | +31 | trait X {} + | ^^^^^^^^^^ diff --git a/vendor/wasm-bindgen-macro/ui-tests/invalid-methods.rs b/vendor/wasm-bindgen-macro/ui-tests/invalid-methods.rs new file mode 100644 index 000000000..bd69e6d31 --- /dev/null +++ b/vendor/wasm-bindgen-macro/ui-tests/invalid-methods.rs @@ -0,0 +1,42 @@ +use wasm_bindgen::prelude::*; + +#[wasm_bindgen] +pub struct A; + +#[wasm_bindgen] +default impl A { +} + +#[wasm_bindgen] +unsafe impl A { +} + +#[wasm_bindgen] +impl Clone for A { +} + +#[wasm_bindgen] +impl<T> A { +} + +#[wasm_bindgen] +impl &'static A { +} + +macro_rules! x { () => () } + +#[wasm_bindgen] +impl A { + const X: u32 = 3; + type Y = u32; + x!(); + + // pub default fn foo() {} // TODO: compiler's pretty printer totally broken +} + +#[wasm_bindgen] +impl A { + pub const fn foo() {} +} + +fn main() {} diff --git a/vendor/wasm-bindgen-macro/ui-tests/invalid-methods.stderr b/vendor/wasm-bindgen-macro/ui-tests/invalid-methods.stderr new file mode 100644 index 000000000..a785fc1ff --- /dev/null +++ b/vendor/wasm-bindgen-macro/ui-tests/invalid-methods.stderr @@ -0,0 +1,61 @@ +error: #[wasm_bindgen] default impls are not supported + --> $DIR/invalid-methods.rs:7:1 + | +7 | default impl A { + | ^^^^^^^ + +error: #[wasm_bindgen] unsafe impls are not supported + --> $DIR/invalid-methods.rs:11:1 + | +11 | unsafe impl A { + | ^^^^^^ + +error: #[wasm_bindgen] trait impls are not supported + --> $DIR/invalid-methods.rs:15:6 + | +15 | impl Clone for A { + | ^^^^^ + +error: #[wasm_bindgen] generic impls aren't supported + --> $DIR/invalid-methods.rs:19:5 + | +19 | impl<T> A { + | ^^^ + +error: unsupported self type in #[wasm_bindgen] impl + --> $DIR/invalid-methods.rs:23:6 + | +23 | impl &'static A { + | ^^^^^^^^^^ + +error: const definitions aren't supported with #[wasm_bindgen] + --> $DIR/invalid-methods.rs:30:5 + | +30 | const X: u32 = 3; + | ^^^^^^^^^^^^^^^^^ + +error: type definitions in impls aren't supported with #[wasm_bindgen] + --> $DIR/invalid-methods.rs:31:5 + | +31 | type Y = u32; + | ^^^^^^^^^^^^^ + +error: macros in impls aren't supported + --> $DIR/invalid-methods.rs:32:5 + | +32 | x!(); + | ^^^^^ + +error: can only #[wasm_bindgen] non-const functions + --> $DIR/invalid-methods.rs:39:9 + | +39 | pub const fn foo() {} + | ^^^^^ + +warning: unused macro definition + --> $DIR/invalid-methods.rs:26:1 + | +26 | macro_rules! x { () => () } + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = note: `#[warn(unused_macros)]` on by default diff --git a/vendor/wasm-bindgen-macro/ui-tests/invalid-setter.rs b/vendor/wasm-bindgen-macro/ui-tests/invalid-setter.rs new file mode 100644 index 000000000..42d83879e --- /dev/null +++ b/vendor/wasm-bindgen-macro/ui-tests/invalid-setter.rs @@ -0,0 +1,18 @@ + +use wasm_bindgen::prelude::*; + +#[wasm_bindgen] +extern "C" { + type A; + + #[wasm_bindgen(setter, method)] + fn a(this: &A, b: i32); + + #[wasm_bindgen(setter = x, method)] + fn b(this: &A, b: i32); + + #[wasm_bindgen(setter, method, js_name = x)] + fn c(this: &A, b: i32); +} + +fn main() {} diff --git a/vendor/wasm-bindgen-macro/ui-tests/invalid-setter.stderr b/vendor/wasm-bindgen-macro/ui-tests/invalid-setter.stderr new file mode 100644 index 000000000..77e1509e9 --- /dev/null +++ b/vendor/wasm-bindgen-macro/ui-tests/invalid-setter.stderr @@ -0,0 +1,5 @@ +error: setters must start with `set_`, found: a + --> $DIR/invalid-setter.rs:9:8 + | +9 | fn a(this: &A, b: i32); + | ^ diff --git a/vendor/wasm-bindgen-macro/ui-tests/missing-catch.rs b/vendor/wasm-bindgen-macro/ui-tests/missing-catch.rs new file mode 100644 index 000000000..962e2fad1 --- /dev/null +++ b/vendor/wasm-bindgen-macro/ui-tests/missing-catch.rs @@ -0,0 +1,9 @@ +use wasm_bindgen::prelude::*; + +#[wasm_bindgen] +extern "C" { + #[wasm_bindgen] + pub fn foo() -> Result<JsValue, JsValue>; +} + +fn main() {} diff --git a/vendor/wasm-bindgen-macro/ui-tests/missing-catch.stderr b/vendor/wasm-bindgen-macro/ui-tests/missing-catch.stderr new file mode 100644 index 000000000..4c20dbe76 --- /dev/null +++ b/vendor/wasm-bindgen-macro/ui-tests/missing-catch.stderr @@ -0,0 +1,17 @@ +error[E0277]: the trait bound `Result<wasm_bindgen::JsValue, wasm_bindgen::JsValue>: FromWasmAbi` is not satisfied + --> $DIR/missing-catch.rs:6:9 + | +6 | pub fn foo() -> Result<JsValue, JsValue>; + | ^^^ the trait `FromWasmAbi` is not implemented for `Result<wasm_bindgen::JsValue, wasm_bindgen::JsValue>` + | +note: required by a bound in `FromWasmAbi` + --> $DIR/traits.rs:23:1 + | +23 | / pub trait FromWasmAbi: WasmDescribe { +24 | | /// The wasm ABI type that this converts from when coming back out from the +25 | | /// ABI boundary. +26 | | type Abi: WasmAbi; +... | +35 | | unsafe fn from_abi(js: Self::Abi) -> Self; +36 | | } + | |_^ required by this bound in `FromWasmAbi` diff --git a/vendor/wasm-bindgen-macro/ui-tests/non-public-function.rs b/vendor/wasm-bindgen-macro/ui-tests/non-public-function.rs new file mode 100644 index 000000000..5f2e55874 --- /dev/null +++ b/vendor/wasm-bindgen-macro/ui-tests/non-public-function.rs @@ -0,0 +1,6 @@ +use wasm_bindgen::prelude::*; + +#[wasm_bindgen] +fn foo() {} + +fn main() {} diff --git a/vendor/wasm-bindgen-macro/ui-tests/non-public-function.stderr b/vendor/wasm-bindgen-macro/ui-tests/non-public-function.stderr new file mode 100644 index 000000000..02f2a329f --- /dev/null +++ b/vendor/wasm-bindgen-macro/ui-tests/non-public-function.stderr @@ -0,0 +1,5 @@ +error: can only #[wasm_bindgen] public functions + --> $DIR/non-public-function.rs:4:1 + | +4 | fn foo() {} + | ^^^^^^^^^^^ diff --git a/vendor/wasm-bindgen-macro/ui-tests/pub-not-copy.rs b/vendor/wasm-bindgen-macro/ui-tests/pub-not-copy.rs new file mode 100644 index 000000000..b5f6b0cfb --- /dev/null +++ b/vendor/wasm-bindgen-macro/ui-tests/pub-not-copy.rs @@ -0,0 +1,8 @@ +use wasm_bindgen::prelude::*; + +#[wasm_bindgen] +pub struct A { + pub field: String, +} + +fn main() {} diff --git a/vendor/wasm-bindgen-macro/ui-tests/pub-not-copy.stderr b/vendor/wasm-bindgen-macro/ui-tests/pub-not-copy.stderr new file mode 100644 index 000000000..0cb088cd1 --- /dev/null +++ b/vendor/wasm-bindgen-macro/ui-tests/pub-not-copy.stderr @@ -0,0 +1,12 @@ +error[E0277]: the trait bound `String: std::marker::Copy` is not satisfied + --> $DIR/pub-not-copy.rs:5:16 + | +5 | pub field: String, + | ^^^^^^ the trait `std::marker::Copy` is not implemented for `String` + | +note: required by a bound in `assert_copy` + --> $DIR/pub-not-copy.rs:3:1 + | +3 | #[wasm_bindgen] + | ^^^^^^^^^^^^^^^ required by this bound in `assert_copy` + = note: this error originates in the attribute macro `wasm_bindgen` (in Nightly builds, run with -Z macro-backtrace for more info) diff --git a/vendor/wasm-bindgen-macro/ui-tests/start-function.rs b/vendor/wasm-bindgen-macro/ui-tests/start-function.rs new file mode 100644 index 000000000..65ad90bf2 --- /dev/null +++ b/vendor/wasm-bindgen-macro/ui-tests/start-function.rs @@ -0,0 +1,33 @@ +use wasm_bindgen::prelude::*; + +#[wasm_bindgen(start)] +pub fn foo() {} + +#[wasm_bindgen(start)] +pub fn foo2(x: u32) {} + +#[wasm_bindgen(start)] +pub fn foo3<T>() {} + +#[wasm_bindgen(start)] +pub fn foo4() -> Result<(), JsValue> { Ok(()) } + +#[wasm_bindgen(start)] +pub fn foo5() -> Result<JsValue, ()> { Err(()) } + +#[wasm_bindgen(start)] +pub fn foo6() -> Result<JsValue, JsValue> { Ok(JsValue::from(1u32)) } + +#[wasm_bindgen(start)] +pub async fn foo_async1() {} + +#[wasm_bindgen(start)] +pub async fn foo_async2() -> Result<(), JsValue> { Ok(()) } + +#[wasm_bindgen(start)] +pub async fn foo_async3() -> Result<JsValue, ()> { Err(()) } + +#[wasm_bindgen(start)] +pub async fn foo_async4() -> Result<JsValue, JsValue> { Ok(JsValue::from(1u32)) } + +fn main() {} diff --git a/vendor/wasm-bindgen-macro/ui-tests/start-function.stderr b/vendor/wasm-bindgen-macro/ui-tests/start-function.stderr new file mode 100644 index 000000000..8f459863d --- /dev/null +++ b/vendor/wasm-bindgen-macro/ui-tests/start-function.stderr @@ -0,0 +1,71 @@ +error: the start function cannot have arguments + --> ui-tests/start-function.rs:7:13 + | +7 | pub fn foo2(x: u32) {} + | ^^^^^^ + +error: the start function cannot have generics + --> ui-tests/start-function.rs:10:12 + | +10 | pub fn foo3<T>() {} + | ^^^ + +error[E0277]: the trait bound `Result<wasm_bindgen::JsValue, ()>: wasm_bindgen::__rt::Start` is not satisfied + --> ui-tests/start-function.rs:15:1 + | +15 | #[wasm_bindgen(start)] + | ^^^^^^^^^^^^^^^^^^^^^^ the trait `wasm_bindgen::__rt::Start` is not implemented for `Result<wasm_bindgen::JsValue, ()>` + | + = help: the following implementations were found: + <Result<(), E> as wasm_bindgen::__rt::Start> +note: required by `start` + --> $WORKSPACE/src/lib.rs + | + | fn start(self); + | ^^^^^^^^^^^^^^^ + = note: this error originates in the attribute macro `wasm_bindgen` (in Nightly builds, run with -Z macro-backtrace for more info) + +error[E0277]: the trait bound `Result<wasm_bindgen::JsValue, wasm_bindgen::JsValue>: wasm_bindgen::__rt::Start` is not satisfied + --> ui-tests/start-function.rs:18:1 + | +18 | #[wasm_bindgen(start)] + | ^^^^^^^^^^^^^^^^^^^^^^ the trait `wasm_bindgen::__rt::Start` is not implemented for `Result<wasm_bindgen::JsValue, wasm_bindgen::JsValue>` + | + = help: the following implementations were found: + <Result<(), E> as wasm_bindgen::__rt::Start> +note: required by `start` + --> $WORKSPACE/src/lib.rs + | + | fn start(self); + | ^^^^^^^^^^^^^^^ + = note: this error originates in the attribute macro `wasm_bindgen` (in Nightly builds, run with -Z macro-backtrace for more info) + +error[E0277]: the trait bound `Result<wasm_bindgen::JsValue, ()>: wasm_bindgen::__rt::Start` is not satisfied + --> ui-tests/start-function.rs:27:1 + | +27 | #[wasm_bindgen(start)] + | ^^^^^^^^^^^^^^^^^^^^^^ the trait `wasm_bindgen::__rt::Start` is not implemented for `Result<wasm_bindgen::JsValue, ()>` + | + = help: the following implementations were found: + <Result<(), E> as wasm_bindgen::__rt::Start> +note: required by `start` + --> $WORKSPACE/src/lib.rs + | + | fn start(self); + | ^^^^^^^^^^^^^^^ + = note: this error originates in the attribute macro `wasm_bindgen` (in Nightly builds, run with -Z macro-backtrace for more info) + +error[E0277]: the trait bound `Result<wasm_bindgen::JsValue, wasm_bindgen::JsValue>: wasm_bindgen::__rt::Start` is not satisfied + --> ui-tests/start-function.rs:30:1 + | +30 | #[wasm_bindgen(start)] + | ^^^^^^^^^^^^^^^^^^^^^^ the trait `wasm_bindgen::__rt::Start` is not implemented for `Result<wasm_bindgen::JsValue, wasm_bindgen::JsValue>` + | + = help: the following implementations were found: + <Result<(), E> as wasm_bindgen::__rt::Start> +note: required by `start` + --> $WORKSPACE/src/lib.rs + | + | fn start(self); + | ^^^^^^^^^^^^^^^ + = note: this error originates in the attribute macro `wasm_bindgen` (in Nightly builds, run with -Z macro-backtrace for more info) diff --git a/vendor/wasm-bindgen-macro/ui-tests/structural-and-final.rs b/vendor/wasm-bindgen-macro/ui-tests/structural-and-final.rs new file mode 100644 index 000000000..5c5a4ecce --- /dev/null +++ b/vendor/wasm-bindgen-macro/ui-tests/structural-and-final.rs @@ -0,0 +1,11 @@ +use wasm_bindgen::prelude::*; + +#[wasm_bindgen] +extern "C" { + type Foo; + + #[wasm_bindgen(method, structural, final)] + fn bar(this: &Foo); +} + +fn main() {} diff --git a/vendor/wasm-bindgen-macro/ui-tests/structural-and-final.stderr b/vendor/wasm-bindgen-macro/ui-tests/structural-and-final.stderr new file mode 100644 index 000000000..8c8a70387 --- /dev/null +++ b/vendor/wasm-bindgen-macro/ui-tests/structural-and-final.stderr @@ -0,0 +1,5 @@ +error: cannot specify both `structural` and `final` + --> $DIR/structural-and-final.rs:7:40 + | +7 | #[wasm_bindgen(method, structural, final)] + | ^^^^^ diff --git a/vendor/wasm-bindgen-macro/ui-tests/traits-not-implemented.rs b/vendor/wasm-bindgen-macro/ui-tests/traits-not-implemented.rs new file mode 100644 index 000000000..56c5900c0 --- /dev/null +++ b/vendor/wasm-bindgen-macro/ui-tests/traits-not-implemented.rs @@ -0,0 +1,11 @@ +use wasm_bindgen::prelude::*; + +struct A; + +#[wasm_bindgen] +extern "C" { + #[wasm_bindgen] + pub fn foo(a: A); +} + +fn main() {} diff --git a/vendor/wasm-bindgen-macro/ui-tests/traits-not-implemented.stderr b/vendor/wasm-bindgen-macro/ui-tests/traits-not-implemented.stderr new file mode 100644 index 000000000..7b0f90f57 --- /dev/null +++ b/vendor/wasm-bindgen-macro/ui-tests/traits-not-implemented.stderr @@ -0,0 +1,18 @@ +error[E0277]: the trait bound `A: IntoWasmAbi` is not satisfied + --> $DIR/traits-not-implemented.rs:5:1 + | +5 | #[wasm_bindgen] + | ^^^^^^^^^^^^^^^ the trait `IntoWasmAbi` is not implemented for `A` + | +note: required by a bound in `IntoWasmAbi` + --> $DIR/traits.rs:9:1 + | +9 | / pub trait IntoWasmAbi: WasmDescribe { +10 | | /// The wasm ABI type that this converts into when crossing the ABI +11 | | /// boundary. +12 | | type Abi: WasmAbi; +... | +16 | | fn into_abi(self) -> Self::Abi; +17 | | } + | |_^ required by this bound in `IntoWasmAbi` + = note: this error originates in the attribute macro `wasm_bindgen` (in Nightly builds, run with -Z macro-backtrace for more info) diff --git a/vendor/wasm-bindgen-macro/ui-tests/unknown-type-in-import.rs b/vendor/wasm-bindgen-macro/ui-tests/unknown-type-in-import.rs new file mode 100644 index 000000000..1356a253e --- /dev/null +++ b/vendor/wasm-bindgen-macro/ui-tests/unknown-type-in-import.rs @@ -0,0 +1,10 @@ +use wasm_bindgen::prelude::*; + +#[wasm_bindgen] +extern "C" { + #[wasm_bindgen] + pub fn foo(a: A); +} + +fn main() {} + diff --git a/vendor/wasm-bindgen-macro/ui-tests/unknown-type-in-import.stderr b/vendor/wasm-bindgen-macro/ui-tests/unknown-type-in-import.stderr new file mode 100644 index 000000000..e7bb64c53 --- /dev/null +++ b/vendor/wasm-bindgen-macro/ui-tests/unknown-type-in-import.stderr @@ -0,0 +1,7 @@ +error[E0412]: cannot find type `A` in this scope + --> $DIR/unknown-type-in-import.rs:6:19 + | +6 | pub fn foo(a: A); + | - ^ not found in this scope + | | + | help: you might be missing a type parameter: `<A>` diff --git a/vendor/wasm-bindgen-macro/ui-tests/unused-attributes.rs b/vendor/wasm-bindgen-macro/ui-tests/unused-attributes.rs new file mode 100644 index 000000000..f517dcc4b --- /dev/null +++ b/vendor/wasm-bindgen-macro/ui-tests/unused-attributes.rs @@ -0,0 +1,32 @@ +#![deny(unused_variables)] + +use wasm_bindgen::prelude::*; + +struct A {} + +#[wasm_bindgen] +impl A { + #[wasm_bindgen(method)] + pub fn foo() {} +} + +#[wasm_bindgen] +pub struct MyStruct { + hello: String, +} + +#[wasm_bindgen(getter, typescript_custom_section)] +pub const FOO: &'static str = "FOO"; + +#[wasm_bindgen(readonly)] +pub fn bar() {} + +#[wasm_bindgen(getter_with_clone, final)] +impl MyStruct { + #[wasm_bindgen(getter, typescript_type = "Thing[]")] + pub fn hello(&self) -> String { + self.hello.clone() + } +} + +fn main() {} diff --git a/vendor/wasm-bindgen-macro/ui-tests/unused-attributes.stderr b/vendor/wasm-bindgen-macro/ui-tests/unused-attributes.stderr new file mode 100644 index 000000000..c4ba32f08 --- /dev/null +++ b/vendor/wasm-bindgen-macro/ui-tests/unused-attributes.stderr @@ -0,0 +1,41 @@ +error: unused variable: `method` + --> ui-tests/unused-attributes.rs:9:20 + | +9 | #[wasm_bindgen(method)] + | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_method` + | +note: the lint level is defined here + --> ui-tests/unused-attributes.rs:1:9 + | +1 | #![deny(unused_variables)] + | ^^^^^^^^^^^^^^^^ + +error: unused variable: `getter` + --> ui-tests/unused-attributes.rs:18:16 + | +18 | #[wasm_bindgen(getter, typescript_custom_section)] + | ^^^^^^ help: if this is intentional, prefix it with an underscore: `_getter` + +error: unused variable: `readonly` + --> ui-tests/unused-attributes.rs:21:16 + | +21 | #[wasm_bindgen(readonly)] + | ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_readonly` + +error: unused variable: `getter_with_clone` + --> ui-tests/unused-attributes.rs:24:16 + | +24 | #[wasm_bindgen(getter_with_clone, final)] + | ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_getter_with_clone` + +error: unused variable: `final` + --> ui-tests/unused-attributes.rs:24:35 + | +24 | #[wasm_bindgen(getter_with_clone, final)] + | ^^^^^ help: if this is intentional, prefix it with an underscore: `_final` + +error: unused variable: `typescript_type` + --> ui-tests/unused-attributes.rs:26:28 + | +26 | #[wasm_bindgen(getter, typescript_type = "Thing[]")] + | ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_typescript_type` diff --git a/vendor/wasm-bindgen-macro/ui-tests/update-all-references.sh b/vendor/wasm-bindgen-macro/ui-tests/update-all-references.sh new file mode 100755 index 000000000..7b757a479 --- /dev/null +++ b/vendor/wasm-bindgen-macro/ui-tests/update-all-references.sh @@ -0,0 +1,23 @@ +#!/bin/bash +# +# Copyright 2015 The Rust Project Developers. See the COPYRIGHT +# file at the top-level directory of this distribution and at +# http://rust-lang.org/COPYRIGHT. +# +# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +# option. This file may not be copied, modified, or distributed +# except according to those terms. + +# A script to update the references for all tests. The idea is that +# you do a run, which will generate files in the build directory +# containing the (normalized) actual output of the compiler. You then +# run this script, which will copy those files over. If you find +# yourself manually editing a foo.stderr file, you're doing it wrong. +# +# See all `update-references.sh`, if you just want to update a single test. + +MY_DIR=$(dirname $0) +cd $MY_DIR +find . -name '*.rs' | xargs ./update-references.sh diff --git a/vendor/wasm-bindgen-macro/ui-tests/update-references.sh b/vendor/wasm-bindgen-macro/ui-tests/update-references.sh new file mode 100755 index 000000000..19a6d4888 --- /dev/null +++ b/vendor/wasm-bindgen-macro/ui-tests/update-references.sh @@ -0,0 +1,42 @@ +#!/bin/bash +# +# Copyright 2015 The Rust Project Developers. See the COPYRIGHT +# file at the top-level directory of this distribution and at +# http://rust-lang.org/COPYRIGHT. +# +# Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +# http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +# <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +# option. This file may not be copied, modified, or distributed +# except according to those terms. + +# A script to update the references for particular tests. The idea is +# that you do a run, which will generate files in the build directory +# containing the (normalized) actual output of the compiler. This +# script will then copy that output and replace the "expected output" +# files. You can then commit the changes. +# +# If you find yourself manually editing a foo.stderr file, you're +# doing it wrong. + +MYDIR=$(dirname $0) + +BUILD_DIR="../../../target/tests/ui" + +while [[ "$1" != "" ]]; do + STDERR_NAME="${1/%.rs/.stderr}" + STDOUT_NAME="${1/%.rs/.stdout}" + shift + if [ -f $BUILD_DIR/$STDOUT_NAME ] && \ + ! (diff $BUILD_DIR/$STDOUT_NAME $MYDIR/$STDOUT_NAME >& /dev/null); then + echo updating $MYDIR/$STDOUT_NAME + cp $BUILD_DIR/$STDOUT_NAME $MYDIR/$STDOUT_NAME + fi + if [ -f $BUILD_DIR/$STDERR_NAME ] && \ + ! (diff $BUILD_DIR/$STDERR_NAME $MYDIR/$STDERR_NAME >& /dev/null); then + echo updating $MYDIR/$STDERR_NAME + cp $BUILD_DIR/$STDERR_NAME $MYDIR/$STDERR_NAME + fi +done + + |