]> git.proxmox.com Git - rustc.git/blob - src/test/ui/run-pass/uniform-paths/macros.rs
New upstream version 1.30.0+dfsg1
[rustc.git] / src / test / ui / run-pass / uniform-paths / macros.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 // This test is similar to `basic.rs`, but with macros defining local items.
19
20 // Test that ambiguity errors are not emitted between `self::test` and
21 // `::test`, assuming the latter (crate) is not in `extern_prelude`.
22 macro_rules! m1 {
23 () => {
24 mod test {
25 pub struct Foo(pub ());
26 }
27 }
28 }
29 use test::Foo;
30 m1!();
31
32 // Test that qualified paths can refer to both the external crate and local item.
33 macro_rules! m2 {
34 () => {
35 mod std {
36 pub struct io(pub ());
37 }
38 }
39 }
40 use ::std::io as std_io;
41 use self::std::io as local_io;
42 m2!();
43
44 fn main() {
45 Foo(());
46 std_io::stdout();
47 local_io(());
48 }