Skip to content

Commit

Permalink
generic test
Browse files Browse the repository at this point in the history
  • Loading branch information
guswynn committed Sep 18, 2021
1 parent 110aecd commit f1021bf
Show file tree
Hide file tree
Showing 3 changed files with 55 additions and 0 deletions.
3 changes: 3 additions & 0 deletions compiler/rustc_typeck/src/check/generator_interior.rs
Expand Up @@ -462,6 +462,9 @@ pub struct SuspendCheckData<'a, 'tcx> {
// Returns whether it emitted a diagnostic or not
// Note that this fn and the proceding one are based on the code
// for creating must_use diagnostics
//
// Note that this technique was chosen over things like a `Suspend` marker trait
// as it is simpler and has precendent in the compiler
pub fn check_must_not_suspend_ty<'tcx>(
fcx: &FnCtxt<'_, 'tcx>,
ty: Ty<'tcx>,
Expand Down
21 changes: 21 additions & 0 deletions src/test/ui/lint/must_not_suspend/generic.rs
@@ -0,0 +1,21 @@
// edition:2018
#![feature(must_not_suspend)]
#![deny(must_not_suspend)]

#[must_not_suspend]
struct No {}

async fn shushspend() {}

async fn wheeee<T>(t: T) {
shushspend().await;
drop(t);
}

async fn yes() {
wheeee(No {}).await; //~ ERROR `No` held across
//~^ ERROR `No` held across
}

fn main() {
}
31 changes: 31 additions & 0 deletions src/test/ui/lint/must_not_suspend/generic.stderr
@@ -0,0 +1,31 @@
error: `No` held across a suspend point, but should not be
--> $DIR/generic.rs:16:12
|
LL | wheeee(No {}).await;
| -------^^^^^------- the value is held across this suspend point
|
note: the lint level is defined here
--> $DIR/generic.rs:3:9
|
LL | #![deny(must_not_suspend)]
| ^^^^^^^^^^^^^^^^
help: consider using a block (`{ ... }`) to shrink the value's scope, ending before the suspend point
--> $DIR/generic.rs:16:12
|
LL | wheeee(No {}).await;
| ^^^^^

error: `No` held across a suspend point, but should not be
--> $DIR/generic.rs:16:12
|
LL | wheeee(No {}).await;
| -------^^^^^------- the value is held across this suspend point
|
help: consider using a block (`{ ... }`) to shrink the value's scope, ending before the suspend point
--> $DIR/generic.rs:16:12
|
LL | wheeee(No {}).await;
| ^^^^^

error: aborting due to 2 previous errors

0 comments on commit f1021bf

Please sign in to comment.