From d73a0fef381f5c6f4720c152bb7235fe02e502fd Mon Sep 17 00:00:00 2001 From: Vadim Petrochenkov Date: Sun, 21 May 2017 15:50:38 +0300 Subject: [PATCH] Turn public reexporting of private extern crates into a lint again --- src/librustc_resolve/resolve_imports.rs | 12 ++++++++++-- .../compile-fail/pub-reexport-priv-extern-crate.rs | 4 ++++ 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/librustc_resolve/resolve_imports.rs b/src/librustc_resolve/resolve_imports.rs index 8745e51f5b4..a892f9df6a6 100644 --- a/src/librustc_resolve/resolve_imports.rs +++ b/src/librustc_resolve/resolve_imports.rs @@ -18,6 +18,7 @@ use {resolve_error, ResolutionError}; use rustc::ty; +use rustc::lint::builtin::PRIVATE_IN_PUBLIC; use rustc::hir::def_id::DefId; use rustc::hir::def::*; use rustc::util::nodemap::FxHashMap; @@ -294,7 +295,8 @@ pub fn add_import_directive(&mut self, // return the corresponding binding defined by the import directive. pub fn import(&self, binding: &'a NameBinding<'a>, directive: &'a ImportDirective<'a>) -> &'a NameBinding<'a> { - let vis = if binding.pseudo_vis().is_at_least(directive.vis.get(), self) { + let vis = if binding.pseudo_vis().is_at_least(directive.vis.get(), self) || + !directive.is_glob() && binding.is_extern_crate() { // c.f. `PRIVATE_IN_PUBLIC` directive.vis.get() } else { binding.pseudo_vis() @@ -718,7 +720,13 @@ fn finalize_import(&mut self, directive: &'b ImportDirective<'b>) -> Option