mirror of
https://github.com/rust-lang/rust.git
synced 2025-11-25 06:17:22 +00:00
52 lines
1.4 KiB
Rust
52 lines
1.4 KiB
Rust
//! Regression test for: https://github.com/rust-lang/rust/issues/144957
|
|
//!
|
|
//! This test ensures that lifetime information is included in diagnostics.
|
|
//!
|
|
//! Specifically, it checks that the `become` call produces an error with lifetimes shown
|
|
//! in both caller and callee signatures.
|
|
//!
|
|
//! If the test fails:
|
|
//! - Lifetimes may be missing (fix the diagnostic), or
|
|
//! - The message format changed (update the test).
|
|
|
|
#![feature(explicit_tail_calls)]
|
|
#![allow(incomplete_features)]
|
|
|
|
fn foo<'a>(_: fn(&'a ())) {
|
|
become bar(dummy);
|
|
//~^ ERROR mismatched signatures
|
|
//~| NOTE `become` requires caller and callee to have matching signatures
|
|
//~| NOTE caller signature: `fn(fn(&'a ()))`
|
|
//~| NOTE callee signature: `fn(for<'a> fn(&'a ()))`
|
|
}
|
|
|
|
fn bar(_: fn(&())) {}
|
|
|
|
fn dummy(_: &()) {}
|
|
|
|
fn foo_(_: fn(&())) {
|
|
become bar1(dummy2);
|
|
//~^ ERROR mismatched signatures
|
|
//~| NOTE `become` requires caller and callee to have matching signatures
|
|
//~| NOTE caller signature: `fn(for<'a> fn(&'a ()))`
|
|
//~| NOTE callee signature: `fn(fn(&'a ()))`
|
|
}
|
|
|
|
fn bar1<'a>(_: fn(&'a ())) {}
|
|
|
|
fn dummy2(_: &()) {}
|
|
|
|
fn foo__(_: fn(&'static ())) {
|
|
become bar(dummy3);
|
|
//~^ ERROR mismatched signatures
|
|
//~| NOTE `become` requires caller and callee to have matching signatures
|
|
//~| NOTE caller signature: `fn(fn(&'static ()))`
|
|
//~| NOTE callee signature: `fn(for<'a> fn(&'a ()))`
|
|
}
|
|
|
|
fn bar2(_: fn(&())) {}
|
|
|
|
fn dummy3(_: &()) {}
|
|
|
|
fn main() {}
|