Test showing previous behavior

This commit is contained in:
Michael Goulet 2024-08-13 14:17:04 -04:00
parent e08b80c0fb
commit 850bcbdc2e
2 changed files with 30 additions and 0 deletions

View File

@ -0,0 +1,18 @@
// MIR for `main` after built
fn main() -> () {
let mut _0: ();
let _1: for<'a> fn(&'a (), &'a ());
scope 1 {
debug x => _1;
}
bb0: {
StorageLive(_1);
_1 = foo as for<'a, 'b> fn(&'a (), &'b ()) (PointerCoercion(ReifyFnPointer));
FakeRead(ForLet(None), _1);
_0 = const ();
StorageDead(_1);
return;
}
}

View File

@ -0,0 +1,12 @@
// skip-filecheck
// Validate that we record the target for the `as` coercion as `for<'a> fn(&'a (), &'a ())`,
// and not `for<'a, 'b>(&'a (), &'b ())`. We previously did the latter due to a bug in
// the code that records adjustments in HIR typeck.
fn foo<'a, 'b>(_: &'a (), _: &'b ()) {}
// EMIT_MIR build_correct_coerce.main.built.after.mir
fn main() {
let x = foo as for<'a> fn(&'a (), &'a ());
}