From 4cc730fc41c703c69553a9dddffb67ef7f515399 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Wed, 15 May 2019 14:46:03 -0700 Subject: [PATCH] Migrate to `trybuild` from `compiletest` This migrates our UI tests to the recently published `trybuild` crate which should hopefully be a bit more robust than `compiletest` over time! --- Cargo.toml | 1 - azure-pipelines.yml | 2 +- crates/macro/Cargo.toml | 4 ++ crates/macro/tests/ui.rs | 5 ++ crates/macro/ui-tests/Cargo.toml | 15 ----- .../ui-tests/attribute-fails-to-parse.rs | 6 +- .../ui-tests/attribute-fails-to-parse.stderr | 7 +- crates/macro/ui-tests/bad-signatures.rs | 6 +- crates/macro/ui-tests/bad-signatures.stderr | 19 +++--- crates/macro/ui-tests/import-local.rs | 4 +- crates/macro/ui-tests/import-local.stderr | 15 ++--- crates/macro/ui-tests/invalid-attr.rs | 6 +- crates/macro/ui-tests/invalid-attr.stderr | 19 +++--- crates/macro/ui-tests/invalid-enums.rs | 6 +- crates/macro/ui-tests/invalid-enums.stderr | 23 +++---- crates/macro/ui-tests/invalid-imports.rs | 6 +- crates/macro/ui-tests/invalid-imports.stderr | 67 +++++++++---------- crates/macro/ui-tests/invalid-items.rs | 6 +- crates/macro/ui-tests/invalid-items.stderr | 65 +++++++++--------- crates/macro/ui-tests/invalid-methods.rs | 6 +- crates/macro/ui-tests/invalid-methods.stderr | 53 ++++++++------- crates/macro/ui-tests/invalid-setter.rs | 3 - crates/macro/ui-tests/invalid-setter.stderr | 11 ++- crates/macro/ui-tests/non-public-function.rs | 6 +- .../macro/ui-tests/non-public-function.stderr | 7 +- crates/macro/ui-tests/pub-not-copy.rs | 6 +- crates/macro/ui-tests/pub-not-copy.stderr | 10 ++- crates/macro/ui-tests/start-function.rs | 6 +- crates/macro/ui-tests/start-function.stderr | 15 ++--- crates/macro/ui-tests/structural-and-final.rs | 6 +- .../ui-tests/structural-and-final.stderr | 11 ++- crates/macro/ui-tests/test.rs | 25 ------- crates/macro/ui-tests/unused-attributes.rs | 6 +- .../macro/ui-tests/unused-attributes.stderr | 19 +++--- 34 files changed, 189 insertions(+), 283 deletions(-) create mode 100644 crates/macro/tests/ui.rs delete mode 100644 crates/macro/ui-tests/Cargo.toml delete mode 100644 crates/macro/ui-tests/test.rs diff --git a/Cargo.toml b/Cargo.toml index 5154106a..fdde482a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -51,7 +51,6 @@ members = [ "benchmarks", "crates/cli", "crates/js-sys", - "crates/macro/ui-tests", "crates/test", "crates/test/sample", "crates/typescript-tests", diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 9ccb9c11..366cc447 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -115,7 +115,7 @@ jobs: toolchain: beta - template: ci/azure-install-node.yml - template: ci/azure-install-sccache.yml - - script: cargo test -p ui-tests + - script: cargo test -p wasm-bindgen-macro - job: test_wasm_interpreter displayName: "Run wasm-bindgen-wasm-interpreter tests" diff --git a/crates/macro/Cargo.toml b/crates/macro/Cargo.toml index 71de58f8..0775ab16 100644 --- a/crates/macro/Cargo.toml +++ b/crates/macro/Cargo.toml @@ -22,3 +22,7 @@ strict-macro = ["wasm-bindgen-macro-support/strict-macro"] [dependencies] wasm-bindgen-macro-support = { path = "../macro-support", version = "=0.2.43" } quote = "0.6" + +[dev-dependencies] +trybuild = "1.0" +wasm-bindgen = { path = "../..", version = "0.2.43", features = ['strict-macro'] } diff --git a/crates/macro/tests/ui.rs b/crates/macro/tests/ui.rs new file mode 100644 index 00000000..da15c921 --- /dev/null +++ b/crates/macro/tests/ui.rs @@ -0,0 +1,5 @@ +#[test] +fn ui() { + let t = trybuild::TestCases::new(); + t.compile_fail("ui-tests/*.rs"); +} diff --git a/crates/macro/ui-tests/Cargo.toml b/crates/macro/ui-tests/Cargo.toml deleted file mode 100644 index 35f9b437..00000000 --- a/crates/macro/ui-tests/Cargo.toml +++ /dev/null @@ -1,15 +0,0 @@ -[package] -name = "ui-tests" -version = "0.1.0" -authors = ["The wasm-bindgen Developers"] - -[lib] -path = "test.rs" -doctest = false -harness = false - -[dependencies] -wasm-bindgen = { path = "../../..", features = ["strict-macro"] } - -[dev-dependencies] -compiletest_rs = { version = "0.3", features = ['stable'] } diff --git a/crates/macro/ui-tests/attribute-fails-to-parse.rs b/crates/macro/ui-tests/attribute-fails-to-parse.rs index 919094cc..2d5b34bc 100644 --- a/crates/macro/ui-tests/attribute-fails-to-parse.rs +++ b/crates/macro/ui-tests/attribute-fails-to-parse.rs @@ -1,8 +1,6 @@ -#![crate_type = "rlib"] - -extern crate wasm_bindgen; - use wasm_bindgen::prelude::*; #[wasm_bindgen(nonsense)] pub fn foo() {} + +fn main() {} diff --git a/crates/macro/ui-tests/attribute-fails-to-parse.stderr b/crates/macro/ui-tests/attribute-fails-to-parse.stderr index 680c44b2..dfe9ecf0 100644 --- a/crates/macro/ui-tests/attribute-fails-to-parse.stderr +++ b/crates/macro/ui-tests/attribute-fails-to-parse.stderr @@ -1,8 +1,5 @@ error: unknown attribute - --> $DIR/attribute-fails-to-parse.rs:7:16 + --> $DIR/attribute-fails-to-parse.rs:3:16 | -7 | #[wasm_bindgen(nonsense)] +3 | #[wasm_bindgen(nonsense)] | ^^^^^^^^ - -error: aborting due to previous error - diff --git a/crates/macro/ui-tests/bad-signatures.rs b/crates/macro/ui-tests/bad-signatures.rs index 44807775..de2c0e15 100644 --- a/crates/macro/ui-tests/bad-signatures.rs +++ b/crates/macro/ui-tests/bad-signatures.rs @@ -1,7 +1,3 @@ -#![crate_type = "rlib"] - -extern crate wasm_bindgen; - use wasm_bindgen::prelude::*; #[wasm_bindgen] @@ -13,3 +9,5 @@ extern "C" { fn foo() -> &u32; } + +fn main() {} diff --git a/crates/macro/ui-tests/bad-signatures.stderr b/crates/macro/ui-tests/bad-signatures.stderr index 0a8466ab..48d8d40d 100644 --- a/crates/macro/ui-tests/bad-signatures.stderr +++ b/crates/macro/ui-tests/bad-signatures.stderr @@ -1,20 +1,17 @@ error: cannot return a borrowed ref with #[wasm_bindgen] - --> $DIR/bad-signatures.rs:8:17 + --> $DIR/bad-signatures.rs:4:17 | -8 | pub fn foo() -> &u32 {} +4 | pub fn foo() -> &u32 {} | ^^^^ error: unsupported pattern in #[wasm_bindgen] imported function - --> $DIR/bad-signatures.rs:12:12 - | -12 | fn foo(Foo(x): Foo); - | ^^^^^^ + --> $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:14:17 + --> $DIR/bad-signatures.rs:10:17 | -14 | fn foo() -> &u32; +10 | fn foo() -> &u32; | ^^^^ - -error: aborting due to 3 previous errors - diff --git a/crates/macro/ui-tests/import-local.rs b/crates/macro/ui-tests/import-local.rs index 42613c3c..ff86375b 100644 --- a/crates/macro/ui-tests/import-local.rs +++ b/crates/macro/ui-tests/import-local.rs @@ -1,5 +1,3 @@ -extern crate wasm_bindgen; - use wasm_bindgen::prelude::*; #[wasm_bindgen(module = "./foo.js")] @@ -9,7 +7,7 @@ extern { #[wasm_bindgen(module = "../foo.js")] extern { - fn wut(); + fn wut2(); } fn main() {} diff --git a/crates/macro/ui-tests/import-local.stderr b/crates/macro/ui-tests/import-local.stderr index 8d0d0bc2..707b30fc 100644 --- a/crates/macro/ui-tests/import-local.stderr +++ b/crates/macro/ui-tests/import-local.stderr @@ -1,14 +1,11 @@ error: relative module paths aren't supported yet - --> $DIR/import-local.rs:5:25 + --> $DIR/import-local.rs:3:25 | -5 | #[wasm_bindgen(module = "./foo.js")] +3 | #[wasm_bindgen(module = "./foo.js")] | ^^^^^^^^^^ error: relative module paths aren't supported yet - --> $DIR/import-local.rs:10:25 - | -10 | #[wasm_bindgen(module = "../foo.js")] - | ^^^^^^^^^^^ - -error: aborting due to 2 previous errors - + --> $DIR/import-local.rs:8:25 + | +8 | #[wasm_bindgen(module = "../foo.js")] + | ^^^^^^^^^^^ diff --git a/crates/macro/ui-tests/invalid-attr.rs b/crates/macro/ui-tests/invalid-attr.rs index a012abe8..188a1c83 100644 --- a/crates/macro/ui-tests/invalid-attr.rs +++ b/crates/macro/ui-tests/invalid-attr.rs @@ -1,7 +1,3 @@ -#![crate_type = "rlib"] - -extern crate wasm_bindgen; - use wasm_bindgen::prelude::*; #[wasm_bindgen(x)] @@ -15,3 +11,5 @@ extern "C" { #[wasm_bindgen { }] fn bar(); } + +fn main() {} diff --git a/crates/macro/ui-tests/invalid-attr.stderr b/crates/macro/ui-tests/invalid-attr.stderr index 8e1e4b05..47264acd 100644 --- a/crates/macro/ui-tests/invalid-attr.stderr +++ b/crates/macro/ui-tests/invalid-attr.stderr @@ -1,20 +1,17 @@ error: unknown attribute - --> $DIR/invalid-attr.rs:7:16 + --> $DIR/invalid-attr.rs:3:16 | -7 | #[wasm_bindgen(x)] +3 | #[wasm_bindgen(x)] | ^ error: unknown attribute - --> $DIR/invalid-attr.rs:12:20 - | -12 | #[wasm_bindgen(y)] - | ^ + --> $DIR/invalid-attr.rs:8:20 + | +8 | #[wasm_bindgen(y)] + | ^ error: malformed #[wasm_bindgen] attribute - --> $DIR/invalid-attr.rs:15:5 + --> $DIR/invalid-attr.rs:11:5 | -15 | #[wasm_bindgen { }] +11 | #[wasm_bindgen { }] | ^^^^^^^^^^^^^^^^^^^^ - -error: aborting due to 3 previous errors - diff --git a/crates/macro/ui-tests/invalid-enums.rs b/crates/macro/ui-tests/invalid-enums.rs index 96275592..abea3fa6 100644 --- a/crates/macro/ui-tests/invalid-enums.rs +++ b/crates/macro/ui-tests/invalid-enums.rs @@ -1,7 +1,3 @@ -#![crate_type = "rlib"] - -extern crate wasm_bindgen; - use wasm_bindgen::prelude::*; #[wasm_bindgen] @@ -21,3 +17,5 @@ pub enum C { pub enum D { X = 4294967296, } + +fn main() {} diff --git a/crates/macro/ui-tests/invalid-enums.stderr b/crates/macro/ui-tests/invalid-enums.stderr index 06da7570..30149f24 100644 --- a/crates/macro/ui-tests/invalid-enums.stderr +++ b/crates/macro/ui-tests/invalid-enums.stderr @@ -1,26 +1,23 @@ error: only public enums are allowed with #[wasm_bindgen] - --> $DIR/invalid-enums.rs:8:1 + --> $DIR/invalid-enums.rs:4:1 | -8 | enum A {} +4 | enum A {} | ^^^^^^^^^ error: only C-Style enums allowed with #[wasm_bindgen] - --> $DIR/invalid-enums.rs:12:6 - | -12 | D(u32), - | ^^^^^ + --> $DIR/invalid-enums.rs:8:6 + | +8 | D(u32), + | ^^^^^ error: enums with #[wasm_bidngen] may only have number literal values - --> $DIR/invalid-enums.rs:17:9 + --> $DIR/invalid-enums.rs:13:9 | -17 | X = 1 + 3, +13 | X = 1 + 3, | ^^^^^ error: enums with #[wasm_bindgen] can only support numbers that can be represented as u32 - --> $DIR/invalid-enums.rs:22:9 + --> $DIR/invalid-enums.rs:18:9 | -22 | X = 4294967296, +18 | X = 4294967296, | ^^^^^^^^^^ - -error: aborting due to 4 previous errors - diff --git a/crates/macro/ui-tests/invalid-imports.rs b/crates/macro/ui-tests/invalid-imports.rs index 790c65fe..ecd223b7 100644 --- a/crates/macro/ui-tests/invalid-imports.rs +++ b/crates/macro/ui-tests/invalid-imports.rs @@ -1,7 +1,3 @@ -#![crate_type = "rlib"] - -extern crate wasm_bindgen; - use wasm_bindgen::prelude::*; #[wasm_bindgen] @@ -41,3 +37,5 @@ extern "C" { #[wasm_bindgen(catch)] fn f() -> Result<'a>; } + +fn main() {} diff --git a/crates/macro/ui-tests/invalid-imports.stderr b/crates/macro/ui-tests/invalid-imports.stderr index f2574c45..5b39369b 100644 --- a/crates/macro/ui-tests/invalid-imports.stderr +++ b/crates/macro/ui-tests/invalid-imports.stderr @@ -1,92 +1,89 @@ error: it is currently not sound to use lifetimes in function signatures - --> $DIR/invalid-imports.rs:11:16 - | -11 | fn f() -> &'static u32; - | ^^^^^^^ + --> $DIR/invalid-imports.rs:7:16 + | +7 | fn f() -> &'static u32; + | ^^^^^^^ error: imported methods must have at least one argument - --> $DIR/invalid-imports.rs:14:5 + --> $DIR/invalid-imports.rs:10:5 | -14 | fn f1(); +10 | fn f1(); | ^^^^^^^^ error: first argument of method must be a shared reference - --> $DIR/invalid-imports.rs:16:14 + --> $DIR/invalid-imports.rs:12:14 | -16 | fn f2(x: u32); +12 | fn f2(x: u32); | ^^^ error: first argument of method must be a path - --> $DIR/invalid-imports.rs:18:14 + --> $DIR/invalid-imports.rs:14:14 | -18 | fn f3(x: &&u32); +14 | fn f3(x: &&u32); | ^^^^^ error: multi-segment paths are not supported yet - --> $DIR/invalid-imports.rs:20:15 + --> $DIR/invalid-imports.rs:16:15 | -20 | fn f4(x: &foo::Bar); +16 | fn f4(x: &foo::Bar); | ^^^^^^^^ error: global paths are not supported yet - --> $DIR/invalid-imports.rs:22:15 + --> $DIR/invalid-imports.rs:18:15 | -22 | fn f4(x: &::Bar); +18 | fn f4(x: &::Bar); | ^^^^^ error: paths with type parameters are not supported yet - --> $DIR/invalid-imports.rs:24:15 + --> $DIR/invalid-imports.rs:20:15 | -24 | fn f4(x: &Bar); +20 | fn f4(x: &Bar); | ^^^^^^ error: paths with type parameters are not supported yet - --> $DIR/invalid-imports.rs:26:15 + --> $DIR/invalid-imports.rs:22:15 | -26 | fn f4(x: &Fn(T)); +22 | fn f4(x: &Fn(T)); | ^^^^^ error: constructor returns must be bare types - --> $DIR/invalid-imports.rs:29:5 + --> $DIR/invalid-imports.rs:25:5 | -29 | fn f(); +25 | fn f(); | ^^^^^^^ error: global paths are not supported yet - --> $DIR/invalid-imports.rs:31:15 + --> $DIR/invalid-imports.rs:27:15 | -31 | fn f() -> ::Bar; +27 | fn f() -> ::Bar; | ^^^^^ error: return value of constructor must be a bare path - --> $DIR/invalid-imports.rs:33:5 + --> $DIR/invalid-imports.rs:29:5 | -33 | fn f() -> &Bar; +29 | fn f() -> &Bar; | ^^^^^^^^^^^^^^^ error: must be Result<...> - --> $DIR/invalid-imports.rs:36:15 + --> $DIR/invalid-imports.rs:32:15 | -36 | fn f() -> u32; +32 | fn f() -> u32; | ^^^ error: must be Result<...> - --> $DIR/invalid-imports.rs:38:15 + --> $DIR/invalid-imports.rs:34:15 | -38 | fn f() -> &u32; +34 | fn f() -> &u32; | ^^^^ error: must have at least one generic parameter - --> $DIR/invalid-imports.rs:40:15 + --> $DIR/invalid-imports.rs:36:15 | -40 | fn f() -> Result<>; +36 | fn f() -> Result<>; | ^^^^^^^^ error: it is currently not sound to use lifetimes in function signatures - --> $DIR/invalid-imports.rs:42:22 + --> $DIR/invalid-imports.rs:38:22 | -42 | fn f() -> Result<'a>; +38 | fn f() -> Result<'a>; | ^^ - -error: aborting due to 15 previous errors - diff --git a/crates/macro/ui-tests/invalid-items.rs b/crates/macro/ui-tests/invalid-items.rs index 3a729cd2..562a10ee 100644 --- a/crates/macro/ui-tests/invalid-items.rs +++ b/crates/macro/ui-tests/invalid-items.rs @@ -1,7 +1,3 @@ -#![crate_type = "rlib"] - -extern crate wasm_bindgen; - use wasm_bindgen::prelude::*; #[wasm_bindgen] @@ -36,3 +32,5 @@ pub fn foo6<'a, T>() {} #[wasm_bindgen] trait X {} + +fn main() {} diff --git a/crates/macro/ui-tests/invalid-items.stderr b/crates/macro/ui-tests/invalid-items.stderr index 6040cf4d..2df6351b 100644 --- a/crates/macro/ui-tests/invalid-items.stderr +++ b/crates/macro/ui-tests/invalid-items.stderr @@ -1,68 +1,65 @@ error: can only #[wasm_bindgen] public functions - --> $DIR/invalid-items.rs:8:1 + --> $DIR/invalid-items.rs:4:1 | -8 | fn foo() {} +4 | fn foo() {} | ^^^^^^^^^^^ error: can only #[wasm_bindgen] safe functions - --> $DIR/invalid-items.rs:11:5 - | -11 | pub unsafe fn foo1() {} - | ^^^^^^ + --> $DIR/invalid-items.rs:7:5 + | +7 | pub unsafe fn foo1() {} + | ^^^^^^ error: can only #[wasm_bindgen] non-const functions - --> $DIR/invalid-items.rs:14:5 + --> $DIR/invalid-items.rs:10:5 | -14 | pub const fn foo2() {} +10 | pub const fn foo2() {} | ^^^^^ error: structs with #[wasm_bindgen] cannot have lifetime or type parameters currently - --> $DIR/invalid-items.rs:17:11 + --> $DIR/invalid-items.rs:13:11 | -17 | struct Foo(T); +13 | struct Foo(T); | ^^^ error: cannot import mutable globals yet - --> $DIR/invalid-items.rs:21:12 + --> $DIR/invalid-items.rs:17:12 | -21 | static mut FOO: u32; +17 | static mut FOO: u32; | ^^^ error: can't #[wasm_bindgen] variadic functions - --> $DIR/invalid-items.rs:23:25 + --> $DIR/invalid-items.rs:19:25 | -23 | pub fn foo3(x: i32, ...); +19 | pub fn foo3(x: i32, ...); | ^^^ error: only foreign mods with the `C` ABI are allowed - --> $DIR/invalid-items.rs:27:8 + --> $DIR/invalid-items.rs:23:8 | -27 | extern "system" { +23 | extern "system" { | ^^^^^^^^ +error: can't #[wasm_bindgen] functions with lifetime or type parameters + --> $DIR/invalid-items.rs:27:12 + | +27 | pub fn foo4() {} + | ^^^ + +error: can't #[wasm_bindgen] functions with lifetime or type parameters + --> $DIR/invalid-items.rs:29:12 + | +29 | pub fn foo5<'a>() {} + | ^^^^ + error: can't #[wasm_bindgen] functions with lifetime or type parameters --> $DIR/invalid-items.rs:31:12 | -31 | pub fn foo4() {} - | ^^^ - -error: can't #[wasm_bindgen] functions with lifetime or type parameters - --> $DIR/invalid-items.rs:33:12 - | -33 | pub fn foo5<'a>() {} - | ^^^^ - -error: can't #[wasm_bindgen] functions with lifetime or type parameters - --> $DIR/invalid-items.rs:35:12 - | -35 | pub fn foo6<'a, T>() {} +31 | 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:38:1 + --> $DIR/invalid-items.rs:34:1 | -38 | trait X {} +34 | trait X {} | ^^^^^^^^^^ - -error: aborting due to 11 previous errors - diff --git a/crates/macro/ui-tests/invalid-methods.rs b/crates/macro/ui-tests/invalid-methods.rs index 915b16d2..864abdfc 100644 --- a/crates/macro/ui-tests/invalid-methods.rs +++ b/crates/macro/ui-tests/invalid-methods.rs @@ -1,7 +1,3 @@ -#![crate_type = "rlib"] - -extern crate wasm_bindgen; - use wasm_bindgen::prelude::*; #[wasm_bindgen] @@ -47,3 +43,5 @@ impl A { impl A { pub unsafe fn foo() {} } + +fn main() {} diff --git a/crates/macro/ui-tests/invalid-methods.stderr b/crates/macro/ui-tests/invalid-methods.stderr index b01dc7c8..92af1844 100644 --- a/crates/macro/ui-tests/invalid-methods.stderr +++ b/crates/macro/ui-tests/invalid-methods.stderr @@ -1,62 +1,67 @@ error: #[wasm_bindgen] default impls are not supported - --> $DIR/invalid-methods.rs:11:1 - | -11 | default impl A { - | ^^^^^^^ + --> $DIR/invalid-methods.rs:7:1 + | +7 | default impl A { + | ^^^^^^^ error: #[wasm_bindgen] unsafe impls are not supported - --> $DIR/invalid-methods.rs:15:1 + --> $DIR/invalid-methods.rs:11:1 | -15 | unsafe impl A { +11 | unsafe impl A { | ^^^^^^ error: #[wasm_bindgen] trait impls are not supported - --> $DIR/invalid-methods.rs:19:6 + --> $DIR/invalid-methods.rs:15:6 | -19 | impl Clone for A { +15 | impl Clone for A { | ^^^^^ error: #[wasm_bindgen] generic impls aren't supported - --> $DIR/invalid-methods.rs:23:5 + --> $DIR/invalid-methods.rs:19:5 | -23 | impl A { +19 | impl A { | ^^^ error: unsupported self type in #[wasm_bindgen] impl - --> $DIR/invalid-methods.rs:27:6 + --> $DIR/invalid-methods.rs:23:6 | -27 | impl &'static A { +23 | impl &'static A { | ^^^^^^^^^^ error: const definitions aren't supported with #[wasm_bindgen] - --> $DIR/invalid-methods.rs:34:5 + --> $DIR/invalid-methods.rs:30:5 | -34 | const X: u32 = 3; +30 | const X: u32 = 3; | ^^^^^^^^^^^^^^^^^ error: type definitions in impls aren't supported with #[wasm_bindgen] - --> $DIR/invalid-methods.rs:35:5 + --> $DIR/invalid-methods.rs:31:5 | -35 | type Y = u32; +31 | type Y = u32; | ^^^^^^^^^^^^^ error: macros in impls aren't supported - --> $DIR/invalid-methods.rs:36:5 + --> $DIR/invalid-methods.rs:32:5 | -36 | x!(); +32 | x!(); | ^^^^^ error: can only #[wasm_bindgen] non-const functions - --> $DIR/invalid-methods.rs:43:9 + --> $DIR/invalid-methods.rs:39:9 | -43 | pub const fn foo() {} +39 | pub const fn foo() {} | ^^^^^ error: can only bindgen safe functions - --> $DIR/invalid-methods.rs:48:9 + --> $DIR/invalid-methods.rs:44:9 | -48 | pub unsafe fn foo() {} +44 | pub unsafe fn foo() {} | ^^^^^^ -error: aborting due to 10 previous errors - +warning: unused macro definition + --> $DIR/invalid-methods.rs:26:1 + | +26 | macro_rules! x { () => () } + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ + | + = note: #[warn(unused_macros)] on by default diff --git a/crates/macro/ui-tests/invalid-setter.rs b/crates/macro/ui-tests/invalid-setter.rs index 4962dcd8..42d83879 100644 --- a/crates/macro/ui-tests/invalid-setter.rs +++ b/crates/macro/ui-tests/invalid-setter.rs @@ -1,6 +1,3 @@ -#![crate_type = "rlib"] - -extern crate wasm_bindgen; use wasm_bindgen::prelude::*; diff --git a/crates/macro/ui-tests/invalid-setter.stderr b/crates/macro/ui-tests/invalid-setter.stderr index dc7f7df9..77e1509e 100644 --- a/crates/macro/ui-tests/invalid-setter.stderr +++ b/crates/macro/ui-tests/invalid-setter.stderr @@ -1,8 +1,5 @@ error: setters must start with `set_`, found: a - --> $DIR/invalid-setter.rs:12:8 - | -12 | fn a(this: &A, b: i32); - | ^ - -error: aborting due to previous error - + --> $DIR/invalid-setter.rs:9:8 + | +9 | fn a(this: &A, b: i32); + | ^ diff --git a/crates/macro/ui-tests/non-public-function.rs b/crates/macro/ui-tests/non-public-function.rs index bfd0feae..5f2e5587 100644 --- a/crates/macro/ui-tests/non-public-function.rs +++ b/crates/macro/ui-tests/non-public-function.rs @@ -1,8 +1,6 @@ -#![crate_type = "rlib"] - -extern crate wasm_bindgen; - use wasm_bindgen::prelude::*; #[wasm_bindgen] fn foo() {} + +fn main() {} diff --git a/crates/macro/ui-tests/non-public-function.stderr b/crates/macro/ui-tests/non-public-function.stderr index 510dc537..02f2a329 100644 --- a/crates/macro/ui-tests/non-public-function.stderr +++ b/crates/macro/ui-tests/non-public-function.stderr @@ -1,8 +1,5 @@ error: can only #[wasm_bindgen] public functions - --> $DIR/non-public-function.rs:8:1 + --> $DIR/non-public-function.rs:4:1 | -8 | fn foo() {} +4 | fn foo() {} | ^^^^^^^^^^^ - -error: aborting due to previous error - diff --git a/crates/macro/ui-tests/pub-not-copy.rs b/crates/macro/ui-tests/pub-not-copy.rs index 4c7cf0b3..b5f6b0cf 100644 --- a/crates/macro/ui-tests/pub-not-copy.rs +++ b/crates/macro/ui-tests/pub-not-copy.rs @@ -1,10 +1,8 @@ -#![crate_type = "rlib"] - -extern crate wasm_bindgen; - use wasm_bindgen::prelude::*; #[wasm_bindgen] pub struct A { pub field: String, } + +fn main() {} diff --git a/crates/macro/ui-tests/pub-not-copy.stderr b/crates/macro/ui-tests/pub-not-copy.stderr index 95b597c4..632b1e21 100644 --- a/crates/macro/ui-tests/pub-not-copy.stderr +++ b/crates/macro/ui-tests/pub-not-copy.stderr @@ -1,15 +1,13 @@ error[E0277]: the trait bound `std::string::String: std::marker::Copy` is not satisfied - --> $DIR/pub-not-copy.rs:9:16 + --> $DIR/pub-not-copy.rs:5:16 | -9 | pub field: String, +5 | pub field: String, | ^^^^^^ the trait `std::marker::Copy` is not implemented for `std::string::String` | note: required by `__wbg_get_a_field::assert_copy` - --> $DIR/pub-not-copy.rs:7:1 + --> $DIR/pub-not-copy.rs:3:1 | -7 | #[wasm_bindgen] +3 | #[wasm_bindgen] | ^^^^^^^^^^^^^^^ -error: aborting due to previous error - For more information about this error, try `rustc --explain E0277`. diff --git a/crates/macro/ui-tests/start-function.rs b/crates/macro/ui-tests/start-function.rs index a4994ee5..3947840c 100644 --- a/crates/macro/ui-tests/start-function.rs +++ b/crates/macro/ui-tests/start-function.rs @@ -1,7 +1,3 @@ -#![crate_type = "rlib"] - -extern crate wasm_bindgen; - use wasm_bindgen::prelude::*; #[wasm_bindgen(start)] @@ -12,3 +8,5 @@ pub fn foo2(x: u32) {} #[wasm_bindgen(start)] pub fn foo3() {} + +fn main() {} diff --git a/crates/macro/ui-tests/start-function.stderr b/crates/macro/ui-tests/start-function.stderr index 3d30dd42..43d845f9 100644 --- a/crates/macro/ui-tests/start-function.stderr +++ b/crates/macro/ui-tests/start-function.stderr @@ -1,14 +1,11 @@ error: the start function cannot have arguments - --> $DIR/start-function.rs:11:13 - | -11 | pub fn foo2(x: u32) {} - | ^^^^^^ + --> $DIR/start-function.rs:7:13 + | +7 | pub fn foo2(x: u32) {} + | ^^^^^^ error: the start function cannot have generics - --> $DIR/start-function.rs:14:12 + --> $DIR/start-function.rs:10:12 | -14 | pub fn foo3() {} +10 | pub fn foo3() {} | ^^^ - -error: aborting due to 2 previous errors - diff --git a/crates/macro/ui-tests/structural-and-final.rs b/crates/macro/ui-tests/structural-and-final.rs index 17182579..5c5a4ecc 100644 --- a/crates/macro/ui-tests/structural-and-final.rs +++ b/crates/macro/ui-tests/structural-and-final.rs @@ -1,7 +1,3 @@ -#![crate_type = "rlib"] - -extern crate wasm_bindgen; - use wasm_bindgen::prelude::*; #[wasm_bindgen] @@ -11,3 +7,5 @@ extern "C" { #[wasm_bindgen(method, structural, final)] fn bar(this: &Foo); } + +fn main() {} diff --git a/crates/macro/ui-tests/structural-and-final.stderr b/crates/macro/ui-tests/structural-and-final.stderr index 11050ac1..8c8a7038 100644 --- a/crates/macro/ui-tests/structural-and-final.stderr +++ b/crates/macro/ui-tests/structural-and-final.stderr @@ -1,8 +1,5 @@ error: cannot specify both `structural` and `final` - --> $DIR/structural-and-final.rs:11:40 - | -11 | #[wasm_bindgen(method, structural, final)] - | ^^^^^ - -error: aborting due to previous error - + --> $DIR/structural-and-final.rs:7:40 + | +7 | #[wasm_bindgen(method, structural, final)] + | ^^^^^ diff --git a/crates/macro/ui-tests/test.rs b/crates/macro/ui-tests/test.rs deleted file mode 100644 index 3abb40af..00000000 --- a/crates/macro/ui-tests/test.rs +++ /dev/null @@ -1,25 +0,0 @@ -// ignore-test - not a test - -#![cfg(test)] - -extern crate compiletest_rs as compiletest; - -use std::env; -use std::fs; -use std::path::PathBuf; - -fn main() { - let mut config = compiletest::Config::default(); - config.mode = "ui".parse().expect("invalid mode"); - let mut me = env::current_exe().unwrap(); - me.pop(); - config.target_rustcflags = Some(format!("-L {}", me.display())); - let src = PathBuf::from(env!("CARGO_MANIFEST_DIR")); - config.src_base = src; - - me.pop(); - me.pop(); - config.build_base = me.join("tests/ui"); - drop(fs::remove_dir_all(&config.build_base)); - compiletest::run_tests(&config); -} diff --git a/crates/macro/ui-tests/unused-attributes.rs b/crates/macro/ui-tests/unused-attributes.rs index bc5423ef..de7962e4 100644 --- a/crates/macro/ui-tests/unused-attributes.rs +++ b/crates/macro/ui-tests/unused-attributes.rs @@ -1,7 +1,3 @@ -#![crate_type = "rlib"] - -extern crate wasm_bindgen; - use wasm_bindgen::prelude::*; struct A; @@ -13,3 +9,5 @@ impl A { pub fn foo() { } } + +fn main() {} diff --git a/crates/macro/ui-tests/unused-attributes.stderr b/crates/macro/ui-tests/unused-attributes.stderr index 33f2602c..12f2c01f 100644 --- a/crates/macro/ui-tests/unused-attributes.stderr +++ b/crates/macro/ui-tests/unused-attributes.stderr @@ -1,14 +1,11 @@ error: unused #[wasm_bindgen] attribute - --> $DIR/unused-attributes.rs:11:20 - | -11 | #[wasm_bindgen(method)] - | ^^^^^^ + --> $DIR/unused-attributes.rs:7:20 + | +7 | #[wasm_bindgen(method)] + | ^^^^^^ error: unused #[wasm_bindgen] attribute - --> $DIR/unused-attributes.rs:12:20 - | -12 | #[wasm_bindgen(method)] - | ^^^^^^ - -error: aborting due to 2 previous errors - + --> $DIR/unused-attributes.rs:8:20 + | +8 | #[wasm_bindgen(method)] + | ^^^^^^