@@ -174,6 +174,10 @@ pub enum SelectionCandidate<'tcx> {
174
174
pub enum EvaluationResult {
175
175
/// Evaluation successful.
176
176
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 ,
177
181
/// Evaluation successful, but there were unevaluated region obligations.
178
182
EvaluatedToOkModuloRegions ,
179
183
/// Evaluation is known to be ambiguous -- it *might* hold for some
@@ -252,9 +256,11 @@ impl EvaluationResult {
252
256
253
257
pub fn may_apply ( self ) -> bool {
254
258
match self {
255
- EvaluatedToOk | EvaluatedToOkModuloRegions | EvaluatedToAmbig | EvaluatedToUnknown => {
256
- true
257
- }
259
+ EvaluatedToOkModuloOpaqueTypes
260
+ | EvaluatedToOk
261
+ | EvaluatedToOkModuloRegions
262
+ | EvaluatedToAmbig
263
+ | EvaluatedToUnknown => true ,
258
264
259
265
EvaluatedToErr | EvaluatedToRecur => false ,
260
266
}
@@ -264,7 +270,11 @@ impl EvaluationResult {
264
270
match self {
265
271
EvaluatedToUnknown | EvaluatedToRecur => true ,
266
272
267
- EvaluatedToOk | EvaluatedToOkModuloRegions | EvaluatedToAmbig | EvaluatedToErr => false ,
273
+ EvaluatedToOkModuloOpaqueTypes
274
+ | EvaluatedToOk
275
+ | EvaluatedToOkModuloRegions
276
+ | EvaluatedToAmbig
277
+ | EvaluatedToErr => false ,
268
278
}
269
279
}
270
280
}
0 commit comments