diff options
| author | Alex Crichton <alex@alexcrichton.com> | 2016-10-12 10:15:26 -0700 |
|---|---|---|
| committer | Alex Crichton <alex@alexcrichton.com> | 2016-10-12 14:07:55 -0700 |
| commit | 65fc3ef1f4eeefbde4fd2592f1907c922181bfa8 (patch) | |
| tree | 7d3dc5f0e542ea52f694064c027675c823b7cf97 /src | |
| parent | 9d70ff384f4a87e2cfe3d5e90b27637632bb373a (diff) | |
| parent | 4080efd274f99ed0f6ee610086c5dce5a6168954 (diff) | |
| download | rust-65fc3ef1f4eeefbde4fd2592f1907c922181bfa8.tar.gz rust-65fc3ef1f4eeefbde4fd2592f1907c922181bfa8.zip | |
Rollup merge of #37023 - jseyfried:fix_extern_crate_back_compat, r=nrc
Fix importing inaccessible `extern crate`s (with a warning) Fixes #36747, fixes #37020, and fixes #37021. r? @nrc
Diffstat (limited to 'src')
| -rw-r--r-- | src/librustc_resolve/resolve_imports.rs | 3 | ||||
| -rw-r--r-- | src/test/run-pass/issue-37020.rs | 25 |
2 files changed, 27 insertions, 1 deletions
diff --git a/src/librustc_resolve/resolve_imports.rs b/src/librustc_resolve/resolve_imports.rs index 4689c4ded5c..e33668b6fe9 100644 --- a/src/librustc_resolve/resolve_imports.rs +++ b/src/librustc_resolve/resolve_imports.rs @@ -197,7 +197,8 @@ impl<'a> Resolver<'a> { // If the resolution doesn't depend on glob definability, check privacy and return. if let Some(result) = self.try_result(&resolution, ns) { return result.and_then(|binding| { - if self.is_accessible(binding.vis) && !is_disallowed_private_import(binding) { + if self.is_accessible(binding.vis) && !is_disallowed_private_import(binding) || + binding.is_extern_crate() { // c.f. issue #37020 Success(binding) } else { Failed(None) diff --git a/src/test/run-pass/issue-37020.rs b/src/test/run-pass/issue-37020.rs new file mode 100644 index 00000000000..7d0d20269ab --- /dev/null +++ b/src/test/run-pass/issue-37020.rs @@ -0,0 +1,25 @@ +// Copyright 2016 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +#![allow(private_in_public)] + +mod foo { + pub mod bar { + extern crate core; + } +} + +mod baz { + pub use foo::bar::core; +} + +fn main() { + baz::core::cell::Cell::new(0u32); +} |
