]> git.lizzy.rs Git - rust.git/blob - src/test/ui/run-pass/uniform-paths/basic.rs
rustc_resolve: don't treat uniform_paths canaries as ambiguities unless they resolve...
[rust.git] / src / test / ui / run-pass / uniform-paths / basic.rs
1 // Copyright 2018 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 // run-pass
12 #![allow(non_camel_case_types)]
13
14 // edition:2018
15
16 #![feature(uniform_paths)]
17
18 // Test that ambiguity errors are not emitted between `self::test` and
19 // `::test`, assuming the latter (crate) is not in `extern_prelude`.
20 mod test {
21     pub struct Foo(pub ());
22 }
23 use test::Foo;
24
25 // Test that qualified paths can refer to both the external crate and local item.
26 mod std {
27     pub struct io(pub ());
28 }
29 use ::std::io as std_io;
30 use self::std::io as local_io;
31
32 fn main() {
33     Foo(());
34     std_io::stdout();
35     local_io(());
36
37     {
38         // Test that having `std_io` in a module scope and a non-module
39         // scope is allowed, when both resolve to the same definition.
40         use std::io as std_io;
41         use std_io::stdout;
42         stdout();
43     }
44 }