rustc_resolve: inject uniform_paths canaries regardless of the feature-gate, on Rust 2018.
This commit is contained in:
parent
fb945f0ebb
commit
0a33de04cf
13 changed files with 237 additions and 7 deletions
|
|
@ -0,0 +1,29 @@
|
|||
// Copyright 2018 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.
|
||||
|
||||
// edition:2018
|
||||
|
||||
// This test is similar to `ambiguity-macros.rs`, but nested in a module.
|
||||
|
||||
mod foo {
|
||||
pub use std::io;
|
||||
//~^ ERROR `std` import is ambiguous
|
||||
|
||||
macro_rules! m {
|
||||
() => {
|
||||
mod std {
|
||||
pub struct io;
|
||||
}
|
||||
}
|
||||
}
|
||||
m!();
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
error: `std` import is ambiguous
|
||||
--> $DIR/ambiguity-macros-nested.rs:16:13
|
||||
|
|
||||
LL | pub use std::io;
|
||||
| ^^^ can refer to external crate `::std`
|
||||
...
|
||||
LL | / mod std {
|
||||
LL | | pub struct io;
|
||||
LL | | }
|
||||
| |_____________- may refer to `self::std` in the future
|
||||
|
|
||||
= help: write `::std` or `self::std` explicitly instead
|
||||
= note: in the future, `#![feature(uniform_paths)]` may become the default
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
// Copyright 2018 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.
|
||||
|
||||
// edition:2018
|
||||
|
||||
// This test is similar to `ambiguity.rs`, but with macros defining local items.
|
||||
|
||||
use std::io;
|
||||
//~^ ERROR `std` import is ambiguous
|
||||
|
||||
macro_rules! m {
|
||||
() => {
|
||||
mod std {
|
||||
pub struct io;
|
||||
}
|
||||
}
|
||||
}
|
||||
m!();
|
||||
|
||||
fn main() {}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
error: `std` import is ambiguous
|
||||
--> $DIR/ambiguity-macros.rs:15:5
|
||||
|
|
||||
LL | use std::io;
|
||||
| ^^^ can refer to external crate `::std`
|
||||
...
|
||||
LL | / mod std {
|
||||
LL | | pub struct io;
|
||||
LL | | }
|
||||
| |_________- may refer to `self::std` in the future
|
||||
|
|
||||
= help: write `::std` or `self::std` explicitly instead
|
||||
= note: in the future, `#![feature(uniform_paths)]` may become the default
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
// Copyright 2018 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.
|
||||
|
||||
// edition:2018
|
||||
|
||||
// This test is similar to `ambiguity.rs`, but nested in a module.
|
||||
|
||||
mod foo {
|
||||
pub use std::io;
|
||||
//~^ ERROR `std` import is ambiguous
|
||||
|
||||
mod std {
|
||||
pub struct io;
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
error: `std` import is ambiguous
|
||||
--> $DIR/ambiguity-nested.rs:16:13
|
||||
|
|
||||
LL | pub use std::io;
|
||||
| ^^^ can refer to external crate `::std`
|
||||
...
|
||||
LL | / mod std {
|
||||
LL | | pub struct io;
|
||||
LL | | }
|
||||
| |_____- may refer to `self::std` in the future
|
||||
|
|
||||
= help: write `::std` or `self::std` explicitly instead
|
||||
= note: in the future, `#![feature(uniform_paths)]` may become the default
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
// Copyright 2018 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.
|
||||
|
||||
// edition:2018
|
||||
|
||||
use std::io;
|
||||
//~^ ERROR `std` import is ambiguous
|
||||
|
||||
mod std {
|
||||
pub struct io;
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
error: `std` import is ambiguous
|
||||
--> $DIR/ambiguity.rs:13:5
|
||||
|
|
||||
LL | use std::io;
|
||||
| ^^^ can refer to external crate `::std`
|
||||
...
|
||||
LL | / mod std {
|
||||
LL | | pub struct io;
|
||||
LL | | }
|
||||
| |_- may refer to `self::std` in the future
|
||||
|
|
||||
= help: write `::std` or `self::std` explicitly instead
|
||||
= note: in the future, `#![feature(uniform_paths)]` may become the default
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
// Copyright 2018 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.
|
||||
|
||||
// edition:2018
|
||||
|
||||
struct std;
|
||||
|
||||
fn main() {
|
||||
fn std() {}
|
||||
enum std {}
|
||||
use std as foo;
|
||||
//~^ ERROR `std` import is ambiguous
|
||||
//~| ERROR `std` import is ambiguous
|
||||
}
|
||||
|
|
@ -0,0 +1,31 @@
|
|||
error: `std` import is ambiguous
|
||||
--> $DIR/block-scoped-shadow.rs:18:9
|
||||
|
|
||||
LL | struct std;
|
||||
| ----------- may refer to `self::std` in the future
|
||||
...
|
||||
LL | enum std {}
|
||||
| ----------- shadowed by block-scoped `std`
|
||||
LL | use std as foo;
|
||||
| ^^^ can refer to external crate `::std`
|
||||
|
|
||||
= help: write `::std` or `self::std` explicitly instead
|
||||
= note: in the future, `#![feature(uniform_paths)]` may become the default
|
||||
|
||||
error: `std` import is ambiguous
|
||||
--> $DIR/block-scoped-shadow.rs:18:9
|
||||
|
|
||||
LL | struct std;
|
||||
| ----------- may refer to `self::std` in the future
|
||||
...
|
||||
LL | fn std() {}
|
||||
| ----------- shadowed by block-scoped `std`
|
||||
LL | enum std {}
|
||||
LL | use std as foo;
|
||||
| ^^^
|
||||
|
|
||||
= help: write `self::std` explicitly instead
|
||||
= note: in the future, `#![feature(uniform_paths)]` may become the default
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue