Skip to content

Commit 8378487

Browse files
committed
Only dedup obligation after new ones have been added.
1 parent 3c99b3d commit 8378487

File tree

1 file changed

+4
-4
lines changed
  • compiler/rustc_trait_selection/src/traits

1 file changed

+4
-4
lines changed

Diff for: compiler/rustc_trait_selection/src/traits/project.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -1214,7 +1214,7 @@ fn opt_normalize_projection_type<'a, 'b, 'tcx>(
12141214

12151215
let projected_term = selcx.infcx.resolve_vars_if_possible(projected_term);
12161216

1217-
let mut result = if projected_term.has_projections() {
1217+
let result = if projected_term.has_projections() {
12181218
let mut normalizer = AssocTypeNormalizer::new(
12191219
selcx,
12201220
param_env,
@@ -1224,14 +1224,14 @@ fn opt_normalize_projection_type<'a, 'b, 'tcx>(
12241224
);
12251225
let normalized_ty = normalizer.fold(projected_term);
12261226

1227+
let mut deduped = SsoHashSet::with_capacity(projected_obligations.len());
1228+
projected_obligations.retain(|obligation| deduped.insert(obligation.clone()));
1229+
12271230
Normalized { value: normalized_ty, obligations: projected_obligations }
12281231
} else {
12291232
Normalized { value: projected_term, obligations: projected_obligations }
12301233
};
12311234

1232-
let mut deduped = SsoHashSet::with_capacity(projected_obligations.len());
1233-
result.obligations.retain(|obligation| deduped.insert(obligation.clone()));
1234-
12351235
if use_cache {
12361236
infcx.inner.borrow_mut().projection_cache().insert_term(cache_key, result.clone());
12371237
}

0 commit comments

Comments
 (0)