File: issue-98589-closures-relate-named-regions.rs

package info (click to toggle)
rustc 1.70.0%2Bdfsg1-9
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 722,120 kB
  • sloc: xml: 147,962; javascript: 10,210; sh: 8,590; python: 8,220; ansic: 5,901; cpp: 4,635; makefile: 4,001; asm: 2,856
file content (36 lines) | stat: -rw-r--r-- 1,029 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
// Regression test for #98589.
// Previously, named lifetime `'a` that appears in the closure was unrelated to `'a`
// that appears in the parent function iff `'a` is early-bound.
// This made the following tests pass borrowck.

// check-fail

// The bound `'a: 'a` ensures that `'a` is early-bound.
fn test_early_early<'a: 'a, 'b: 'b>() {
    || { None::<&'a &'b ()>; };
    //~^ ERROR lifetime may not live long enough
}

fn test_early_late<'a: 'a, 'b>() {
    || { None::<&'a &'b ()>; };
    //~^ ERROR lifetime may not live long enough
}

// No early-bound lifetime; included for completeness.
fn test_late_late<'a, 'b>() {
    || { None::<&'a &'b ()>; };
    //~^ ERROR lifetime may not live long enough
}

fn test_early_type<'a: 'a, T>() {
    || { None::<&'a T>; };
    //~^ ERROR the parameter type `T` may not live long enough
}

// No early-bound lifetime; included for completeness.
fn test_late_type<'a, T>() {
    || { None::<&'a T>; };
    //~^ ERROR the parameter type `T` may not live long enough
}

fn main() {}