about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorYuki Okushi <huyuumi.dev@gmail.com>2020-07-26 18:54:54 +0900
committerYuki Okushi <huyuumi.dev@gmail.com>2020-07-26 18:54:54 +0900
commit8dcf86887cecd84d0775bdf45580435bc8e8bc2d (patch)
tree99e633ef35efe749f6c2fe6238060551d8de20eb /src
parent832d0a7667504acf2ba4a846b323f3762b40ffea (diff)
downloadrust-8dcf86887cecd84d0775bdf45580435bc8e8bc2d.tar.gz
rust-8dcf86887cecd84d0775bdf45580435bc8e8bc2d.zip
Add test for issue-72911
Diffstat (limited to 'src')
-rw-r--r--src/test/ui/impl-trait/issue-72911.rs22
-rw-r--r--src/test/ui/impl-trait/issue-72911.stderr34
2 files changed, 56 insertions, 0 deletions
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<Item = Lint> {
+    //~^ ERROR: cannot resolve opaque type
+    lint_files().flat_map(|f| gather_from_file(&f))
+}
+
+fn gather_from_file(dir_entry: &foo::MissingItem) -> impl Iterator<Item = Lint> {
+    //~^ ERROR: failed to resolve
+    unimplemented!()
+}
+
+fn lint_files() -> impl Iterator<Item = foo::MissingItem> {
+    //~^ 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<Item = Lint> {
+   |                                 ^^^ 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<Item = foo::MissingItem> {
+   |                                         ^^^ 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<Item = Lint> {
+   |                        ^^^^^^^^^^^^^^^^^^^^^^^^^^ recursive opaque type
+LL |
+LL |     lint_files().flat_map(|f| gather_from_file(&f))
+   |     -----------------------------------------------
+   |     |
+   |     returning here with type `std::iter::FlatMap<impl std::iter::Iterator, [type error], [closure@$DIR/issue-72911.rs:9:27: 9:51]>`
+   |     returning here with type `std::iter::FlatMap<impl std::iter::Iterator, [type error], [closure@$DIR/issue-72911.rs:9:27: 9:51]>`
+...
+LL | fn gather_from_file(dir_entry: &foo::MissingItem) -> impl Iterator<Item = Lint> {
+   |                                                      -------------------------- returning this opaque type `std::iter::FlatMap<impl std::iter::Iterator, [type error], [closure@$DIR/issue-72911.rs:9:27: 9:51]>`
+...
+LL | fn lint_files() -> impl Iterator<Item = foo::MissingItem> {
+   |                    -------------------------------------- returning this opaque type `std::iter::FlatMap<impl std::iter::Iterator, [type error], [closure@$DIR/issue-72911.rs:9:27: 9:51]>`
+
+error: aborting due to 3 previous errors
+
+Some errors have detailed explanations: E0433, E0720.
+For more information about an error, try `rustc --explain E0433`.