diff options
| author | iDawer <ilnur.iskhakov.oss@outlook.com> | 2022-08-31 21:41:24 +0500 |
|---|---|---|
| committer | iDawer <ilnur.iskhakov.oss@outlook.com> | 2022-08-31 21:41:24 +0500 |
| commit | 1fa9d5e07b1b2035be2eca70d0e2bb81f10edd8a (patch) | |
| tree | c83390b78282688804ed5c7e64d9671f6a9c25d8 | |
| parent | 1a580a3396ea11c3cf186af8ec5c563d906b7127 (diff) | |
| download | rust-1fa9d5e07b1b2035be2eca70d0e2bb81f10edd8a.tar.gz rust-1fa9d5e07b1b2035be2eca70d0e2bb81f10edd8a.zip | |
Correct visibility check
| -rw-r--r-- | crates/hir-ty/src/inhabitedness.rs | 14 |
1 files changed, 4 insertions, 10 deletions
diff --git a/crates/hir-ty/src/inhabitedness.rs b/crates/hir-ty/src/inhabitedness.rs index f4d822b9c70..f3fe10c8575 100644 --- a/crates/hir-ty/src/inhabitedness.rs +++ b/crates/hir-ty/src/inhabitedness.rs @@ -149,17 +149,11 @@ impl UninhabitedFrom<'_> { subst: &Substitution, is_enum: bool, ) -> ControlFlow<VisiblyUninhabited> { - let target_mod = self.target_mod; - let mut data_uninhabitedness = - || ty.clone().substitute(Interner, subst).visit_with(self, DebruijnIndex::INNERMOST); - if is_enum { - data_uninhabitedness() + if is_enum || vis.is_visible_from(self.db.upcast(), self.target_mod) { + let ty = ty.clone().substitute(Interner, subst); + ty.visit_with(self, DebruijnIndex::INNERMOST) } else { - match vis { - Visibility::Module(mod_id) if mod_id == target_mod => data_uninhabitedness(), - Visibility::Module(_) => CONTINUE_OPAQUELY_INHABITED, - Visibility::Public => data_uninhabitedness(), - } + CONTINUE_OPAQUELY_INHABITED } } } |
