]> git.lizzy.rs Git - rust.git/blob - src/test/ui/namespace/namespace-mix.rs
Rollup merge of #57107 - mjbshaw:thread_local_test, r=nikomatsakis
[rust.git] / src / test / ui / namespace / namespace-mix.rs
1 // aux-build:namespace-mix.rs
2
3 extern crate namespace_mix;
4 use namespace_mix::*;
5
6 mod c {
7     pub struct S {}
8     pub struct TS();
9     pub struct US;
10     pub enum E {
11         V {},
12         TV(),
13         UV,
14     }
15
16     pub struct Item;
17 }
18
19 // Use something emitting the type argument name, e.g., unsatisfied bound.
20 trait Impossible {}
21 fn check<T: Impossible>(_: T) {}
22
23 mod m1 {
24     pub use ::c::*;
25     pub type S = ::c::Item;
26 }
27 mod m2 {
28     pub use ::c::*;
29     pub const S: ::c::Item = ::c::Item;
30 }
31
32 fn f12() {
33     check(m1::S{}); //~ ERROR c::Item
34     check(m1::S); //~ ERROR expected value, found type alias `m1::S`
35     check(m2::S{}); //~ ERROR c::S
36     check(m2::S); //~ ERROR c::Item
37 }
38 fn xf12() {
39     check(xm1::S{}); //~ ERROR c::Item
40     check(xm1::S); //~ ERROR expected value, found type alias `xm1::S`
41     check(xm2::S{}); //~ ERROR c::S
42     check(xm2::S); //~ ERROR c::Item
43 }
44
45 mod m3 {
46     pub use ::c::*;
47     pub type TS = ::c::Item;
48 }
49 mod m4 {
50     pub use ::c::*;
51     pub const TS: ::c::Item = ::c::Item;
52 }
53
54 fn f34() {
55     check(m3::TS{}); //~ ERROR c::Item
56     check(m3::TS); //~ ERROR c::TS
57     check(m4::TS{}); //~ ERROR c::TS
58     check(m4::TS); //~ ERROR c::Item
59 }
60 fn xf34() {
61     check(xm3::TS{}); //~ ERROR c::Item
62     check(xm3::TS); //~ ERROR c::TS
63     check(xm4::TS{}); //~ ERROR c::TS
64     check(xm4::TS); //~ ERROR c::Item
65 }
66
67 mod m5 {
68     pub use ::c::*;
69     pub type US = ::c::Item;
70 }
71 mod m6 {
72     pub use ::c::*;
73     pub const US: ::c::Item = ::c::Item;
74 }
75
76 fn f56() {
77     check(m5::US{}); //~ ERROR c::Item
78     check(m5::US); //~ ERROR c::US
79     check(m6::US{}); //~ ERROR c::US
80     check(m6::US); //~ ERROR c::Item
81 }
82 fn xf56() {
83     check(xm5::US{}); //~ ERROR c::Item
84     check(xm5::US); //~ ERROR c::US
85     check(xm6::US{}); //~ ERROR c::US
86     check(xm6::US); //~ ERROR c::Item
87 }
88
89 mod m7 {
90     pub use ::c::E::*;
91     pub type V = ::c::Item;
92 }
93 mod m8 {
94     pub use ::c::E::*;
95     pub const V: ::c::Item = ::c::Item;
96 }
97
98 fn f78() {
99     check(m7::V{}); //~ ERROR c::Item
100     check(m7::V); //~ ERROR expected value, found struct variant `m7::V`
101     check(m8::V{}); //~ ERROR c::E
102     check(m8::V); //~ ERROR c::Item
103 }
104 fn xf78() {
105     check(xm7::V{}); //~ ERROR c::Item
106     check(xm7::V); //~ ERROR expected value, found struct variant `xm7::V`
107     check(xm8::V{}); //~ ERROR c::E
108     check(xm8::V); //~ ERROR c::Item
109 }
110
111 mod m9 {
112     pub use ::c::E::*;
113     pub type TV = ::c::Item;
114 }
115 mod mA {
116     pub use ::c::E::*;
117     pub const TV: ::c::Item = ::c::Item;
118 }
119
120 fn f9A() {
121     check(m9::TV{}); //~ ERROR c::Item
122     check(m9::TV); //~ ERROR c::E
123     check(mA::TV{}); //~ ERROR c::E
124     check(mA::TV); //~ ERROR c::Item
125 }
126 fn xf9A() {
127     check(xm9::TV{}); //~ ERROR c::Item
128     check(xm9::TV); //~ ERROR c::E
129     check(xmA::TV{}); //~ ERROR c::E
130     check(xmA::TV); //~ ERROR c::Item
131 }
132
133 mod mB {
134     pub use ::c::E::*;
135     pub type UV = ::c::Item;
136 }
137 mod mC {
138     pub use ::c::E::*;
139     pub const UV: ::c::Item = ::c::Item;
140 }
141
142 fn fBC() {
143     check(mB::UV{}); //~ ERROR c::Item
144     check(mB::UV); //~ ERROR c::E
145     check(mC::UV{}); //~ ERROR c::E
146     check(mC::UV); //~ ERROR c::Item
147 }
148 fn xfBC() {
149     check(xmB::UV{}); //~ ERROR c::Item
150     check(xmB::UV); //~ ERROR c::E
151     check(xmC::UV{}); //~ ERROR c::E
152     check(xmC::UV); //~ ERROR c::Item
153 }
154
155 fn main() {}