diff options
| author | Tyler Mandry <tmandry@gmail.com> | 2019-12-09 14:33:12 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-12-09 14:33:12 -0800 |
| commit | c2702e38e45d50b66839ebac8a874f84144b1d16 (patch) | |
| tree | e8f2c3eeade63362a4e8db08565d62f5d0b97a40 | |
| parent | 5ce5464fafc939aa9b1e774e0e586735a1d46eeb (diff) | |
| parent | b879ecccd0c8c79764e0feee1f6646277b44762c (diff) | |
| download | rust-c2702e38e45d50b66839ebac8a874f84144b1d16.tar.gz rust-c2702e38e45d50b66839ebac8a874f84144b1d16.zip | |
Rollup merge of #67149 - JohnTitor:fix-ice-1, r=Dylan-DPC
Do not ICE #67123 Fixes #67123 r? @matthewjasper
| -rw-r--r-- | src/librustc_mir/borrow_check/diagnostics/conflict_errors.rs | 3 | ||||
| -rw-r--r-- | src/test/ui/closures/issue-67123.rs | 5 | ||||
| -rw-r--r-- | src/test/ui/closures/issue-67123.stderr | 15 |
3 files changed, 22 insertions, 1 deletions
diff --git a/src/librustc_mir/borrow_check/diagnostics/conflict_errors.rs b/src/librustc_mir/borrow_check/diagnostics/conflict_errors.rs index a0f126fb2cb..252b31e4d3c 100644 --- a/src/librustc_mir/borrow_check/diagnostics/conflict_errors.rs +++ b/src/librustc_mir/borrow_check/diagnostics/conflict_errors.rs @@ -240,7 +240,8 @@ impl<'cx, 'tcx> MirBorrowckCtxt<'cx, 'tcx> { let tcx = self.infcx.tcx; let generics = tcx.generics_of(self.mir_def_id); let param = generics.type_param(¶m_ty, tcx); - if let Some(generics) = tcx.hir().get_generics(self.mir_def_id) { + if let Some(generics) = + tcx.hir().get_generics(tcx.closure_base_def_id(self.mir_def_id)) { suggest_constraining_type_param( generics, &mut err, diff --git a/src/test/ui/closures/issue-67123.rs b/src/test/ui/closures/issue-67123.rs new file mode 100644 index 00000000000..014c530e6d7 --- /dev/null +++ b/src/test/ui/closures/issue-67123.rs @@ -0,0 +1,5 @@ +fn foo<T>(t: T) { + || { t; t; }; //~ ERROR: use of moved value +} + +fn main() {} diff --git a/src/test/ui/closures/issue-67123.stderr b/src/test/ui/closures/issue-67123.stderr new file mode 100644 index 00000000000..b2e875b8010 --- /dev/null +++ b/src/test/ui/closures/issue-67123.stderr @@ -0,0 +1,15 @@ +error[E0382]: use of moved value: `t` + --> $DIR/issue-67123.rs:2:13 + | +LL | fn foo<T>(t: T) { + | - help: consider restricting this bound: `T: Copy` +LL | || { t; t; }; + | - ^ value used here after move + | | + | value moved here + | + = note: move occurs because `t` has type `T`, which does not implement the `Copy` trait + +error: aborting due to previous error + +For more information about this error, try `rustc --explain E0382`. |
