diff --git a/compiler/rustc_privacy/src/lib.rs b/compiler/rustc_privacy/src/lib.rs index 23a8ddaa3d6d..de5c00306a73 100644 --- a/compiler/rustc_privacy/src/lib.rs +++ b/compiler/rustc_privacy/src/lib.rs @@ -783,7 +783,7 @@ fn enqueue_def_id(&mut self, def_id: LocalDefId) { } } - DefKind::TraitAlias | DefKind::Fn => { + DefKind::TraitAlias | DefKind::Fn | DefKind::TyAlias => { self.ev.queue.insert(def_id); } @@ -808,7 +808,6 @@ fn enqueue_def_id(&mut self, def_id: LocalDefId) { // Can't be reached DefKind::Impl { .. } - | DefKind::TyAlias | DefKind::Field | DefKind::Variant | DefKind::Static { .. } diff --git a/tests/ui/privacy/reach-type-alias-issue-156778.rs b/tests/ui/privacy/reach-type-alias-issue-156778.rs new file mode 100644 index 000000000000..4297a44038cf --- /dev/null +++ b/tests/ui/privacy/reach-type-alias-issue-156778.rs @@ -0,0 +1,20 @@ +//@ check-pass +#![feature(lazy_type_alias)] + +use src::hidden_core; +mod src { + mod aliases { + use hidden_core::InternalStruct; + pub type ExposedType = InternalStruct; + } + pub mod hidden_core { + use super::aliases::ExposedType; + pub struct InternalStruct { + _x: T, + } + pub fn new() -> ExposedType { + InternalStruct { _x: 1.0 } + } + } +} +fn main() {}