Add test for test function signature verification.
This commit is contained in:
parent
774f7825cb
commit
5049743be2
31
tests/ui/test-attrs/test-function-signature.rs
Normal file
31
tests/ui/test-attrs/test-function-signature.rs
Normal 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
|
||||
}
|
39
tests/ui/test-attrs/test-function-signature.stderr
Normal file
39
tests/ui/test-attrs/test-function-signature.stderr
Normal 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`.
|
Loading…
Reference in New Issue
Block a user