about summary refs log tree commit diff
path: root/src/test/ui
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2019-01-06 22:26:16 +0000
committerbors <bors@rust-lang.org>2019-01-06 22:26:16 +0000
commitd39dddf7956beead52c4c4fbd85f40a5372bbd7a (patch)
treecfe2a7f8964173a97ced0fba5cf0857b2089e770 /src/test/ui
parentb92552d5578e4544006da0dd5e793a19c2149321 (diff)
parentfb00313c0df91b306e00a14176c2a9c57171f180 (diff)
downloadrust-d39dddf7956beead52c4c4fbd85f40a5372bbd7a.tar.gz
rust-d39dddf7956beead52c4c4fbd85f40a5372bbd7a.zip
Auto merge of #57344 - petrochenkov:regreach, r=arielb1
privacy: Fix regression in impl reachability

Rollback to pre-https://github.com/rust-lang/rust/pull/56878 logic of determining reachability.
`reachability(impl Trait<Substs> for Type<Substs>) = reachability(Trait & Type)`, substs are ignored.

Fixes https://github.com/rust-lang/rust/issues/57264
Diffstat (limited to 'src/test/ui')
-rw-r--r--src/test/ui/privacy/auxiliary/issue-57264-1.rs9
-rw-r--r--src/test/ui/privacy/auxiliary/issue-57264-2.rs10
-rw-r--r--src/test/ui/privacy/issue-57264-1.rs8
-rw-r--r--src/test/ui/privacy/issue-57264-2.rs10
4 files changed, 37 insertions, 0 deletions
diff --git a/src/test/ui/privacy/auxiliary/issue-57264-1.rs b/src/test/ui/privacy/auxiliary/issue-57264-1.rs
new file mode 100644
index 00000000000..9302fa0d9e8
--- /dev/null
+++ b/src/test/ui/privacy/auxiliary/issue-57264-1.rs
@@ -0,0 +1,9 @@
+mod inner {
+    pub struct PubUnnameable;
+}
+
+pub struct Pub<T>(T);
+
+impl Pub<inner::PubUnnameable> {
+    pub fn pub_method() {}
+}
diff --git a/src/test/ui/privacy/auxiliary/issue-57264-2.rs b/src/test/ui/privacy/auxiliary/issue-57264-2.rs
new file mode 100644
index 00000000000..416206b4f8e
--- /dev/null
+++ b/src/test/ui/privacy/auxiliary/issue-57264-2.rs
@@ -0,0 +1,10 @@
+mod inner {
+    pub struct PubUnnameable;
+
+    impl PubUnnameable {
+        pub fn pub_method(self) {}
+    }
+}
+
+pub trait PubTraitWithSingleImplementor {}
+impl PubTraitWithSingleImplementor for Option<inner::PubUnnameable> {}
diff --git a/src/test/ui/privacy/issue-57264-1.rs b/src/test/ui/privacy/issue-57264-1.rs
new file mode 100644
index 00000000000..dcffdc3d4ef
--- /dev/null
+++ b/src/test/ui/privacy/issue-57264-1.rs
@@ -0,0 +1,8 @@
+// compile-pass
+// aux-build:issue-57264-1.rs
+
+extern crate issue_57264_1;
+
+fn main() {
+    issue_57264_1::Pub::pub_method();
+}
diff --git a/src/test/ui/privacy/issue-57264-2.rs b/src/test/ui/privacy/issue-57264-2.rs
new file mode 100644
index 00000000000..79d0d2c7cd7
--- /dev/null
+++ b/src/test/ui/privacy/issue-57264-2.rs
@@ -0,0 +1,10 @@
+// compile-pass
+// aux-build:issue-57264-2.rs
+
+extern crate issue_57264_2;
+
+fn infer<T: issue_57264_2::PubTraitWithSingleImplementor>(arg: T) -> T { arg }
+
+fn main() {
+    infer(None).unwrap().pub_method();
+}