@@ -8,17 +8,13 @@ use rustc_data_structures::{
8
8
use rustc_hir as hir;
9
9
use rustc_hir:: intravisit:: Visitor ;
10
10
use rustc_hir:: HirId ;
11
- use rustc_infer:: {
12
- infer:: { DefineOpaqueTypes , InferOk } ,
13
- traits:: ObligationCause ,
14
- } ;
11
+ use rustc_infer:: infer:: { DefineOpaqueTypes , InferOk } ;
15
12
use rustc_middle:: bug;
16
13
use rustc_middle:: ty:: { self , Ty , TyCtxt , TypeSuperVisitable , TypeVisitable } ;
17
14
use rustc_session:: lint;
18
15
use rustc_span:: DUMMY_SP ;
19
16
use rustc_span:: { def_id:: LocalDefId , Span } ;
20
- use rustc_trait_selection:: traits:: ObligationCtxt ;
21
- use rustc_type_ir:: TyVid ;
17
+ use rustc_trait_selection:: traits:: { ObligationCause , ObligationCtxt } ;
22
18
23
19
#[ derive( Copy , Clone ) ]
24
20
pub enum DivergingFallbackBehavior {
@@ -479,7 +475,7 @@ impl<'tcx> FnCtxt<'_, 'tcx> {
479
475
fn lint_obligations_broken_by_never_type_fallback_change (
480
476
& self ,
481
477
behavior : DivergingFallbackBehavior ,
482
- diverging_vids : & [ TyVid ] ,
478
+ diverging_vids : & [ ty :: TyVid ] ,
483
479
) {
484
480
let DivergingFallbackBehavior :: FallbackToUnit = behavior else { return } ;
485
481
@@ -489,7 +485,7 @@ impl<'tcx> FnCtxt<'_, 'tcx> {
489
485
}
490
486
491
487
// Returns errors which happen if fallback is set to `fallback`
492
- let try_out = |fallback| {
488
+ let remaining_errors_if_fallback_to = |fallback| {
493
489
self . probe ( |_| {
494
490
let obligations = self . fulfillment_cx . borrow ( ) . pending_obligations ( ) ;
495
491
let ocx = ObligationCtxt :: new ( & self . infcx ) ;
@@ -498,7 +494,8 @@ impl<'tcx> FnCtxt<'_, 'tcx> {
498
494
for & diverging_vid in diverging_vids {
499
495
let diverging_ty = Ty :: new_var ( self . tcx , diverging_vid) ;
500
496
501
- _ = ocx. eq ( & ObligationCause :: dummy ( ) , self . param_env , diverging_ty, fallback) ;
497
+ ocx. eq ( & ObligationCause :: dummy ( ) , self . param_env , diverging_ty, fallback)
498
+ . expect ( "expected diverging var to be unconstrained" ) ;
502
499
}
503
500
504
501
ocx. select_where_possible ( )
@@ -507,9 +504,9 @@ impl<'tcx> FnCtxt<'_, 'tcx> {
507
504
508
505
// If we have no errors with `fallback = ()`, but *do* have errors with `fallback = !`,
509
506
// then this code will be broken by the never type fallback change.qba
510
- let unit_errors = try_out ( self . tcx . types . unit ) ;
507
+ let unit_errors = remaining_errors_if_fallback_to ( self . tcx . types . unit ) ;
511
508
if unit_errors. is_empty ( )
512
- && let never_errors = try_out ( self . tcx . types . never )
509
+ && let never_errors = remaining_errors_if_fallback_to ( self . tcx . types . never )
513
510
&& !never_errors. is_empty ( )
514
511
{
515
512
self . tcx . emit_node_span_lint (
0 commit comments