diff options
| author | Michael Goulet <michael@errs.io> | 2022-12-21 05:36:26 +0000 |
|---|---|---|
| committer | Michael Goulet <michael@errs.io> | 2022-12-21 06:06:46 +0000 |
| commit | 0c09e2bf5afb535aa7e84bbcd8cce509a0e015b1 (patch) | |
| tree | 3b868097837632d629dc782aea41dcf886c62675 | |
| parent | c8ebff6aeea5bc9242269e5f072442db62be734b (diff) | |
| download | rust-0c09e2bf5afb535aa7e84bbcd8cce509a0e015b1.tar.gz rust-0c09e2bf5afb535aa7e84bbcd8cce509a0e015b1.zip | |
Substitute things correctly
| -rw-r--r-- | compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs | 3 | ||||
| -rw-r--r-- | src/test/ui/iterators/invalid-iterator-chain.stderr | 8 |
2 files changed, 6 insertions, 5 deletions
diff --git a/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs b/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs index 60f67491364..1edc9357e12 100644 --- a/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs +++ b/compiler/rustc_trait_selection/src/traits/error_reporting/suggestions.rs @@ -3182,7 +3182,8 @@ impl<'tcx> TypeErrCtxtExt<'tcx> for TypeErrCtxt<'_, 'tcx> { let mut type_diffs = vec![]; if let ObligationCauseCode::ExprBindingObligation(def_id, _, _, idx) = parent_code.deref() - && let predicates = self.tcx.predicates_of(def_id).instantiate_identity(self.tcx) + && let Some(node_substs) = typeck_results.node_substs_opt(call_hir_id) + && let predicates = self.tcx.predicates_of(def_id).instantiate(self.tcx, node_substs) && let Some(pred) = predicates.predicates.get(*idx) { if let Some(trait_pred) = pred.to_opt_poly_trait_pred() diff --git a/src/test/ui/iterators/invalid-iterator-chain.stderr b/src/test/ui/iterators/invalid-iterator-chain.stderr index d76a4bfb7b3..f3dceca7e41 100644 --- a/src/test/ui/iterators/invalid-iterator-chain.stderr +++ b/src/test/ui/iterators/invalid-iterator-chain.stderr @@ -52,14 +52,14 @@ LL | .sum::<i32>(), <i32 as Sum<&'a i32>> <i32 as Sum> note: the method call chain might not have had the expected associated types - --> $DIR/invalid-iterator-chain.rs:20:14 + --> $DIR/invalid-iterator-chain.rs:25:14 | LL | vec![0, 1] | ---------- this expression has type `Vec<{integer}>` LL | .iter() | ------ `Iterator::Item` is `&{integer}` here LL | .map(|x| x * 2) - | ^^^^^^^^^^^^^^ `Iterator::Item` changed to `{integer}` here + | -------------- `Iterator::Item` changed to `{integer}` here LL | .map(|x| x as f64) | ----------------- `Iterator::Item` changed to `f64` here LL | .map(|x| x as i64) @@ -84,14 +84,14 @@ LL | .sum::<i32>(), <i32 as Sum<&'a i32>> <i32 as Sum> note: the method call chain might not have had the expected associated types - --> $DIR/invalid-iterator-chain.rs:32:14 + --> $DIR/invalid-iterator-chain.rs:33:14 | LL | vec![0, 1] | ---------- this expression has type `Vec<{integer}>` LL | .iter() | ------ `Iterator::Item` is `&{integer}` here LL | .map(|x| x * 2) - | ^^^^^^^^^^^^^^ `Iterator::Item` changed to `{integer}` here + | -------------- `Iterator::Item` changed to `{integer}` here LL | .map(|x| x as f64) | ^^^^^^^^^^^^^^^^^ `Iterator::Item` changed to `f64` here LL | .filter(|x| *x > 0.0) |
