Skip to content

Commit cf61980

Browse files
committed
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
2 parents c0fa876 + 6e03944 commit cf61980

File tree

3 files changed

+44
-2
lines changed

3 files changed

+44
-2
lines changed

src/librustc/front/std_inject.rs

+8-2
Original file line numberDiff line numberDiff line change
@@ -86,9 +86,15 @@ impl<'a> fold::Folder for StandardLibraryInjector<'a> {
8686
*ty == config::CrateTypeExecutable
8787
});
8888
if use_start(&krate) && any_exe {
89+
let visible_rt_name = "rt";
90+
let actual_rt_name = "native";
91+
// Gensym the ident so it can't be named
92+
let visible_rt_name = token::gensym_ident(visible_rt_name);
93+
let actual_rt_name = token::intern_and_get_ident(actual_rt_name);
94+
8995
vis.push(ast::ViewItem {
90-
node: ast::ViewItemExternCrate(token::str_to_ident("native"),
91-
None,
96+
node: ast::ViewItemExternCrate(visible_rt_name,
97+
Some((actual_rt_name, ast::CookedStr)),
9298
ast::DUMMY_NODE_ID),
9399
attrs: Vec::new(),
94100
vis: ast::Inherited,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
// This is testing that users can't access the runtime crate.
12+
13+
mod m {
14+
// The rt has been called both 'native' and 'rt'
15+
use native; //~ ERROR unresolved import
16+
}
17+
18+
fn main() { }
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
// This is testing that users can't access the runtime crate.
12+
13+
mod m {
14+
// The rt has been called both 'native' and 'rt'
15+
use rt; //~ ERROR unresolved import
16+
}
17+
18+
fn main() { }

0 commit comments

Comments
 (0)