@@ -3,10 +3,10 @@ use rustc_hir::def::DefKind;
3
3
use rustc_hir:: def_id:: LocalDefId ;
4
4
use rustc_hir:: intravisit;
5
5
use rustc_hir:: intravisit:: Visitor ;
6
- use rustc_middle:: bug;
7
6
use rustc_middle:: query:: Providers ;
8
7
use rustc_middle:: ty:: util:: { CheckRegions , NotUniqueParam } ;
9
8
use rustc_middle:: ty:: { self , Ty , TyCtxt , TypeSuperVisitable , TypeVisitable , TypeVisitor } ;
9
+ use rustc_middle:: { bug, span_bug} ;
10
10
use rustc_span:: Span ;
11
11
use tracing:: { instrument, trace} ;
12
12
@@ -320,9 +320,12 @@ fn opaque_types_defined_by<'tcx>(
320
320
| DefKind :: AnonConst => {
321
321
collector. collect_taits_declared_in_body ( ) ;
322
322
}
323
+ // Closures and coroutines are type checked with their parent
324
+ DefKind :: Closure | DefKind :: InlineConst => {
325
+ collector. opaques . extend ( tcx. opaque_types_defined_by ( tcx. local_parent ( item) ) ) ;
326
+ }
327
+ DefKind :: AssocTy | DefKind :: TyAlias | DefKind :: GlobalAsm => { }
323
328
DefKind :: OpaqueTy
324
- | DefKind :: TyAlias
325
- | DefKind :: AssocTy
326
329
| DefKind :: Mod
327
330
| DefKind :: Struct
328
331
| DefKind :: Union
@@ -340,12 +343,13 @@ fn opaque_types_defined_by<'tcx>(
340
343
| DefKind :: ForeignMod
341
344
| DefKind :: Field
342
345
| DefKind :: LifetimeParam
343
- | DefKind :: GlobalAsm
344
346
| DefKind :: Impl { .. }
345
- | DefKind :: SyntheticCoroutineBody => { }
346
- // Closures and coroutines are type checked with their parent
347
- DefKind :: Closure | DefKind :: InlineConst => {
348
- collector. opaques . extend ( tcx. opaque_types_defined_by ( tcx. local_parent ( item) ) ) ;
347
+ | DefKind :: SyntheticCoroutineBody => {
348
+ span_bug ! (
349
+ tcx. def_span( item) ,
350
+ "`opaque_types_defined_by` not defined for {} `{item:?}`" ,
351
+ kind. descr( item. to_def_id( ) )
352
+ ) ;
349
353
}
350
354
}
351
355
tcx. mk_local_def_ids ( & collector. opaques )
0 commit comments