Vendor things

This commit is contained in:
John Doty 2024-03-08 11:03:01 -08:00
parent 5deceec006
commit 977e3c17e5
19434 changed files with 10682014 additions and 0 deletions

View file

@ -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() {}

View file

@ -0,0 +1,48 @@
error[E0277]: the trait bound `Result<(), ()>: IntoJsResult` is not satisfied
--> ui-tests/async-errors.rs:31:24
|
31 | pub async fn bad1() -> Result<(), ()> { loop {} }
| ^^^^^^^^^^^^^^ the trait `IntoJsResult` is not implemented for `Result<(), ()>`
|
= help: the following other types implement trait `IntoJsResult`:
Result<(), E>
Result<T, E>
error[E0277]: the trait bound `Result<(), BadType>: IntoJsResult` is not satisfied
--> ui-tests/async-errors.rs:33:24
|
33 | pub async fn bad2() -> Result<(), BadType> { loop {} }
| ^^^^^^^^^^^^^^^^^^^ the trait `IntoJsResult` is not implemented for `Result<(), BadType>`
|
= help: the following other types implement trait `IntoJsResult`:
Result<(), E>
Result<T, E>
error[E0277]: the trait bound `wasm_bindgen::JsValue: From<BadType>` is not satisfied
--> ui-tests/async-errors.rs:35:24
|
35 | pub async fn bad3() -> BadType { loop {} }
| ^^^^^^^ the trait `From<BadType>` is not implemented for `wasm_bindgen::JsValue`
|
= help: the following other types implement trait `From<T>`:
<wasm_bindgen::JsValue as From<bool>>
<wasm_bindgen::JsValue as From<isize>>
<wasm_bindgen::JsValue as From<i8>>
<wasm_bindgen::JsValue as From<i16>>
<wasm_bindgen::JsValue as From<i32>>
<wasm_bindgen::JsValue as From<i64>>
<wasm_bindgen::JsValue as From<i128>>
<wasm_bindgen::JsValue as From<usize>>
and $N others
= note: required for `BadType` to implement `Into<wasm_bindgen::JsValue>`
= note: required for `BadType` to implement `IntoJsResult`
error[E0277]: the trait bound `Result<BadType, wasm_bindgen::JsValue>: IntoJsResult` is not satisfied
--> ui-tests/async-errors.rs:37:24
|
37 | pub async fn bad4() -> Result<BadType, JsValue> { loop {} }
| ^^^^^^^^^^^^^^^^^^^^^^^^ the trait `IntoJsResult` is not implemented for `Result<BadType, wasm_bindgen::JsValue>`
|
= help: the following other types implement trait `IntoJsResult`:
Result<(), E>
Result<T, E>

View file

@ -0,0 +1,6 @@
use wasm_bindgen::prelude::*;
#[wasm_bindgen(nonsense)]
pub fn foo() {}
fn main() {}

View file

@ -0,0 +1,5 @@
error: unknown attribute
--> $DIR/attribute-fails-to-parse.rs:3:16
|
3 | #[wasm_bindgen(nonsense)]
| ^^^^^^^^

View file

@ -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() {}

View file

@ -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;
| ^^^^

View file

@ -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() {}

View file

@ -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")]
| ^^^^^^^^^^^

View file

@ -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() {}

View file

@ -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 { }]
| ^^^^^^^^^^^^^^^^^^^^

View file

@ -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() {}

View file

@ -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,
| ^^^^^^^^^^

View file

@ -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: &dyn 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() {}

View file

