about summary refs log tree commit diff
diff options
context:
space:
mode:
authorManish Goregaokar <manishsmail@gmail.com>2020-07-11 08:53:27 -0700
committerGitHub <noreply@github.com>2020-07-11 08:53:27 -0700
commitaa04ffb61a3e563eb4555057f897191f3ab49386 (patch)
tree299d78ed159ea2ce569933b2e63a55cb99e974cd
parent6204a73efa9cc2f669186531849a656978c2f28c (diff)
parentf5de23b5c132db8064c98e0e20ef216d6defdc44 (diff)
Rollup merge of #74240 - da-x:fix-74081, r=Manishearth
Fix #74081 and add the test case from #74236
-rw-r--r--src/librustc_middle/ty/print/pretty.rs2
-rw-r--r--src/test/ui/issues/issue-74236/auxiliary/dep.rs8
-rw-r--r--src/test/ui/issues/issue-74236/main.rs9
-rw-r--r--src/test/ui/issues/issue-74236/main.stderr11
4 files changed, 29 insertions, 1 deletions
diff --git a/src/librustc_middle/ty/print/pretty.rs b/src/librustc_middle/ty/print/pretty.rs
index 9dda208b5a0..3809c8d245b 100644
--- a/src/librustc_middle/ty/print/pretty.rs
+++ b/src/librustc_middle/ty/print/pretty.rs
@@ -393,7 +393,7 @@ pub trait PrettyPrinter<'tcx>:
                     .tcx()
                     .item_children(visible_parent)
                     .iter()
-                    .find(|child| child.res.def_id() == def_id)
+                    .find(|child| child.res.opt_def_id() == Some(def_id))
                     .map(|child| child.ident.name);
                 if let Some(reexport) = reexport {
                     *name = reexport;
diff --git a/src/test/ui/issues/issue-74236/auxiliary/dep.rs b/src/test/ui/issues/issue-74236/auxiliary/dep.rs
new file mode 100644
index 00000000000..45f2601d307
--- /dev/null
+++ b/src/test/ui/issues/issue-74236/auxiliary/dep.rs
@@ -0,0 +1,8 @@
+// edition:2018
+
+mod private { pub struct Pub; }
+
+// Reexport built-in attribute without a DefId (requires Rust 2018).
+pub use cfg_attr as attr;
+// This export needs to be after the built-in attribute to trigger the bug.
+pub use private::Pub as Renamed;
diff --git a/src/test/ui/issues/issue-74236/main.rs b/src/test/ui/issues/issue-74236/main.rs
new file mode 100644
index 00000000000..daa7cfcf9a1
--- /dev/null
+++ b/src/test/ui/issues/issue-74236/main.rs
@@ -0,0 +1,9 @@
+// edition:2018
+// aux-build:dep.rs
+// compile-flags:--extern dep
+
+fn main() {
+    // Trigger an error that will print the path of dep::private::Pub (as "dep::Renamed").
+    let () = dep::Renamed;
+    //~^ ERROR mismatched types
+}
diff --git a/src/test/ui/issues/issue-74236/main.stderr b/src/test/ui/issues/issue-74236/main.stderr
new file mode 100644
index 00000000000..51d4833e014
--- /dev/null
+++ b/src/test/ui/issues/issue-74236/main.stderr
@@ -0,0 +1,11 @@
+error[E0308]: mismatched types
+  --> $DIR/main.rs:7:9
+   |
+LL |     let () = dep::Renamed;
+   |         ^^   ------------ this expression has type `dep::Renamed`
+   |         |
+   |         expected struct `dep::Renamed`, found `()`
+
+error: aborting due to previous error
+
+For more information about this error, try `rustc --explain E0308`.