@@ -16,7 +16,7 @@ use rustc_middle::traits::{BuiltinImplSource, ImplSource, ImplSourceUserDefinedD
16
16
use rustc_middle:: ty:: fast_reject:: DeepRejectCtxt ;
17
17
use rustc_middle:: ty:: fold:: TypeFoldable ;
18
18
use rustc_middle:: ty:: visit:: { MaxUniverse , TypeVisitable , TypeVisitableExt } ;
19
- use rustc_middle:: ty:: { self , Term , Ty , TyCtxt , Upcast } ;
19
+ use rustc_middle:: ty:: { self , Term , Ty , TyCtxt , TypingMode , Upcast } ;
20
20
use rustc_middle:: { bug, span_bug} ;
21
21
use rustc_span:: symbol:: sym;
22
22
use tracing:: { debug, instrument} ;
@@ -975,18 +975,21 @@ fn assemble_candidates_from_impls<'cx, 'tcx>(
975
975
// and the obligation is monomorphic, otherwise passes such as
976
976
// transmute checking and polymorphic MIR optimizations could
977
977
// get a result which isn't correct for all monomorphizations.
978
- if obligation. param_env . reveal ( ) == Reveal :: All {
979
- // NOTE(eddyb) inference variables can resolve to parameters, so
980
- // assume `poly_trait_ref` isn't monomorphic, if it contains any.
981
- let poly_trait_ref = selcx. infcx . resolve_vars_if_possible ( trait_ref) ;
982
- !poly_trait_ref. still_further_specializable ( )
983
- } else {
984
- debug ! (
985
- assoc_ty = ?selcx. tcx( ) . def_path_str( node_item. item. def_id) ,
986
- ?obligation. predicate,
987
- "assemble_candidates_from_impls: not eligible due to default" ,
988
- ) ;
989
- false
978
+ match selcx. infcx . typing_mode ( obligation. param_env ) {
979
+ TypingMode :: Coherence | TypingMode :: Analysis { .. } => {
980
+ debug ! (
981
+ assoc_ty = ?selcx. tcx( ) . def_path_str( node_item. item. def_id) ,
982
+ ?obligation. predicate,
983
+ "assemble_candidates_from_impls: not eligible due to default" ,
984
+ ) ;
985
+ false
986
+ }
987
+ TypingMode :: PostAnalysis => {
988
+ // NOTE(eddyb) inference variables can resolve to parameters, so
989
+ // assume `poly_trait_ref` isn't monomorphic, if it contains any.
990
+ let poly_trait_ref = selcx. infcx . resolve_vars_if_possible ( trait_ref) ;
991
+ !poly_trait_ref. still_further_specializable ( )
992
+ }
990
993
}
991
994
}
992
995
}
0 commit comments