diff options
| author | bors <bors@rust-lang.org> | 2014-07-26 08:46:21 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2014-07-26 08:46:21 +0000 |
| commit | cf61980db2e2291e335094aa3fd675e219bb3c3f (patch) | |
| tree | a60e1cac0f255cef038f906b3218aa36905abe7e | |
| parent | c0fa8764efa53ef2c6383ddedf90ee9804a02c68 (diff) | |
| parent | 6e03944ddefb497b1e12091a6d8e5181faa6ee26 (diff) | |
| download | rust-cf61980db2e2291e335094aa3fd675e219bb3c3f.tar.gz rust-cf61980db2e2291e335094aa3fd675e219bb3c3f.zip | |
auto merge of #15987 : brson/rust/hidestdrt, r=alexcrichton
Rename and gensym the runtime on import, so that users can't refer to the `native` crate. This is unlikely to break code, but users should import the "native" crate directly. [breaking-change] cc @alexcrichton
| -rw-r--r-- | src/librustc/front/std_inject.rs | 10 | ||||
| -rw-r--r-- | src/test/compile-fail/hidden-rt-injection.rs | 18 | ||||
| -rw-r--r-- | src/test/compile-fail/hidden-rt-injection2.rs | 18 |
3 files changed, 44 insertions, 2 deletions
diff --git a/src/librustc/front/std_inject.rs b/src/librustc/front/std_inject.rs index 940112325fd..5dca09faf34 100644 --- a/src/librustc/front/std_inject.rs +++ b/src/librustc/front/std_inject.rs @@ -86,9 +86,15 @@ impl<'a> fold::Folder for StandardLibraryInjector<'a> { *ty == config::CrateTypeExecutable }); if use_start(&krate) && any_exe { + let visible_rt_name = "rt"; + let actual_rt_name = "native"; + // Gensym the ident so it can't be named + let visible_rt_name = token::gensym_ident(visible_rt_name); + let actual_rt_name = token::intern_and_get_ident(actual_rt_name); + vis.push(ast::ViewItem { - node: ast::ViewItemExternCrate(token::str_to_ident("native"), - None, + node: ast::ViewItemExternCrate(visible_rt_name, + Some((actual_rt_name, ast::CookedStr)), ast::DUMMY_NODE_ID), attrs: Vec::new(), vis: ast::Inherited, diff --git a/src/test/compile-fail/hidden-rt-injection.rs b/src/test/compile-fail/hidden-rt-injection.rs new file mode 100644 index 00000000000..a27a8464707 --- /dev/null +++ b/src/test/compile-fail/hidden-rt-injection.rs @@ -0,0 +1,18 @@ +// Copyright 2014 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. + +// This is testing that users can't access the runtime crate. + +mod m { + // The rt has been called both 'native' and 'rt' + use native; //~ ERROR unresolved import +} + +fn main() { } diff --git a/src/test/compile-fail/hidden-rt-injection2.rs b/src/test/compile-fail/hidden-rt-injection2.rs new file mode 100644 index 00000000000..fa6584ddd98 --- /dev/null +++ b/src/test/compile-fail/hidden-rt-injection2.rs @@ -0,0 +1,18 @@ +// Copyright 2014 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. + +// This is testing that users can't access the runtime crate. + +mod m { + // The rt has been called both 'native' and 'rt' + use rt; //~ ERROR unresolved import +} + +fn main() { } |
