diff --git a/src/test/ui/issues/issue-58887.rs b/src/test/ui/issues/issue-58887.rs new file mode 100644 index 0000000000000..ca2374af7bdc1 --- /dev/null +++ b/src/test/ui/issues/issue-58887.rs @@ -0,0 +1,21 @@ +#![feature(existential_type)] + +trait UnwrapItemsExt { + type II; + fn unwrap_items(self) -> Self::II; +} + +impl UnwrapItemsExt for I +where + I: Iterator>, + E: std::fmt::Debug, +{ + existential type II: Iterator; + //~^ ERROR: could not find defining uses + + fn unwrap_items(self) -> Self::II { + //~^ ERROR: type parameter `T` is part of concrete type + //~| ERROR: type parameter `E` is part of concrete type + self.map(|x| x.unwrap()) + } +} diff --git a/src/test/ui/issues/issue-58887.stderr b/src/test/ui/issues/issue-58887.stderr new file mode 100644 index 0000000000000..8cb25d84f54ad --- /dev/null +++ b/src/test/ui/issues/issue-58887.stderr @@ -0,0 +1,35 @@ +error[E0601]: `main` function not found in crate `issue_58887` + | + = note: consider adding a `main` function to `$DIR/issue-58887.rs` + +error: type parameter `T` is part of concrete type but not used in parameter list for existential type + --> $DIR/issue-58887.rs:16:39 + | +LL | fn unwrap_items(self) -> Self::II { + | _______________________________________^ +LL | | +LL | | +LL | | self.map(|x| x.unwrap()) +LL | | } + | |_____^ + +error: type parameter `E` is part of concrete type but not used in parameter list for existential type + --> $DIR/issue-58887.rs:16:39 + | +LL | fn unwrap_items(self) -> Self::II { + | _______________________________________^ +LL | | +LL | | +LL | | self.map(|x| x.unwrap()) +LL | | } + | |_____^ + +error: could not find defining uses + --> $DIR/issue-58887.rs:13:5 + | +LL | existential type II: Iterator; + | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +error: aborting due to 4 previous errors + +For more information about this error, try `rustc --explain E0601`.