add a test for combining RPIT with explicit tail calls

This commit is contained in:
Folkert de Vries 2025-11-12 00:00:39 +01:00
parent 9312cd6d38
commit f5f91cc4a7
No known key found for this signature in database
GPG key ID: 1F17F6FFD112B97C
2 changed files with 32 additions and 0 deletions

View 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");
}

View 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