@ -0,0 +1,71 @@
error: it is currently not sound to use lifetimes in function signatures
--> ui-tests/invalid-imports.rs:7:16
|
7 | fn f() -> &'static u32;
| ^^^^^^^
error: imported methods must have at least one argument
--> ui-tests/invalid-imports.rs:10:5
|
10 | fn f1();
| ^^^^^^^^
error: first argument of method must be a shared reference
--> ui-tests/invalid-imports.rs:12:14
|
12 | fn f2(x: u32);
| ^^^
error: first argument of method must be a path
--> ui-tests/invalid-imports.rs:14:15
|
14 | fn f3(x: &&u32);
| ^^^^
error: paths with type parameters are not supported yet
--> ui-tests/invalid-imports.rs:20:15
|
20 | fn f4(x: &Bar<T>);
| ^^^^^^
error: first argument of method must be a path
--> ui-tests/invalid-imports.rs:22:15
|
22 | fn f4(x: &dyn Fn(T));
| ^^^^^^^^^
error: constructor returns must be bare types
--> ui-tests/invalid-imports.rs:25:5
|
25 | fn f();
| ^^^^^^^
error: return value of constructor must be a bare path
--> ui-tests/invalid-imports.rs:29:5
|
29 | fn f() -> &Bar;
| ^^^^^^^^^^^^^^^
error: must be Result<...>
--> ui-tests/invalid-imports.rs:32:15
|
32 | fn f() -> u32;
| ^^^
error: must be Result<...>
--> ui-tests/invalid-imports.rs:34:15
|
34 | fn f() -> &u32;
| ^^^^
error: must have at least one generic parameter
--> ui-tests/invalid-imports.rs:36:15
|
36 | fn f() -> Result<>;
| ^^^^^^^^
error: it is currently not sound to use lifetimes in function signatures
--> ui-tests/invalid-imports.rs:38:22
|
38 | fn f() -> Result<'a>;
| ^^

View file

@ -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() {}

View file

@ -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 {}
| ^^^^^^^^^^

View file

@ -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() {}

View file

