@@ -15,7 +15,7 @@ use rustc_middle::hir::place::Place as HirPlace;
15
15
use rustc_middle:: mir:: FakeReadCause ;
16
16
use rustc_middle:: ty:: adjustment:: { Adjust , Adjustment , PointerCast } ;
17
17
use rustc_middle:: ty:: fold:: { TypeFoldable , TypeFolder } ;
18
- use rustc_middle:: ty:: { self , Ty , TyCtxt } ;
18
+ use rustc_middle:: ty:: { self , OpaqueTypeKey , Ty , TyCtxt } ;
19
19
use rustc_span:: symbol:: sym;
20
20
use rustc_span:: Span ;
21
21
use rustc_trait_selection:: opaque_types:: InferCtxtExt ;
@@ -475,9 +475,10 @@ impl<'cx, 'tcx> WritebackCx<'cx, 'tcx> {
475
475
}
476
476
477
477
fn visit_opaque_types ( & mut self , span : Span ) {
478
- for & ( opaque_type_key, opaque_defn) in self . fcx . opaque_types . borrow ( ) . iter ( ) {
479
- let hir_id =
480
- self . tcx ( ) . hir ( ) . local_def_id_to_hir_id ( opaque_type_key. def_id . expect_local ( ) ) ;
478
+ for & ( opaque_type_key @ OpaqueTypeKey { def_id, substs } , opaque_defn) in
479
+ self . fcx . opaque_types . borrow ( ) . iter ( )
480
+ {
481
+ let hir_id = self . tcx ( ) . hir ( ) . local_def_id_to_hir_id ( def_id. expect_local ( ) ) ;
481
482
let instantiated_ty = self . resolve ( opaque_defn. concrete_ty , & hir_id) ;
482
483
483
484
debug_assert ! ( !instantiated_ty. has_escaping_bound_vars( ) ) ;
@@ -505,7 +506,7 @@ impl<'cx, 'tcx> WritebackCx<'cx, 'tcx> {
505
506
if let ty:: Opaque ( defin_ty_def_id, _substs) = * definition_ty. kind ( ) {
506
507
if let hir:: OpaqueTyOrigin :: Misc | hir:: OpaqueTyOrigin :: TyAlias = opaque_defn. origin
507
508
{
508
- if opaque_type_key . def_id == defin_ty_def_id {
509
+ if def_id == defin_ty_def_id {
509
510
debug ! (
510
511
"skipping adding concrete definition for opaque type {:?} {:?}" ,
511
512
opaque_defn, defin_ty_def_id
@@ -515,7 +516,7 @@ impl<'cx, 'tcx> WritebackCx<'cx, 'tcx> {
515
516
}
516
517
}
517
518
518
- if !opaque_type_key . substs . needs_infer ( ) {
519
+ if !substs. needs_infer ( ) {
519
520
// We only want to add an entry into `concrete_opaque_types`
520
521
// if we actually found a defining usage of this opaque type.
521
522
// Otherwise, we do nothing - we'll either find a defining usage
@@ -532,7 +533,7 @@ impl<'cx, 'tcx> WritebackCx<'cx, 'tcx> {
532
533
span,
533
534
"`visit_opaque_types` tried to write different types for the same \
534
535
opaque type: {:?}, {:?}, {:?}, {:?}",
535
- opaque_type_key . def_id,
536
+ def_id,
536
537
definition_ty,
537
538
opaque_defn,
538
539
old_concrete_ty,
0 commit comments