generic test

This commit is contained in:
Gus Wynn 2021-09-18 12:23:16 -07:00
parent 110aecd23e
commit f1021bf054
3 changed files with 55 additions and 0 deletions

View File

@ -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>,

View File

@ -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() {
}

View File

@ -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