diff --git a/src/test/ui/impl-trait/issue-72911.rs b/src/test/ui/impl-trait/issue-72911.rs new file mode 100644 index 00000000000..dee5a41f6de --- /dev/null +++ b/src/test/ui/impl-trait/issue-72911.rs @@ -0,0 +1,22 @@ +// Regression test for #72911. + +pub struct Lint {} + +impl Lint {} + +pub fn gather_all() -> impl Iterator { + //~^ ERROR: cannot resolve opaque type + lint_files().flat_map(|f| gather_from_file(&f)) +} + +fn gather_from_file(dir_entry: &foo::MissingItem) -> impl Iterator { + //~^ ERROR: failed to resolve + unimplemented!() +} + +fn lint_files() -> impl Iterator { + //~^ ERROR: failed to resolve + unimplemented!() +} + +fn main() {} diff --git a/src/test/ui/impl-trait/issue-72911.stderr b/src/test/ui/impl-trait/issue-72911.stderr new file mode 100644 index 00000000000..b28142b916c --- /dev/null +++ b/src/test/ui/impl-trait/issue-72911.stderr @@ -0,0 +1,34 @@ +error[E0433]: failed to resolve: use of undeclared type or module `foo` + --> $DIR/issue-72911.rs:12:33 + | +LL | fn gather_from_file(dir_entry: &foo::MissingItem) -> impl Iterator { + | ^^^ use of undeclared type or module `foo` + +error[E0433]: failed to resolve: use of undeclared type or module `foo` + --> $DIR/issue-72911.rs:17:41 + | +LL | fn lint_files() -> impl Iterator { + | ^^^ use of undeclared type or module `foo` + +error[E0720]: cannot resolve opaque type + --> $DIR/issue-72911.rs:7:24 + | +LL | pub fn gather_all() -> impl Iterator { + | ^^^^^^^^^^^^^^^^^^^^^^^^^^ recursive opaque type +LL | +LL | lint_files().flat_map(|f| gather_from_file(&f)) + | ----------------------------------------------- + | | + | returning here with type `std::iter::FlatMap` + | returning here with type `std::iter::FlatMap` +... +LL | fn gather_from_file(dir_entry: &foo::MissingItem) -> impl Iterator { + | -------------------------- returning this opaque type `std::iter::FlatMap` +... +LL | fn lint_files() -> impl Iterator { + | -------------------------------------- returning this opaque type `std::iter::FlatMap` + +error: aborting due to 3 previous errors + +Some errors have detailed explanations: E0433, E0720. +For more information about an error, try `rustc --explain E0433`.