From 445b4e379ca487b268ff6360b193feb28106b5ac Mon Sep 17 00:00:00 2001 From: Camille GILLOT Date: Sat, 13 Feb 2021 20:41:02 +0100 Subject: Make def_key and HIR parenting consistent. --- src/test/ui/impl-trait/impl-trait-in-macro.rs | 20 ++++++++++++++++++++ src/test/ui/impl-trait/impl-trait-in-macro.stderr | 20 ++++++++++++++++++++ src/test/ui/impl-trait/universal-two-impl-traits.rs | 9 ++++++++- 3 files changed, 48 insertions(+), 1 deletion(-) create mode 100644 src/test/ui/impl-trait/impl-trait-in-macro.rs create mode 100644 src/test/ui/impl-trait/impl-trait-in-macro.stderr (limited to 'src/test/ui/impl-trait') diff --git a/src/test/ui/impl-trait/impl-trait-in-macro.rs b/src/test/ui/impl-trait/impl-trait-in-macro.rs new file mode 100644 index 00000000000..3165c9b9915 --- /dev/null +++ b/src/test/ui/impl-trait/impl-trait-in-macro.rs @@ -0,0 +1,20 @@ +use std::fmt::Debug; + +macro_rules! i { + ($($tr:tt)*) => { impl $($tr)* }; +} + +fn foo(x: i!(Debug), y: i!(Debug)) -> String { + let mut a = x; + a = y; //~ ERROR mismatched + format!("{:?}", a) +} + +trait S {} + +fn much_universe, U: IntoIterator)>>( + _: i!(Debug + Clone), +) { +} + +fn main() {} diff --git a/src/test/ui/impl-trait/impl-trait-in-macro.stderr b/src/test/ui/impl-trait/impl-trait-in-macro.stderr new file mode 100644 index 00000000000..b5f9986ce40 --- /dev/null +++ b/src/test/ui/impl-trait/impl-trait-in-macro.stderr @@ -0,0 +1,20 @@ +error[E0308]: mismatched types + --> $DIR/impl-trait-in-macro.rs:9:9 + | +LL | ($($tr:tt)*) => { impl $($tr)* }; + | ---- + | | + | expected type parameter + | found type parameter +... +LL | a = y; + | ^ expected type parameter `impl Debug`, found a different type parameter `impl Debug` + | + = note: expected type parameter `impl Debug` (type parameter `impl Debug`) + found type parameter `impl Debug` (type parameter `impl Debug`) + = note: a type parameter was expected, but a different one was found; you might be missing a type parameter or trait bound + = note: for more information, visit https://doc.rust-lang.org/book/ch10-02-traits.html#traits-as-parameters + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0308`. diff --git a/src/test/ui/impl-trait/universal-two-impl-traits.rs b/src/test/ui/impl-trait/universal-two-impl-traits.rs index 1ed47d8f49e..689c240128d 100644 --- a/src/test/ui/impl-trait/universal-two-impl-traits.rs +++ b/src/test/ui/impl-trait/universal-two-impl-traits.rs @@ -6,4 +6,11 @@ fn foo(x: impl Debug, y: impl Debug) -> String { format!("{:?}", a) } -fn main() { } +trait S {} + +fn much_universe, U: IntoIterator>>( + _: impl Debug + Clone, +) { +} + +fn main() {} -- cgit 1.4.1-3-g733a5