@@ -158,7 +158,7 @@ impl<'ctx, 'gen> MonotoneFramework for CannotDeriveDefault<'ctx, 'gen> {
158
158
}
159
159
} ;
160
160
161
- if ty . is_opaque ( self . ctx , item ) {
161
+ if item . is_opaque ( self . ctx , & ( ) ) {
162
162
let layout_can_derive = ty. layout ( self . ctx ) . map_or ( true , |l| {
163
163
l. opaque ( ) . can_trivially_derive_default ( )
164
164
} ) ;
@@ -265,7 +265,8 @@ impl<'ctx, 'gen> MonotoneFramework for CannotDeriveDefault<'ctx, 'gen> {
265
265
266
266
let bases_cannot_derive = info. base_members ( )
267
267
. iter ( )
268
- . any ( |base| self . cannot_derive_default . contains ( & base. ty ) ) ;
268
+ . any ( |base| !self . ctx . whitelisted_items ( ) . contains ( & base. ty ) ||
269
+ self . cannot_derive_default . contains ( & base. ty ) ) ;
269
270
if bases_cannot_derive {
270
271
trace ! ( " base members cannot derive Default, so we can't \
271
272
either") ;
@@ -277,12 +278,14 @@ impl<'ctx, 'gen> MonotoneFramework for CannotDeriveDefault<'ctx, 'gen> {
277
278
. any ( |f| {
278
279
match * f {
279
280
Field :: DataMember ( ref data) => {
280
- self . cannot_derive_default . contains ( & data. ty ( ) )
281
+ !self . ctx . whitelisted_items ( ) . contains ( & data. ty ( ) ) ||
282
+ self . cannot_derive_default . contains ( & data. ty ( ) )
281
283
}
282
284
Field :: Bitfields ( ref bfu) => {
283
285
bfu. bitfields ( )
284
286
. iter ( ) . any ( |b| {
285
- self . cannot_derive_default . contains ( & b. ty ( ) )
287
+ !self . ctx . whitelisted_items ( ) . contains ( & b. ty ( ) ) ||
288
+ self . cannot_derive_default . contains ( & b. ty ( ) )
286
289
} )
287
290
}
288
291
}
0 commit comments