Add test for test function signature verification.

This commit is contained in:
Lukas Markeffsky 2023-06-06 23:32:17 +02:00
parent 774f7825cb
commit 5049743be2
2 changed files with 70 additions and 0 deletions

View File

@ -0,0 +1,31 @@
// compile-flags: --test
#[test]
fn foo() -> Result<(), ()> {
Ok(())
}
#[test]
fn bar() -> i32 { //~ ERROR the trait bound `i32: Termination` is not satisfied
0
}
#[test]
fn baz(val: i32) {} //~ ERROR functions used as tests can not have any arguments
#[test]
fn lifetime_generic<'a>() -> Result<(), &'a str> {
Err("coerce me to any lifetime")
}
#[test]
fn type_generic<T>() {} //~ ERROR functions used as tests can not have any non-lifetime generic parameters
#[test]
fn const_generic<const N: usize>() {} //~ ERROR functions used as tests can not have any non-lifetime generic parameters
// Regression test for <https://github.com/rust-lang/rust/issues/112360>. This used to ICE.
fn nested() {
#[test]
fn foo(arg: ()) {} //~ ERROR functions used as tests can not have any arguments
}

View File

@ -0,0 +1,39 @@
error: functions used as tests can not have any arguments
--> $DIR/test-function-signature.rs:14:1
|
LL | fn baz(val: i32) {}
| ^^^^^^^^^^^^^^^^^^^
error: functions used as tests can not have any non-lifetime generic parameters
--> $DIR/test-function-signature.rs:22:1
|
LL | fn type_generic<T>() {}
| ^^^^^^^^^^^^^^^^^^^^^^^
error: functions used as tests can not have any non-lifetime generic parameters
--> $DIR/test-function-signature.rs:25:1
|
LL | fn const_generic<const N: usize>() {}
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: functions used as tests can not have any arguments
--> $DIR/test-function-signature.rs:30:5
|
LL | fn foo(arg: ()) {}
| ^^^^^^^^^^^^^^^^^^
error[E0277]: the trait bound `i32: Termination` is not satisfied
--> $DIR/test-function-signature.rs:9:13
|
LL | #[test]
| ------- in this procedural macro expansion
LL | fn bar() -> i32 {
| ^^^ the trait `Termination` is not implemented for `i32`
|
note: required by a bound in `assert_test_result`
--> $SRC_DIR/test/src/lib.rs:LL:COL
= note: this error originates in the attribute macro `test` (in Nightly builds, run with -Z macro-backtrace for more info)
error: aborting due to 5 previous errors
For more information about this error, try `rustc --explain E0277`.