add a test for combining RPIT with explicit tail calls
This commit is contained in:
parent
9312cd6d38
commit
f5f91cc4a7
2 changed files with 32 additions and 0 deletions
20
tests/ui/explicit-tail-calls/rpit.rs
Normal file
20
tests/ui/explicit-tail-calls/rpit.rs
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
#![feature(explicit_tail_calls)]
|
||||
#![expect(incomplete_features)]
|
||||
|
||||
// Regression test for https://github.com/rust-lang/rust/issues/139305.
|
||||
//
|
||||
// Combining return position impl trait (RPIT) with guaranteed tail calls does not
|
||||
// currently work, but at least it does not ICE.
|
||||
|
||||
fn foo(x: u32, y: u32) -> u32 {
|
||||
x + y
|
||||
}
|
||||
|
||||
fn bar(x: u32, y: u32) -> impl ToString {
|
||||
become foo(x, y);
|
||||
//~^ ERROR mismatched signatures
|
||||
}
|
||||
|
||||
fn main() {
|
||||
assert_eq!(bar(1, 2).to_string(), "3");
|
||||
}
|
||||
12
tests/ui/explicit-tail-calls/rpit.stderr
Normal file
12
tests/ui/explicit-tail-calls/rpit.stderr
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
error: mismatched signatures
|
||||
--> $DIR/rpit.rs:14:5
|
||||
|
|
||||
LL | become foo(x, y);
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
|
||||
= note: `become` requires caller and callee to have matching signatures
|
||||
= note: caller signature: `fn(u32, u32) -> impl ToString`
|
||||
= note: callee signature: `fn(u32, u32) -> u32`
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue