From 674a5db1a50e25dd60a8ee6669edee9a366c9fab Mon Sep 17 00:00:00 2001 From: Vadim Petrochenkov Date: Fri, 17 Aug 2018 13:17:39 +0300 Subject: [PATCH] Fix undesirable fallout compile-fail-fulldeps/proc-macro/proc-macro-attributes.rs - resolution change for derive helper attributes with the same name as derive itself run-pass/macro-comma-support.rs - indeterminate resolutions for macros in expression positions ui/issues/issue-49074.rs - diagnostics regression, not enough recovery to report the second error ui/object-lifetime/object-lifetime-default.stderr - unstable diagnostics? --- .../proc-macro/proc-macro-attributes.rs | 6 +- src/test/run-pass/macro-comma-support.rs | 102 +++++++++--------- src/test/ui/issues/issue-49074.rs | 1 - src/test/ui/issues/issue-49074.stderr | 10 +- .../object-lifetime-default.stderr | 48 ++++----- 5 files changed, 79 insertions(+), 88 deletions(-) diff --git a/src/test/compile-fail-fulldeps/proc-macro/proc-macro-attributes.rs b/src/test/compile-fail-fulldeps/proc-macro/proc-macro-attributes.rs index df3f7a239b9..215d51c2270 100644 --- a/src/test/compile-fail-fulldeps/proc-macro/proc-macro-attributes.rs +++ b/src/test/compile-fail-fulldeps/proc-macro/proc-macro-attributes.rs @@ -17,11 +17,11 @@ extern crate derive_b; #[derive(B)] -#[B] -#[C] //~ ERROR: The attribute `C` is currently unknown to the compiler +#[B] //~ ERROR `B` is a derive mode +#[C] #[B(D)] #[B(E = "foo")] -#[B(arbitrary tokens)] //~ ERROR expected one of `(`, `)`, `,`, `::`, or `=`, found `tokens` +#[B(arbitrary tokens)] struct B; fn main() {} diff --git a/src/test/run-pass/macro-comma-support.rs b/src/test/run-pass/macro-comma-support.rs index bfd911002a0..f645849cd51 100644 --- a/src/test/run-pass/macro-comma-support.rs +++ b/src/test/run-pass/macro-comma-support.rs @@ -61,30 +61,30 @@ fn assert_ne() { #[test] fn cfg() { - let _ = cfg!(pants); - let _ = cfg!(pants,); - let _ = cfg!(pants = "pants"); - let _ = cfg!(pants = "pants",); - let _ = cfg!(all(pants)); - let _ = cfg!(all(pants),); - let _ = cfg!(all(pants,)); - let _ = cfg!(all(pants,),); + cfg!(pants); + cfg!(pants,); + cfg!(pants = "pants"); + cfg!(pants = "pants",); + cfg!(all(pants)); + cfg!(all(pants),); + cfg!(all(pants,)); + cfg!(all(pants,),); } #[test] fn column() { - let _ = column!(); + column!(); } // compile_error! is in a companion to this test in compile-fail #[test] fn concat() { - let _ = concat!(); - let _ = concat!("hello"); - let _ = concat!("hello",); - let _ = concat!("hello", " world"); - let _ = concat!("hello", " world",); + concat!(); + concat!("hello"); + concat!("hello",); + concat!("hello", " world"); + concat!("hello", " world",); } #[test] @@ -130,10 +130,10 @@ fn debug_assert_ne() { #[test] fn env() { - let _ = env!("PATH"); - let _ = env!("PATH",); - let _ = env!("PATH", "not found"); - let _ = env!("PATH", "not found",); + env!("PATH"); + env!("PATH",); + env!("PATH", "not found"); + env!("PATH", "not found",); } #[cfg(std)] @@ -157,58 +157,58 @@ fn eprintln() { #[test] fn file() { - let _ = file!(); + file!(); } #[cfg(std)] #[test] fn format() { - let _ = format!("hello"); - let _ = format!("hello",); - let _ = format!("hello {}", "world"); - let _ = format!("hello {}", "world",); + format!("hello"); + format!("hello",); + format!("hello {}", "world"); + format!("hello {}", "world",); } #[test] fn format_args() { - let _ = format_args!("hello"); - let _ = format_args!("hello",); - let _ = format_args!("hello {}", "world"); - let _ = format_args!("hello {}", "world",); + format_args!("hello"); + format_args!("hello",); + format_args!("hello {}", "world"); + format_args!("hello {}", "world",); } #[test] fn include() { - let _ = include!("auxiliary/macro-comma-support.rs"); - let _ = include!("auxiliary/macro-comma-support.rs",); + include!("auxiliary/macro-comma-support.rs"); + include!("auxiliary/macro-comma-support.rs",); } #[test] fn include_bytes() { - let _ = include_bytes!("auxiliary/macro-comma-support.rs"); - let _ = include_bytes!("auxiliary/macro-comma-support.rs",); + include_bytes!("auxiliary/macro-comma-support.rs"); + include_bytes!("auxiliary/macro-comma-support.rs",); } #[test] fn include_str() { - let _ = include_str!("auxiliary/macro-comma-support.rs"); - let _ = include_str!("auxiliary/macro-comma-support.rs",); + include_str!("auxiliary/macro-comma-support.rs"); + include_str!("auxiliary/macro-comma-support.rs",); } #[test] fn line() { - let _ = line!(); + line!(); } #[test] fn module_path() { - let _ = module_path!(); + module_path!(); } #[test] fn option_env() { - let _ = option_env!("PATH"); - let _ = option_env!("PATH",); + option_env!("PATH"); + option_env!("PATH",); } #[test] @@ -308,10 +308,10 @@ fn unreachable() { #[test] fn vec() { let _: Vec<()> = vec![]; - let _ = vec![0]; - let _ = vec![0,]; - let _ = vec![0, 1]; - let _ = vec![0, 1,]; + vec![0]; + vec![0,]; + vec![0, 1]; + vec![0, 1,]; } // give a test body access to a fmt::Formatter, which seems @@ -339,21 +339,21 @@ fn fmt(&self, $f: &mut fmt::Formatter) -> fmt::Result { test_with_formatter! { #[test] fn write(f: &mut fmt::Formatter) { - let _ = write!(f, "hello"); - let _ = write!(f, "hello",); - let _ = write!(f, "hello {}", "world"); - let _ = write!(f, "hello {}", "world",); + write!(f, "hello"); + write!(f, "hello",); + write!(f, "hello {}", "world"); + write!(f, "hello {}", "world",); } } test_with_formatter! { #[test] fn writeln(f: &mut fmt::Formatter) { - let _ = writeln!(f); - let _ = writeln!(f,); - let _ = writeln!(f, "hello"); - let _ = writeln!(f, "hello",); - let _ = writeln!(f, "hello {}", "world"); - let _ = writeln!(f, "hello {}", "world",); + writeln!(f); + writeln!(f,); + writeln!(f, "hello"); + writeln!(f, "hello",); + writeln!(f, "hello {}", "world"); + writeln!(f, "hello {}", "world",); } } diff --git a/src/test/ui/issues/issue-49074.rs b/src/test/ui/issues/issue-49074.rs index 2e7e1184410..d255fac5427 100644 --- a/src/test/ui/issues/issue-49074.rs +++ b/src/test/ui/issues/issue-49074.rs @@ -20,5 +20,4 @@ macro_rules! bar { fn main() { bar!(); - //~^ ERROR cannot find macro `bar!` } diff --git a/src/test/ui/issues/issue-49074.stderr b/src/test/ui/issues/issue-49074.stderr index c9984ea2e9a..888222b69cc 100644 --- a/src/test/ui/issues/issue-49074.stderr +++ b/src/test/ui/issues/issue-49074.stderr @@ -1,11 +1,3 @@ -error: cannot find macro `bar!` in this scope - --> $DIR/issue-49074.rs:22:4 - | -LL | bar!(); - | ^^^ - | - = help: have you added the `#[macro_use]` on the module/import? - error[E0658]: The attribute `marco_use` is currently unknown to the compiler and may have meaning added to it in the future (see issue #29642) --> $DIR/issue-49074.rs:13:1 | @@ -14,6 +6,6 @@ LL | #[marco_use] // typo | = help: add #![feature(custom_attribute)] to the crate attributes to enable -error: aborting due to 2 previous errors +error: aborting due to previous error For more information about this error, try `rustc --explain E0658`. diff --git a/src/test/ui/object-lifetime/object-lifetime-default.stderr b/src/test/ui/object-lifetime/object-lifetime-default.stderr index 567ab72e56a..7e334a0e8e6 100644 --- a/src/test/ui/object-lifetime/object-lifetime-default.stderr +++ b/src/test/ui/object-lifetime/object-lifetime-default.stderr @@ -1,20 +1,20 @@ -error: BaseDefault - --> $DIR/object-lifetime-default.rs:16:1 +error: 'a,Ambiguous + --> $DIR/object-lifetime-default.rs:34:1 | -LL | struct A(T); //~ ERROR BaseDefault - | ^^^^^^^^^^^^^^^ +LL | struct G<'a,'b,T:'a,U:'a+'b>(&'a T, &'b U); //~ ERROR 'a,Ambiguous + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -error: BaseDefault - --> $DIR/object-lifetime-default.rs:19:1 +error: 'a,'b + --> $DIR/object-lifetime-default.rs:31:1 | -LL | struct B<'a,T>(&'a (), T); //~ ERROR BaseDefault - | ^^^^^^^^^^^^^^^^^^^^^^^^^^ +LL | struct F<'a,'b,T:'a,U:'b>(&'a T, &'b U); //~ ERROR 'a,'b + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -error: 'a - --> $DIR/object-lifetime-default.rs:22:1 +error: 'b + --> $DIR/object-lifetime-default.rs:28:1 | -LL | struct C<'a,T:'a>(&'a T); //~ ERROR 'a - | ^^^^^^^^^^^^^^^^^^^^^^^^^ +LL | struct E<'a,'b:'a,T:'b>(&'a T, &'b T); //~ ERROR 'b + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ error: Ambiguous --> $DIR/object-lifetime-default.rs:25:1 @@ -22,23 +22,23 @@ error: Ambiguous LL | struct D<'a,'b,T:'a+'b>(&'a T, &'b T); //~ ERROR Ambiguous | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ -error: 'b - --> $DIR/object-lifetime-default.rs:28:1 +error: 'a + --> $DIR/object-lifetime-default.rs:22:1 | -LL | struct E<'a,'b:'a,T:'b>(&'a T, &'b T); //~ ERROR 'b - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +LL | struct C<'a,T:'a>(&'a T); //~ ERROR 'a + | ^^^^^^^^^^^^^^^^^^^^^^^^^ -error: 'a,'b - --> $DIR/object-lifetime-default.rs:31:1 +error: BaseDefault + --> $DIR/object-lifetime-default.rs:19:1 | -LL | struct F<'a,'b,T:'a,U:'b>(&'a T, &'b U); //~ ERROR 'a,'b - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +LL | struct B<'a,T>(&'a (), T); //~ ERROR BaseDefault + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ -error: 'a,Ambiguous - --> $DIR/object-lifetime-default.rs:34:1 +error: BaseDefault + --> $DIR/object-lifetime-default.rs:16:1 | -LL | struct G<'a,'b,T:'a,U:'a+'b>(&'a T, &'b U); //~ ERROR 'a,Ambiguous - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +LL | struct A(T); //~ ERROR BaseDefault + | ^^^^^^^^^^^^^^^ error: aborting due to 7 previous errors -- 2.44.0