diff options
| author | Camille GILLOT <gillot.camille@gmail.com> | 2021-02-13 20:41:02 +0100 |
|---|---|---|
| committer | Camille GILLOT <gillot.camille@gmail.com> | 2021-03-12 22:48:32 +0100 |
| commit | 445b4e379ca487b268ff6360b193feb28106b5ac (patch) | |
| tree | 563a7f91bec7cda5ffcad5cbfd6a5c57d96dbd26 /src/test/ui/impl-trait | |
| parent | 17a07d71bfd692f9b2dad2a566aff52bf3d4bfe2 (diff) | |
| download | rust-445b4e379ca487b268ff6360b193feb28106b5ac.tar.gz rust-445b4e379ca487b268ff6360b193feb28106b5ac.zip | |
Make def_key and HIR parenting consistent.
Diffstat (limited to 'src/test/ui/impl-trait')
| -rw-r--r-- | src/test/ui/impl-trait/impl-trait-in-macro.rs | 20 | ||||
| -rw-r--r-- | src/test/ui/impl-trait/impl-trait-in-macro.stderr | 20 | ||||
| -rw-r--r-- | src/test/ui/impl-trait/universal-two-impl-traits.rs | 9 |
3 files changed, 48 insertions, 1 deletions
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<T> {} + +fn much_universe<T: S<i!(Debug)>, U: IntoIterator<Item = i!(Iterator<Item = i!(Clone)>)>>( + _: 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<T> {} + +fn much_universe<T: S<impl Debug>, U: IntoIterator<Item = impl Iterator<Item = impl Clone>>>( + _: impl Debug + Clone, +) { +} + +fn main() {} |
