Resolve absolute paths as extern under a feature flag
This commit is contained in:
parent
9552b9cfd2
commit
b07e26e36e
15 changed files with 238 additions and 3 deletions
|
|
@ -0,0 +1,15 @@
|
|||
// Copyright 2017 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.
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct S;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct Z;
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
// Copyright 2017 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.
|
||||
|
||||
#![feature(extern_absolute_paths)]
|
||||
|
||||
use xcrate::S; //~ ERROR can't find crate for `xcrate`
|
||||
|
||||
fn main() {}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
// Copyright 2017 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.
|
||||
|
||||
#![feature(extern_absolute_paths)]
|
||||
|
||||
fn main() {
|
||||
let s = ::xcrate::S; //~ ERROR can't find crate for `xcrate`
|
||||
}
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
// Copyright 2017 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.
|
||||
|
||||
#![feature(extern_absolute_paths)]
|
||||
|
||||
use ycrate; //~ ERROR can't find crate for `ycrate`
|
||||
|
||||
fn main() {}
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
// Copyright 2017 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.
|
||||
|
||||
// aux-build:xcrate.rs
|
||||
|
||||
#![feature(crate_in_paths)]
|
||||
#![feature(extern_absolute_paths)]
|
||||
|
||||
use crate; //~ ERROR unresolved import `crate`
|
||||
//~^ NOTE crate root imports need to be explicitly named: `use crate as name;`
|
||||
use *; //~ ERROR unresolved import `*`
|
||||
//~^ NOTE cannot glob-import all possible crates
|
||||
|
||||
fn main() {
|
||||
let s = ::xcrate; //~ ERROR expected value, found module `xcrate`
|
||||
//~^ NOTE not a value
|
||||
}
|
||||
|
|
@ -11,10 +11,12 @@
|
|||
#![feature(crate_in_paths)]
|
||||
|
||||
use crate::m::f;
|
||||
use crate as root;
|
||||
|
||||
mod m {
|
||||
pub fn f() -> u8 { 1 }
|
||||
pub fn g() -> u8 { 2 }
|
||||
pub fn h() -> u8 { 3 }
|
||||
|
||||
// OK, visibilities are implicitly absolute like imports
|
||||
pub(in crate::m) struct S;
|
||||
|
|
@ -23,14 +25,17 @@ mod m {
|
|||
mod n
|
||||
{
|
||||
use crate::m::f;
|
||||
use crate as root;
|
||||
pub fn check() {
|
||||
assert_eq!(f(), 1);
|
||||
assert_eq!(::crate::m::g(), 2);
|
||||
assert_eq!(root::m::h(), 3);
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
assert_eq!(f(), 1);
|
||||
assert_eq!(::crate::m::g(), 2);
|
||||
assert_eq!(root::m::h(), 3);
|
||||
n::check();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -0,0 +1,15 @@
|
|||
// Copyright 2017 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.
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct S;
|
||||
|
||||
#[derive(Debug)]
|
||||
pub struct Z;
|
||||
31
src/test/run-pass/rfc-2126-extern-absolute-paths/basic.rs
Normal file
31
src/test/run-pass/rfc-2126-extern-absolute-paths/basic.rs
Normal file
|
|
@ -0,0 +1,31 @@
|
|||
// Copyright 2017 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.
|
||||
|
||||
// aux-build:xcrate.rs
|
||||
|
||||
#![feature(extern_absolute_paths)]
|
||||
|
||||
use xcrate::Z;
|
||||
|
||||
fn f() {
|
||||
use xcrate;
|
||||
use xcrate as ycrate;
|
||||
let s = xcrate::S;
|
||||
assert_eq!(format!("{:?}", s), "S");
|
||||
let z = ycrate::Z;
|
||||
assert_eq!(format!("{:?}", z), "Z");
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let s = ::xcrate::S;
|
||||
assert_eq!(format!("{:?}", s), "S");
|
||||
let z = Z;
|
||||
assert_eq!(format!("{:?}", z), "Z");
|
||||
}
|
||||
15
src/test/ui/feature-gate-extern_absolute_paths.rs
Normal file
15
src/test/ui/feature-gate-extern_absolute_paths.rs
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
// Copyright 2017 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.
|
||||
|
||||
use core::default; //~ ERROR unresolved import `core`
|
||||
|
||||
fn main() {
|
||||
let _: u8 = ::core::default::Default(); //~ ERROR failed to resolve
|
||||
}
|
||||
14
src/test/ui/feature-gate-extern_absolute_paths.stderr
Normal file
14
src/test/ui/feature-gate-extern_absolute_paths.stderr
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
error[E0432]: unresolved import `core`
|
||||
--> $DIR/feature-gate-extern_absolute_paths.rs:11:5
|
||||
|
|
||||
11 | use core::default; //~ ERROR unresolved import `core`
|
||||
| ^^^^ Maybe a missing `extern crate core;`?
|
||||
|
||||
error[E0433]: failed to resolve. Maybe a missing `extern crate core;`?
|
||||
--> $DIR/feature-gate-extern_absolute_paths.rs:14:19
|
||||
|
|
||||
14 | let _: u8 = ::core::default::Default(); //~ ERROR failed to resolve
|
||||
| ^^^^ Maybe a missing `extern crate core;`?
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue