diff options
| author | jackh726 <jack.huey@umassmed.edu> | 2021-09-09 11:24:55 -0400 |
|---|---|---|
| committer | jackh726 <jack.huey@umassmed.edu> | 2021-09-09 11:26:16 -0400 |
| commit | 8e7613f9e0366a012cd6d4765b5a2d568d108029 (patch) | |
| tree | 1d710a3593b5aedc7eb6228c4248129e8ab2a0c4 | |
| parent | c49b0762c0002aaabe9208994880e45221a01c47 (diff) | |
| download | rust-8e7613f9e0366a012cd6d4765b5a2d568d108029.tar.gz rust-8e7613f9e0366a012cd6d4765b5a2d568d108029.zip | |
Only add_implied_bounds for norm_ty if different
| -rw-r--r-- | compiler/rustc_borrowck/src/type_check/free_region_relations.rs | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/compiler/rustc_borrowck/src/type_check/free_region_relations.rs b/compiler/rustc_borrowck/src/type_check/free_region_relations.rs index e1e8f6a61ad..70c74940d62 100644 --- a/compiler/rustc_borrowck/src/type_check/free_region_relations.rs +++ b/compiler/rustc_borrowck/src/type_check/free_region_relations.rs @@ -259,7 +259,7 @@ impl UniversalRegionRelationsBuilder<'cx, 'tcx> { // We add implied bounds from both the unnormalized and normalized ty // See issue #87748 let constraints_implied_1 = self.add_implied_bounds(ty); - let TypeOpOutput { output: ty, constraints: constraints1, .. } = self + let TypeOpOutput { output: norm_ty, constraints: constraints1, .. } = self .param_env .and(type_op::normalize::Normalize::new(ty)) .fully_perform(self.infcx) @@ -286,8 +286,9 @@ impl UniversalRegionRelationsBuilder<'cx, 'tcx> { // } // ``` // Both &Self::Bar and &() are WF - let constraints_implied_2 = self.add_implied_bounds(ty); - normalized_inputs_and_output.push(ty); + let constraints_implied_2 = + if ty != norm_ty { self.add_implied_bounds(norm_ty) } else { None }; + normalized_inputs_and_output.push(norm_ty); constraints1.into_iter().chain(constraints_implied_1).chain(constraints_implied_2) }) .collect(); |
