@@ -26,23 +26,34 @@ mod types {
26
26
}
27
27
28
28
pub type Alias = Priv ; //~ WARN private type in public interface
29
+ //~^ WARNING hard error
29
30
pub enum E {
30
31
V1 ( Priv ) , //~ WARN private type in public interface
32
+ //~^ WARNING hard error
31
33
V2 { field : Priv } , //~ WARN private type in public interface
34
+ //~^ WARNING hard error
32
35
}
33
36
pub trait Tr {
34
37
const C : Priv = Priv ; //~ WARN private type in public interface
38
+ //~^ WARNING hard error
35
39
type Alias = Priv ; //~ WARN private type in public interface
40
+ //~^ WARNING hard error
36
41
fn f1 ( arg : Priv ) { } //~ WARN private type in public interface
42
+ //~^ WARNING hard error
37
43
fn f2 ( ) -> Priv { panic ! ( ) } //~ WARN private type in public interface
44
+ //~^ WARNING hard error
38
45
}
39
46
extern {
40
47
pub static ES : Priv ; //~ WARN private type in public interface
48
+ //~^ WARNING hard error
41
49
pub fn ef1 ( arg : Priv ) ; //~ WARN private type in public interface
50
+ //~^ WARNING hard error
42
51
pub fn ef2 ( ) -> Priv ; //~ WARN private type in public interface
52
+ //~^ WARNING hard error
43
53
}
44
54
impl PubTr for Pub {
45
55
type Alias = Priv ; //~ WARN private type in public interface
56
+ //~^ WARNING hard error
46
57
}
47
58
}
48
59
@@ -53,14 +64,21 @@ mod traits {
53
64
54
65
pub type Alias < T : PrivTr > = T ; //~ WARN private trait in public interface
55
66
//~^ WARN trait bounds are not (yet) enforced in type definitions
67
+ //~| WARNING hard error
56
68
pub trait Tr1 : PrivTr { } //~ WARN private trait in public interface
69
+ //~^ WARNING hard error
57
70
pub trait Tr2 < T : PrivTr > { } //~ WARN private trait in public interface
71
+ //~^ WARNING hard error
58
72
pub trait Tr3 {
59
73
type Alias : PrivTr ; //~ WARN private trait in public interface
74
+ //~^ WARNING hard error
60
75
fn f < T : PrivTr > ( arg : T ) { } //~ WARN private trait in public interface
76
+ //~^ WARNING hard error
61
77
}
62
78
impl < T : PrivTr > Pub < T > { } //~ WARN private trait in public interface
79
+ //~^ WARNING hard error
63
80
impl < T : PrivTr > PubTr for Pub < T > { } //~ WARN private trait in public interface
81
+ //~^ WARNING hard error
64
82
}
65
83
66
84
mod traits_where {
@@ -69,12 +87,17 @@ mod traits_where {
69
87
pub trait PubTr { }
70
88
71
89
pub type Alias < T > where T : PrivTr = T ; //~ WARN private trait in public interface
90
+ //~^ WARNING hard error
72
91
pub trait Tr2 < T > where T : PrivTr { } //~ WARN private trait in public interface
92
+ //~^ WARNING hard error
73
93
pub trait Tr3 {
74
94
fn f < T > ( arg : T ) where T : PrivTr { } //~ WARN private trait in public interface
95
+ //~^ WARNING hard error
75
96
}
76
97
impl < T > Pub < T > where T : PrivTr { } //~ WARN private trait in public interface
98
+ //~^ WARNING hard error
77
99
impl < T > PubTr for Pub < T > where T : PrivTr { } //~ WARN private trait in public interface
100
+ //~^ WARNING hard error
78
101
}
79
102
80
103
mod generics {
@@ -84,9 +107,13 @@ mod generics {
84
107
pub trait PubTr < T > { }
85
108
86
109
pub trait Tr1 : PrivTr < Pub > { } //~ WARN private trait in public interface
110
+ //~^ WARNING hard error
87
111
pub trait Tr2 : PubTr < Priv > { } //~ WARN private type in public interface
112
+ //~^ WARNING hard error
88
113
pub trait Tr3 : PubTr < [ Priv ; 1 ] > { } //~ WARN private type in public interface
114
+ //~^ WARNING hard error
89
115
pub trait Tr4 : PubTr < Pub < Priv > > { } //~ WARN private type in public interface
116
+ //~^ WARNING hard error
90
117
}
91
118
92
119
mod impls {
@@ -113,6 +140,7 @@ mod impls {
113
140
}
114
141
impl PubTr for Pub {
115
142
type Alias = Priv ; //~ WARN private type in public interface
143
+ //~^ WARNING hard error
116
144
}
117
145
}
118
146
@@ -179,22 +207,27 @@ mod aliases_pub {
179
207
pub trait Tr1 : PrivUseAliasTr { } // OK
180
208
// This should be OK, if type aliases are substituted
181
209
pub trait Tr2 : PrivUseAliasTr < PrivAlias > { } //~ WARN private type in public interface
210
+ //~^ WARNING hard error
182
211
183
212
impl PrivAlias {
184
213
pub fn f ( arg : Priv ) { } //~ WARN private type in public interface
214
+ //~^ WARNING hard error
185
215
}
186
216
// This doesn't even parse
187
217
// impl <Priv as PrivTr>::AssocAlias {
188
218
// pub fn f(arg: Priv) {} // WARN private type in public interface
189
219
// }
190
220
impl PrivUseAliasTr for PrivUseAlias {
191
221
type Check = Priv ; //~ WARN private type in public interface
222
+ //~^ WARNING hard error
192
223
}
193
224
impl PrivUseAliasTr for PrivAlias {
194
225
type Check = Priv ; //~ WARN private type in public interface
226
+ //~^ WARNING hard error
195
227
}
196
228
impl PrivUseAliasTr for <Priv as PrivTr >:: AssocAlias {
197
229
type Check = Priv ; //~ WARN private type in public interface
230
+ //~^ WARNING hard error
198
231
}
199
232
}
200
233
@@ -217,8 +250,11 @@ mod aliases_priv {
217
250
impl PrivTr for Priv { }
218
251
219
252
pub trait Tr1 : PrivUseAliasTr { } //~ WARN private trait in public interface
253
+ //~^ WARNING hard error
220
254
pub trait Tr2 : PrivUseAliasTr < PrivAlias > { } //~ WARN private trait in public interface
221
255
//~^ WARN private type in public interface
256
+ //~| WARNING hard error
257
+ //~| WARNING hard error
222
258
223
259
impl PrivUseAlias {
224
260
pub fn f ( arg : Priv ) { } // OK
0 commit comments