diff options
| author | bors <bors@rust-lang.org> | 2019-01-06 22:26:16 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2019-01-06 22:26:16 +0000 |
| commit | d39dddf7956beead52c4c4fbd85f40a5372bbd7a (patch) | |
| tree | cfe2a7f8964173a97ced0fba5cf0857b2089e770 /src/test/ui | |
| parent | b92552d5578e4544006da0dd5e793a19c2149321 (diff) | |
| parent | fb00313c0df91b306e00a14176c2a9c57171f180 (diff) | |
| download | rust-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.rs | 9 | ||||
| -rw-r--r-- | src/test/ui/privacy/auxiliary/issue-57264-2.rs | 10 | ||||
| -rw-r--r-- | src/test/ui/privacy/issue-57264-1.rs | 8 | ||||
| -rw-r--r-- | src/test/ui/privacy/issue-57264-2.rs | 10 |
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(); +} |