@ -0,0 +1,61 @@
error: #[wasm_bindgen] default impls are not supported
--> ui-tests/invalid-methods.rs:7:1
|
7 | default impl A {
| ^^^^^^^
error: #[wasm_bindgen] unsafe impls are not supported
--> ui-tests/invalid-methods.rs:11:1
|
11 | unsafe impl A {
| ^^^^^^
error: #[wasm_bindgen] trait impls are not supported
--> ui-tests/invalid-methods.rs:15:6
|
15 | impl Clone for A {
| ^^^^^
error: #[wasm_bindgen] generic impls aren't supported
--> ui-tests/invalid-methods.rs:19:5
|
19 | impl<T> A {
| ^^^
error: unsupported self type in #[wasm_bindgen] impl
--> ui-tests/invalid-methods.rs:23:6
|
23 | impl &'static A {
| ^^^^^^^^^^
error: const definitions aren't supported with #[wasm_bindgen]
--> ui-tests/invalid-methods.rs:30:5
|
30 | const X: u32 = 3;
| ^^^^^^^^^^^^^^^^^
error: type definitions in impls aren't supported with #[wasm_bindgen]
--> ui-tests/invalid-methods.rs:31:5
|
31 | type Y = u32;
| ^^^^^^^^^^^^^
error: macros in impls aren't supported
--> ui-tests/invalid-methods.rs:32:5
|
32 | x!();
| ^^^^^
error: can only #[wasm_bindgen] non-const functions
--> ui-tests/invalid-methods.rs:39:9
|
39 | pub const fn foo() {}
| ^^^^^
warning: unused macro definition: `x`
--> ui-tests/invalid-methods.rs:26:14
|
26 | macro_rules! x { () => () }
| ^
|
= note: `#[warn(unused_macros)]` on by default

View file

@ -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() {}

View file

@ -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);
| ^

View file

@ -0,0 +1,32 @@
fn good1() -> String {
wasm_bindgen::link_to!(inline_js = "console.log('Hello world!');")
}
fn good2() -> String {
wasm_bindgen::link_to!(raw_module = "./foo.js")
}
fn bad1() -> String {
wasm_bindgen::link_to!(module = "package/foo.js")
}
fn bad2() -> String {
wasm_bindgen::link_to!(raw_module = "package/foo.js")
}
fn bad3() -> String {
wasm_bindgen::link_to!(module = "/src/not-found.js")
}
fn bad4() -> String {
wasm_bindgen::link_to!()
}
fn bad5() -> String {
wasm_bindgen::link_to!(
inline_js = "console.log('Hello world!');",
js_namespace = foo
)
}
fn main() {}

View file

@ -0,0 +1,31 @@
error: `link_to!` does not support module paths.
--> ui-tests/link-to.rs:10:37
|
10 | wasm_bindgen::link_to!(module = "package/foo.js")
| ^^^^^^^^^^^^^^^^
error: `link_to!` does not support module paths.
--> ui-tests/link-to.rs:14:41
|
14 | wasm_bindgen::link_to!(raw_module = "package/foo.js")
| ^^^^^^^^^^^^^^^^
error: failed to read file `$WORKSPACE/target/tests/trybuild/wasm-bindgen-macro/src/not-found.js`: No such file or directory (os error 2)
--> ui-tests/link-to.rs:18:37
|
18 | wasm_bindgen::link_to!(module = "/src/not-found.js")
| ^^^^^^^^^^^^^^^^^^^
error: `link_to!` requires a module.
--> ui-tests/link-to.rs:22:5
|
22 | wasm_bindgen::link_to!()
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: this error originates in the macro `wasm_bindgen::link_to` (in Nightly builds, run with -Z macro-backtrace for more info)
error: unused wasm_bindgen attribute
--> ui-tests/link-to.rs:28:9
|
28 | js_namespace = foo
| ^^^^^^^^^^^^

View file

@ -0,0 +1,7 @@
use wasm_bindgen::prelude::*;
#[wasm_bindgen(main)]
async fn main() {}
#[wasm_bindgen(main)]
fn fail() {}

View file

@ -0,0 +1,5 @@
error: the main function has to be called main
--> ui-tests/main-async.rs:7:4
|
7 | fn fail() {}
| ^^^^

View file

@ -0,0 +1,18 @@
use std::fmt;
use wasm_bindgen::prelude::*;
#[wasm_bindgen(main)]
fn main() -> Result<(), Test> {
unimplemented!()
}
struct Test;
impl fmt::Debug for Test {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
unimplemented!()
}
}
#[wasm_bindgen(main)]
fn fail() {}

View file

@ -0,0 +1,5 @@
error: the main function has to be called main
--> ui-tests/main-debug.rs:18:4
|
18 | fn fail() {}
| ^^^^

View file

@ -0,0 +1,10 @@
use std::convert::Infallible;
use wasm_bindgen::prelude::*;
#[wasm_bindgen(main)]
fn main() -> Infallible {
unimplemented!()
}
#[wasm_bindgen(main)]
fn fail() {}

View file

@ -0,0 +1,5 @@
error: the main function has to be called main
--> ui-tests/main-infallible.rs:10:4
|
10 | fn fail() {}
| ^^^^

View file

@ -0,0 +1,9 @@
use wasm_bindgen::prelude::*;
#[wasm_bindgen(main)]
fn main() -> Result<(), JsValue> {
unimplemented!()
}
#[wasm_bindgen(main)]
fn fail() {}

View file

@ -0,0 +1,5 @@
error: the main function has to be called main
--> ui-tests/main-jsvalue.rs:9:4
|
9 | fn fail() {}
| ^^^^

View file

@ -0,0 +1,7 @@
use wasm_bindgen::prelude::*;
#[wasm_bindgen(main)]
fn main() -> () {}
#[wasm_bindgen(main)]
fn fail() {}

View file

@ -0,0 +1,5 @@
error: the main function has to be called main
--> ui-tests/main-unit.rs:7:4
|
7 | fn fail() {}
| ^^^^

View file

@ -0,0 +1,7 @@
use wasm_bindgen::prelude::*;
#[wasm_bindgen(main)]
fn main() {}
#[wasm_bindgen(main)]
fn fail() {}

View file

@ -0,0 +1,5 @@
error: the main function has to be called main
--> ui-tests/main.rs:7:4
|
7 | fn fail() {}
| ^^^^

View file

@ -0,0 +1,9 @@
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
extern "C" {
#[wasm_bindgen]
pub fn foo() -> Result<JsValue, JsValue>;
}
fn main() {}

View file

@ -0,0 +1,16 @@
error[E0277]: the trait bound `Result<wasm_bindgen::JsValue, wasm_bindgen::JsValue>: FromWasmAbi` is not satisfied
--> ui-tests/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>`
|
= help: the following other types implement trait `FromWasmAbi`:
bool
char
isize
i8
i16
i32
i64
usize
and $N others

View file

@ -0,0 +1,6 @@
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
fn foo() {}
fn main() {}

View file

@ -0,0 +1,5 @@
error: can only #[wasm_bindgen] public functions
--> $DIR/non-public-function.rs:4:1
|
4 | fn foo() {}
| ^^^^^^^^^^^

View file

@ -0,0 +1,8 @@
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
pub struct A {
pub field: String,
}
fn main() {}

View file

@ -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)

View file

@ -0,0 +1,33 @@
use wasm_bindgen::prelude::*;
#[wasm_bindgen(start)]
fn foo() {}
#[wasm_bindgen(start)]
fn foo2(x: u32) {}
#[wasm_bindgen(start)]
fn foo3<T>() {}
#[wasm_bindgen(start)]
fn foo4() -> Result<(), JsValue> { Ok(()) }
#[wasm_bindgen(start)]
fn foo5() -> Result<JsValue, ()> { Err(()) }
#[wasm_bindgen(start)]
fn foo6() -> Result<JsValue, JsValue> { Ok(JsValue::from(1u32)) }
#[wasm_bindgen(start)]
async fn foo_async1() {}
#[wasm_bindgen(start)]
async fn foo_async2() -> Result<(), JsValue> { Ok(()) }
#[wasm_bindgen(start)]
async fn foo_async3() -> Result<JsValue, ()> { Err(()) }
#[wasm_bindgen(start)]
async fn foo_async4() -> Result<JsValue, JsValue> { Ok(JsValue::from(1u32)) }
fn main() {}

View file

@ -0,0 +1,43 @@
error: the start function cannot have arguments
--> ui-tests/start-function.rs:7:9
|
7 | fn foo2(x: u32) {}
| ^^^^^^
error: the start function cannot have generics
--> ui-tests/start-function.rs:10:8
|
10 | fn foo3<T>() {}
| ^^^
error[E0277]: the trait bound `Result<wasm_bindgen::JsValue, ()>: wasm_bindgen::__rt::Start` is not satisfied
--> ui-tests/start-function.rs:16:14
|
16 | fn foo5() -> Result<JsValue, ()> { Err(()) }
| ^^^^^^^^^^^^^^^^^^^ the trait `wasm_bindgen::__rt::Start` is not implemented for `Result<wasm_bindgen::JsValue, ()>`
|
= help: the trait `wasm_bindgen::__rt::Start` is implemented for `Result<(), E>`
error[E0277]: the trait bound `Result<wasm_bindgen::JsValue, wasm_bindgen::JsValue>: wasm_bindgen::__rt::Start` is not satisfied
--> ui-tests/start-function.rs:19:14
|
19 | fn foo6() -> Result<JsValue, JsValue> { Ok(JsValue::from(1u32)) }
| ^^^^^^^^^^^^^^^^^^^^^^^^ the trait `wasm_bindgen::__rt::Start` is not implemented for `Result<wasm_bindgen::JsValue, wasm_bindgen::JsValue>`
|
= help: the trait `wasm_bindgen::__rt::Start` is implemented for `Result<(), E>`
error[E0277]: the trait bound `Result<wasm_bindgen::JsValue, ()>: wasm_bindgen::__rt::Start` is not satisfied
--> ui-tests/start-function.rs:28:26
|
28 | async fn foo_async3() -> Result<JsValue, ()> { Err(()) }
| ^^^^^^^^^^^^^^^^^^^ the trait `wasm_bindgen::__rt::Start` is not implemented for `Result<wasm_bindgen::JsValue, ()>`
|
= help: the trait `wasm_bindgen::__rt::Start` is implemented for `Result<(), E>`
error[E0277]: the trait bound `Result<wasm_bindgen::JsValue, wasm_bindgen::JsValue>: wasm_bindgen::__rt::Start` is not satisfied
--> ui-tests/start-function.rs:31:26
|
31 | async fn foo_async4() -> Result<JsValue, JsValue> { Ok(JsValue::from(1u32)) }
| ^^^^^^^^^^^^^^^^^^^^^^^^ the trait `wasm_bindgen::__rt::Start` is not implemented for `Result<wasm_bindgen::JsValue, wasm_bindgen::JsValue>`
|
= help: the trait `wasm_bindgen::__rt::Start` is implemented for `Result<(), E>`

View file

@ -0,0 +1,15 @@
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
extern "C" {
pub type Foo;
}
#[wasm_bindgen]
struct Bar {
pub a: Foo,
#[wasm_bindgen(getter_with_clone)]
pub b: Foo,
}
fn main() {}

View file

@ -0,0 +1,24 @@
error[E0277]: the trait bound `Foo: std::marker::Copy` is not satisfied
--> ui-tests/struct-fields.rs:10:12
|
10 | pub a: Foo,
| ^^^ the trait `std::marker::Copy` is not implemented for `Foo`
|
note: required by a bound in `__wbg_get_bar_a::assert_copy`
--> ui-tests/struct-fields.rs:8:1
|
8 | #[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)
error[E0277]: the trait bound `Foo: Clone` is not satisfied
--> ui-tests/struct-fields.rs:12:12
|
12 | pub b: Foo,
| ^^^ the trait `Clone` is not implemented for `Foo`
|
help: consider annotating `Foo` with `#[derive(Clone)]`
|
3 + #[derive(Clone)]
4 | #[wasm_bindgen]
|

View file

@ -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() {}

View file

@ -0,0 +1,5 @@
error: cannot specify both `structural` and `final`
--> $DIR/structural-and-final.rs:7:40
|
7 | #[wasm_bindgen(method, structural, final)]
| ^^^^^

View file

@ -0,0 +1,11 @@
use wasm_bindgen::prelude::*;
struct A;
#[wasm_bindgen]
extern "C" {
#[wasm_bindgen]
pub fn foo(a: A);
}
fn main() {}

View file

@ -0,0 +1,17 @@
error[E0277]: the trait bound `A: IntoWasmAbi` is not satisfied
--> ui-tests/traits-not-implemented.rs:5:1
|
5 | #[wasm_bindgen]
| ^^^^^^^^^^^^^^^ the trait `IntoWasmAbi` is not implemented for `A`
|
= help: the following other types implement trait `IntoWasmAbi`:
bool
char
isize
i8
i16
i32
i64
usize
and $N others
= note: this error originates in the attribute macro `wasm_bindgen` (in Nightly builds, run with -Z macro-backtrace for more info)

View file

@ -0,0 +1,10 @@
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
extern "C" {
#[wasm_bindgen]
pub fn foo(a: A);
}
fn main() {}

View file

@ -0,0 +1,10 @@
error[E0412]: cannot find type `A` in this scope
--> ui-tests/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
|
6 | pub fn foo<A>(a: A);
| +++

View file

@ -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() {}

View file

@ -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: `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`
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`

View file

@ -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

View file

@ -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

View file

@ -0,0 +1,43 @@
extern crate wasm_bindgen as extern_test;
use wasm_bindgen::prelude::*;
mod test {
pub use wasm_bindgen as test;
pub use wasm_bindgen;
}
#[wasm_bindgen(wasm_bindgen = wasm_bindgen)]
pub fn good1() {}
#[wasm_bindgen(wasm_bindgen = ::wasm_bindgen)]
pub fn good2() {}
#[wasm_bindgen(wasm_bindgen = test::wasm_bindgen)]
pub fn good3() {}
#[wasm_bindgen(wasm_bindgen = test::test)]
pub fn good4() {}
#[wasm_bindgen(wasm_bindgen = extern_test)]
pub fn good5() {}
#[wasm_bindgen(wasm_bindgen_futures = wasm_bindgen_futures)]
pub fn good6() {}
#[wasm_bindgen(wasm_bindgen = wasm_bindgen)]
pub async fn good7() {}
#[wasm_bindgen(wasm_bindgen_futures = wasm_bindgen_futures)]
pub async fn good8() {}
#[wasm_bindgen(wasm_bindgen = wasm_bindgen, wasm_bindgen_futures = wasm_bindgen_futures)]
pub async fn good9() {}
#[wasm_bindgen(wasm_bindgen = test)]
pub fn bad1() {}
#[wasm_bindgen(wasm_bindgen_futures = test)]
pub async fn bad2() {}
fn main() {}

View file

@ -0,0 +1,25 @@
error[E0433]: failed to resolve: could not find `convert` in `test`
--> ui-tests/wasm-bindgen.rs:37:1
|
37 | #[wasm_bindgen(wasm_bindgen = test)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ could not find `convert` in `test`
|
= note: this error originates in the attribute macro `wasm_bindgen` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider importing one of these items
|
3 + use crate::test::test::convert;
|
3 + use wasm_bindgen::convert;
|
error[E0425]: cannot find function `future_to_promise` in module `test`
--> ui-tests/wasm-bindgen.rs:40:1
|
40 | #[wasm_bindgen(wasm_bindgen_futures = test)]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ not found in `test`
|
= note: this error originates in the attribute macro `wasm_bindgen` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider importing this function
|
3 + use wasm_bindgen_futures::future_to_promise;
|