@@ -19,7 +19,7 @@ use crate::delegate::SolverDelegate;
19
19
use crate :: solve:: inspect:: ProbeKind ;
20
20
use crate :: solve:: {
21
21
BuiltinImplSource , CandidateSource , CanonicalResponse , Certainty , EvalCtxt , Goal , GoalSource ,
22
- MaybeCause , NoSolution , QueryResult ,
22
+ MaybeCause , NoSolution , ParamEnvSource , QueryResult ,
23
23
} ;
24
24
25
25
enum AliasBoundKind {
@@ -114,7 +114,6 @@ where
114
114
ecx : & mut EvalCtxt < ' _ , D > ,
115
115
goal : Goal < I , Self > ,
116
116
assumption : I :: Clause ,
117
- idx : usize ,
118
117
) -> Result < Candidate < I > , NoSolution > {
119
118
Self :: fast_reject_assumption ( ecx, goal, assumption) ?;
120
119
@@ -130,7 +129,7 @@ where
130
129
} )
131
130
. enter ( |ecx| {
132
131
Self :: match_assumption ( ecx, goal, assumption) ?;
133
- let source = ecx. characterize_param_env_assumption ( goal. param_env , assumption, idx ) ?;
132
+ let source = ecx. characterize_param_env_assumption ( goal. param_env , assumption) ?;
134
133
Ok ( Candidate {
135
134
source,
136
135
result : ecx. evaluate_added_goals_and_make_canonical_response ( Certainty :: Yes ) ?,
@@ -553,8 +552,8 @@ where
553
552
goal : Goal < I , G > ,
554
553
candidates : & mut Vec < Candidate < I > > ,
555
554
) {
556
- for ( i , assumption) in goal. param_env . caller_bounds ( ) . iter ( ) . enumerate ( ) {
557
- candidates. extend ( G :: probe_and_consider_param_env_candidate ( self , goal, assumption, i ) ) ;
555
+ for assumption in goal. param_env . caller_bounds ( ) . iter ( ) {
556
+ candidates. extend ( G :: probe_and_consider_param_env_candidate ( self , goal, assumption) ) ;
558
557
}
559
558
}
560
559
@@ -934,20 +933,11 @@ where
934
933
// See `tests/ui/winnowing/norm-where-bound-gt-alias-bound.rs`.
935
934
let mut considered_candidates: Vec < _ > = if candidates_from_env_and_bounds
936
935
. iter ( )
937
- . any ( |c| {
938
- matches ! (
939
- c. source,
940
- CandidateSource :: ParamEnv ( _) | CandidateSource :: GlobalParamEnv ( _)
941
- )
942
- } ) {
936
+ . any ( |c| matches ! ( c. source, CandidateSource :: ParamEnv ( _) ) )
937
+ {
943
938
candidates_from_env_and_bounds
944
939
. into_iter ( )
945
- . filter ( |c| {
946
- matches ! (
947
- c. source,
948
- CandidateSource :: ParamEnv ( _) | CandidateSource :: GlobalParamEnv ( _)
949
- )
950
- } )
940
+ . filter ( |c| matches ! ( c. source, CandidateSource :: ParamEnv ( _) ) )
951
941
. map ( |c| c. result )
952
942
. collect ( )
953
943
} else {
@@ -976,12 +966,7 @@ where
976
966
// (for example, and ideally only) when proving item bounds for an impl.
977
967
let candidates_from_env: Vec < _ > = candidates
978
968
. iter ( )
979
- . filter ( |c| {
980
- matches ! (
981
- c. source,
982
- CandidateSource :: ParamEnv ( _) | CandidateSource :: GlobalParamEnv ( _)
983
- )
984
- } )
969
+ . filter ( |c| matches ! ( c. source, CandidateSource :: ParamEnv ( _) ) )
985
970
. map ( |c| c. result )
986
971
. collect ( ) ;
987
972
if let Some ( response) = self . try_merge_responses ( & candidates_from_env) {
@@ -1009,17 +994,16 @@ where
1009
994
& mut self ,
1010
995
param_env : I :: ParamEnv ,
1011
996
assumption : I :: Clause ,
1012
- idx : usize ,
1013
997
) -> Result < CandidateSource < I > , NoSolution > {
1014
998
// FIXME:
1015
999
if assumption. has_bound_vars ( ) {
1016
- return Ok ( CandidateSource :: ParamEnv ( idx ) ) ;
1000
+ return Ok ( CandidateSource :: ParamEnv ( ParamEnvSource :: NonGlobal ) ) ;
1017
1001
}
1018
1002
1019
1003
match assumption. visit_with ( & mut FindParamInClause { ecx : self , param_env } ) {
1020
1004
ControlFlow :: Break ( Err ( NoSolution ) ) => Err ( NoSolution ) ,
1021
- ControlFlow :: Break ( Ok ( ( ) ) ) => Ok ( CandidateSource :: ParamEnv ( idx ) ) ,
1022
- ControlFlow :: Continue ( ( ) ) => Ok ( CandidateSource :: GlobalParamEnv ( idx ) ) ,
1005
+ ControlFlow :: Break ( Ok ( ( ) ) ) => Ok ( CandidateSource :: ParamEnv ( ParamEnvSource :: NonGlobal ) ) ,
1006
+ ControlFlow :: Continue ( ( ) ) => Ok ( CandidateSource :: ParamEnv ( ParamEnvSource :: Global ) ) ,
1023
1007
}
1024
1008
}
1025
1009
}
0 commit comments