1111// Private types and traits are not allowed in public interfaces.
1212// This test also ensures that the checks are performed even inside private modules.
1313
14- #![ feature( rustc_attrs) ]
1514#![ feature( associated_consts) ]
1615#![ feature( associated_type_defaults) ]
1716#![ allow( dead_code) ]
@@ -25,34 +24,34 @@ mod types {
2524 type Alias ;
2625 }
2726
28- pub type Alias = Priv ; //~ WARN private type in public interface
27+ pub type Alias = Priv ; //~ ERROR private type in public interface
2928 //~^ WARNING hard error
3029 pub enum E {
31- V1 ( Priv ) , //~ WARN private type in public interface
30+ V1 ( Priv ) , //~ ERROR private type in public interface
3231 //~^ WARNING hard error
33- V2 { field : Priv } , //~ WARN private type in public interface
32+ V2 { field : Priv } , //~ ERROR private type in public interface
3433 //~^ WARNING hard error
3534 }
3635 pub trait Tr {
37- const C : Priv = Priv ; //~ WARN private type in public interface
36+ const C : Priv = Priv ; //~ ERROR private type in public interface
3837 //~^ WARNING hard error
39- type Alias = Priv ; //~ WARN private type in public interface
38+ type Alias = Priv ; //~ ERROR private type in public interface
4039 //~^ WARNING hard error
41- fn f1 ( arg : Priv ) { } //~ WARN private type in public interface
40+ fn f1 ( arg : Priv ) { } //~ ERROR private type in public interface
4241 //~^ WARNING hard error
43- fn f2 ( ) -> Priv { panic ! ( ) } //~ WARN private type in public interface
42+ fn f2 ( ) -> Priv { panic ! ( ) } //~ ERROR private type in public interface
4443 //~^ WARNING hard error
4544 }
4645 extern {
47- pub static ES : Priv ; //~ WARN private type in public interface
46+ pub static ES : Priv ; //~ ERROR private type in public interface
4847 //~^ WARNING hard error
49- pub fn ef1 ( arg : Priv ) ; //~ WARN private type in public interface
48+ pub fn ef1 ( arg : Priv ) ; //~ ERROR private type in public interface
5049 //~^ WARNING hard error
51- pub fn ef2 ( ) -> Priv ; //~ WARN private type in public interface
50+ pub fn ef2 ( ) -> Priv ; //~ ERROR private type in public interface
5251 //~^ WARNING hard error
5352 }
5453 impl PubTr for Pub {
55- type Alias = Priv ; //~ WARN private type in public interface
54+ type Alias = Priv ; //~ ERROR private type in public interface
5655 //~^ WARNING hard error
5756 }
5857}
@@ -62,22 +61,22 @@ mod traits {
6261 pub struct Pub < T > ( T ) ;
6362 pub trait PubTr { }
6463
65- pub type Alias < T : PrivTr > = T ; //~ WARN private trait in public interface
64+ pub type Alias < T : PrivTr > = T ; //~ ERROR private trait in public interface
6665 //~^ WARN trait bounds are not (yet) enforced in type definitions
6766 //~| WARNING hard error
68- pub trait Tr1 : PrivTr { } //~ WARN private trait in public interface
67+ pub trait Tr1 : PrivTr { } //~ ERROR private trait in public interface
6968 //~^ WARNING hard error
70- pub trait Tr2 < T : PrivTr > { } //~ WARN private trait in public interface
69+ pub trait Tr2 < T : PrivTr > { } //~ ERROR private trait in public interface
7170 //~^ WARNING hard error
7271 pub trait Tr3 {
73- type Alias : PrivTr ; //~ WARN private trait in public interface
72+ type Alias : PrivTr ; //~ ERROR private trait in public interface
7473 //~^ WARNING hard error
75- fn f < T : PrivTr > ( arg : T ) { } //~ WARN private trait in public interface
74+ fn f < T : PrivTr > ( arg : T ) { } //~ ERROR private trait in public interface
7675 //~^ WARNING hard error
7776 }
78- impl < T : PrivTr > Pub < T > { } //~ WARN private trait in public interface
77+ impl < T : PrivTr > Pub < T > { } //~ ERROR private trait in public interface
7978 //~^ WARNING hard error
80- impl < T : PrivTr > PubTr for Pub < T > { } //~ WARN private trait in public interface
79+ impl < T : PrivTr > PubTr for Pub < T > { } //~ ERROR private trait in public interface
8180 //~^ WARNING hard error
8281}
8382
@@ -86,17 +85,17 @@ mod traits_where {
8685 pub struct Pub < T > ( T ) ;
8786 pub trait PubTr { }
8887
89- pub type Alias < T > where T : PrivTr = T ; //~ WARN private trait in public interface
88+ pub type Alias < T > where T : PrivTr = T ; //~ ERROR private trait in public interface
9089 //~^ WARNING hard error
91- pub trait Tr2 < T > where T : PrivTr { } //~ WARN private trait in public interface
90+ pub trait Tr2 < T > where T : PrivTr { } //~ ERROR private trait in public interface
9291 //~^ WARNING hard error
9392 pub trait Tr3 {
94- fn f < T > ( arg : T ) where T : PrivTr { } //~ WARN private trait in public interface
93+ fn f < T > ( arg : T ) where T : PrivTr { } //~ ERROR private trait in public interface
9594 //~^ WARNING hard error
9695 }
97- impl < T > Pub < T > where T : PrivTr { } //~ WARN private trait in public interface
96+ impl < T > Pub < T > where T : PrivTr { } //~ ERROR private trait in public interface
9897 //~^ WARNING hard error
99- impl < T > PubTr for Pub < T > where T : PrivTr { } //~ WARN private trait in public interface
98+ impl < T > PubTr for Pub < T > where T : PrivTr { } //~ ERROR private trait in public interface
10099 //~^ WARNING hard error
101100}
102101
@@ -106,13 +105,13 @@ mod generics {
106105 trait PrivTr < T > { }
107106 pub trait PubTr < T > { }
108107
109- pub trait Tr1 : PrivTr < Pub > { } //~ WARN private trait in public interface
108+ pub trait Tr1 : PrivTr < Pub > { } //~ ERROR private trait in public interface
110109 //~^ WARNING hard error
111- pub trait Tr2 : PubTr < Priv > { } //~ WARN private type in public interface
110+ pub trait Tr2 : PubTr < Priv > { } //~ ERROR private type in public interface
112111 //~^ WARNING hard error
113- pub trait Tr3 : PubTr < [ Priv ; 1 ] > { } //~ WARN private type in public interface
112+ pub trait Tr3 : PubTr < [ Priv ; 1 ] > { } //~ ERROR private type in public interface
114113 //~^ WARNING hard error
115- pub trait Tr4 : PubTr < Pub < Priv > > { } //~ WARN private type in public interface
114+ pub trait Tr4 : PubTr < Pub < Priv > > { } //~ ERROR private type in public interface
116115 //~^ WARNING hard error
117116}
118117
@@ -139,7 +138,7 @@ mod impls {
139138 type Alias = Priv ; // OK
140139 }
141140 impl PubTr for Pub {
142- type Alias = Priv ; //~ WARN private type in public interface
141+ type Alias = Priv ; //~ ERROR private type in public interface
143142 //~^ WARNING hard error
144143 }
145144}
@@ -211,23 +210,23 @@ mod aliases_pub {
211210 pub trait Tr2 : PrivUseAliasTr < PrivAlias > { } // OK
212211
213212 impl PrivAlias {
214- pub fn f ( arg : Priv ) { } //~ WARN private type in public interface
213+ pub fn f ( arg : Priv ) { } //~ ERROR private type in public interface
215214 //~^ WARNING hard error
216215 }
217216 // This doesn't even parse
218217 // impl <Priv as PrivTr>::AssocAlias {
219- // pub fn f(arg: Priv) {} // WARN private type in public interface
218+ // pub fn f(arg: Priv) {} // ERROR private type in public interface
220219 // }
221220 impl PrivUseAliasTr for PrivUseAlias {
222- type Check = Priv ; //~ WARN private type in public interface
221+ type Check = Priv ; //~ ERROR private type in public interface
223222 //~^ WARNING hard error
224223 }
225224 impl PrivUseAliasTr for PrivAlias {
226- type Check = Priv ; //~ WARN private type in public interface
225+ type Check = Priv ; //~ ERROR private type in public interface
227226 //~^ WARNING hard error
228227 }
229228 impl PrivUseAliasTr for <Priv as PrivTr >:: AssocAlias {
230- type Check = Priv ; //~ WARN private type in public interface
229+ type Check = Priv ; //~ ERROR private type in public interface
231230 //~^ WARNING hard error
232231 }
233232}
@@ -252,10 +251,10 @@ mod aliases_priv {
252251 type AssocAlias = Priv3 ;
253252 }
254253
255- pub trait Tr1 : PrivUseAliasTr { } //~ WARN private trait in public interface
254+ pub trait Tr1 : PrivUseAliasTr { } //~ ERROR private trait in public interface
256255 //~^ WARNING hard error
257- pub trait Tr2 : PrivUseAliasTr < PrivAlias > { } //~ WARN private trait in public interface
258- //~^ WARN private type in public interface
256+ pub trait Tr2 : PrivUseAliasTr < PrivAlias > { } //~ ERROR private trait in public interface
257+ //~^ ERROR private type in public interface
259258 //~| WARNING hard error
260259 //~| WARNING hard error
261260
@@ -288,5 +287,4 @@ mod aliases_params {
288287 pub fn f1 ( arg : PrivAliasGeneric < u8 > ) { } // OK, not an error
289288}
290289
291- #[ rustc_error]
292- fn main ( ) { } //~ ERROR compilation successful
290+ fn main ( ) { }
0 commit comments