11
11
// Private types and traits are not allowed in public interfaces.
12
12
// This test also ensures that the checks are performed even inside private modules.
13
13
14
- #![ feature( rustc_attrs) ]
15
14
#![ feature( associated_consts) ]
16
15
#![ feature( associated_type_defaults) ]
17
16
#![ allow( dead_code) ]
@@ -25,34 +24,34 @@ mod types {
25
24
type Alias ;
26
25
}
27
26
28
- pub type Alias = Priv ; //~ WARN private type in public interface
27
+ pub type Alias = Priv ; //~ ERROR private type in public interface
29
28
//~^ WARNING hard error
30
29
pub enum E {
31
- V1 ( Priv ) , //~ WARN private type in public interface
30
+ V1 ( Priv ) , //~ ERROR private type in public interface
32
31
//~^ WARNING hard error
33
- V2 { field : Priv } , //~ WARN private type in public interface
32
+ V2 { field : Priv } , //~ ERROR private type in public interface
34
33
//~^ WARNING hard error
35
34
}
36
35
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
38
37
//~^ WARNING hard error
39
- type Alias = Priv ; //~ WARN private type in public interface
38
+ type Alias = Priv ; //~ ERROR private type in public interface
40
39
//~^ 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
42
41
//~^ 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
44
43
//~^ WARNING hard error
45
44
}
46
45
extern {
47
- pub static ES : Priv ; //~ WARN private type in public interface
46
+ pub static ES : Priv ; //~ ERROR private type in public interface
48
47
//~^ 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
50
49
//~^ 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
52
51
//~^ WARNING hard error
53
52
}
54
53
impl PubTr for Pub {
55
- type Alias = Priv ; //~ WARN private type in public interface
54
+ type Alias = Priv ; //~ ERROR private type in public interface
56
55
//~^ WARNING hard error
57
56
}
58
57
}
@@ -62,22 +61,22 @@ mod traits {
62
61
pub struct Pub < T > ( T ) ;
63
62
pub trait PubTr { }
64
63
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
66
65
//~^ WARN trait bounds are not (yet) enforced in type definitions
67
66
//~| 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
69
68
//~^ 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
71
70
//~^ WARNING hard error
72
71
pub trait Tr3 {
73
- type Alias : PrivTr ; //~ WARN private trait in public interface
72
+ type Alias : PrivTr ; //~ ERROR private trait in public interface
74
73
//~^ 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
76
75
//~^ WARNING hard error
77
76
}
78
- impl < T : PrivTr > Pub < T > { } //~ WARN private trait in public interface
77
+ impl < T : PrivTr > Pub < T > { } //~ ERROR private trait in public interface
79
78
//~^ 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
81
80
//~^ WARNING hard error
82
81
}
83
82
@@ -86,17 +85,17 @@ mod traits_where {
86
85
pub struct Pub < T > ( T ) ;
87
86
pub trait PubTr { }
88
87
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
90
89
//~^ 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
92
91
//~^ WARNING hard error
93
92
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
95
94
//~^ WARNING hard error
96
95
}
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
98
97
//~^ 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
100
99
//~^ WARNING hard error
101
100
}
102
101
@@ -106,13 +105,13 @@ mod generics {
106
105
trait PrivTr < T > { }
107
106
pub trait PubTr < T > { }
108
107
109
- pub trait Tr1 : PrivTr < Pub > { } //~ WARN private trait in public interface
108
+ pub trait Tr1 : PrivTr < Pub > { } //~ ERROR private trait in public interface
110
109
//~^ 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
112
111
//~^ 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
114
113
//~^ 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
116
115
//~^ WARNING hard error
117
116
}
118
117
@@ -139,7 +138,7 @@ mod impls {
139
138
type Alias = Priv ; // OK
140
139
}
141
140
impl PubTr for Pub {
142
- type Alias = Priv ; //~ WARN private type in public interface
141
+ type Alias = Priv ; //~ ERROR private type in public interface
143
142
//~^ WARNING hard error
144
143
}
145
144
}
@@ -211,23 +210,23 @@ mod aliases_pub {
211
210
pub trait Tr2 : PrivUseAliasTr < PrivAlias > { } // OK
212
211
213
212
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
215
214
//~^ WARNING hard error
216
215
}
217
216
// This doesn't even parse
218
217
// 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
220
219
// }
221
220
impl PrivUseAliasTr for PrivUseAlias {
222
- type Check = Priv ; //~ WARN private type in public interface
221
+ type Check = Priv ; //~ ERROR private type in public interface
223
222
//~^ WARNING hard error
224
223
}
225
224
impl PrivUseAliasTr for PrivAlias {
226
- type Check = Priv ; //~ WARN private type in public interface
225
+ type Check = Priv ; //~ ERROR private type in public interface
227
226
//~^ WARNING hard error
228
227
}
229
228
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
231
230
//~^ WARNING hard error
232
231
}
233
232
}
@@ -252,10 +251,10 @@ mod aliases_priv {
252
251
type AssocAlias = Priv3 ;
253
252
}
254
253
255
- pub trait Tr1 : PrivUseAliasTr { } //~ WARN private trait in public interface
254
+ pub trait Tr1 : PrivUseAliasTr { } //~ ERROR private trait in public interface
256
255
//~^ 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
259
258
//~| WARNING hard error
260
259
//~| WARNING hard error
261
260
@@ -288,5 +287,4 @@ mod aliases_params {
288
287
pub fn f1 ( arg : PrivAliasGeneric < u8 > ) { } // OK, not an error
289
288
}
290
289
291
- #[ rustc_error]
292
- fn main ( ) { } //~ ERROR compilation successful
290
+ fn main ( ) { }
0 commit comments