@@ -174,6 +174,10 @@ pub enum SelectionCandidate<'tcx> {
174174pub enum EvaluationResult {
175175 /// Evaluation successful.
176176 EvaluatedToOk ,
177+ /// Evaluation successful, but need to rerun because opaque types got
178+ /// hidden types assigned without it being known whether the opaque types
179+ /// are within their defining scope
180+ EvaluatedToOkModuloOpaqueTypes ,
177181 /// Evaluation successful, but there were unevaluated region obligations.
178182 EvaluatedToOkModuloRegions ,
179183 /// Evaluation is known to be ambiguous -- it *might* hold for some
@@ -252,9 +256,11 @@ impl EvaluationResult {
252256
253257 pub fn may_apply ( self ) -> bool {
254258 match self {
255- EvaluatedToOk | EvaluatedToOkModuloRegions | EvaluatedToAmbig | EvaluatedToUnknown => {
256- true
257- }
259+ EvaluatedToOkModuloOpaqueTypes
260+ | EvaluatedToOk
261+ | EvaluatedToOkModuloRegions
262+ | EvaluatedToAmbig
263+ | EvaluatedToUnknown => true ,
258264
259265 EvaluatedToErr | EvaluatedToRecur => false ,
260266 }
@@ -264,7 +270,11 @@ impl EvaluationResult {
264270 match self {
265271 EvaluatedToUnknown | EvaluatedToRecur => true ,
266272
267- EvaluatedToOk | EvaluatedToOkModuloRegions | EvaluatedToAmbig | EvaluatedToErr => false ,
273+ EvaluatedToOkModuloOpaqueTypes
274+ | EvaluatedToOk
275+ | EvaluatedToOkModuloRegions
276+ | EvaluatedToAmbig
277+ | EvaluatedToErr => false ,
268278 }
269279 }
270280}
0 commit comments