Skip to content

Commit

Permalink
Auto merge of #67004 - estebank:issue-66958, r=eddyb
Browse files Browse the repository at this point in the history
Do not ICE on async fn with non-Copy infered type arg

Fix #66958.
  • Loading branch information
bors committed Dec 9, 2019
2 parents 2b0e6d2 + 7ed9066 commit dbbe4f1
Show file tree
Hide file tree
Showing 3 changed files with 38 additions and 9 deletions.
19 changes: 10 additions & 9 deletions src/librustc_mir/borrow_check/diagnostics/conflict_errors.rs
Original file line number Diff line number Diff line change
Expand Up @@ -240,15 +240,16 @@ 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(&param_ty, tcx);
let generics = tcx.hir().get_generics(self.mir_def_id).unwrap();
suggest_constraining_type_param(
generics,
&mut err,
&param.name.as_str(),
"Copy",
tcx.sess.source_map(),
span,
);
if let Some(generics) = tcx.hir().get_generics(self.mir_def_id) {
suggest_constraining_type_param(
generics,
&mut err,
&param.name.as_str(),
"Copy",
tcx.sess.source_map(),
span,
);
}
}
let span = if let Some(local) = place.as_local() {
let decl = &self.body.local_decls[local];
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
// edition:2018

struct Ia<S>(S);

impl<S> Ia<S> {
fn partial(_: S) {}
fn full(self) {}

async fn crash(self) {
Self::partial(self.0);
Self::full(self); //~ ERROR use of moved value: `self`
}
}

fn main() {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
error[E0382]: use of moved value: `self`
--> $DIR/issue-66958-non-copy-infered-type-arg.rs:11:20
|
LL | Self::partial(self.0);
| ------ value moved here
LL | Self::full(self);
| ^^^^ value used here after partial move
|
= note: move occurs because `self.0` has type `S`, which does not implement the `Copy` trait

error: aborting due to previous error

For more information about this error, try `rustc --explain E0382`.

0 comments on commit dbbe4f1

Please sign in to comment.