note: External requirements
  --> $DIR/ty-param-closure-outlives-from-where-clause.rs:27:26
   |
LL |       with_signature(a, b, |x, y| {
   |  __________________________^
LL | |
LL | |         //
LL | |         // See `correct_region`, which explains the point of this
...  |
LL | |         require(&x, &y)
LL | |     })
   | |_____^
   |
   = note: defining type: no_region::<T>::{{closure}}#0 with closure substs [
               i32,
               extern "rust-call" fn((std::cell::Cell<&'_#1r ()>, T)),
           ]
   = note: late-bound region is '_#2r
   = note: number of external vids: 3
   = note: where T: '_#1r

note: No external requirements
  --> $DIR/ty-param-closure-outlives-from-where-clause.rs:26:1
   |
LL | / fn no_region<'a, T>(a: Cell<&'a ()>, b: T) {
LL | |     with_signature(a, b, |x, y| {
LL | |
LL | |         //
...  |
LL | |     })
LL | | }
   | |_^
   |
   = note: defining type: no_region::<T>

error[E0309]: the parameter type `T` may not live long enough
  --> $DIR/ty-param-closure-outlives-from-where-clause.rs:27:26
   |
LL |       with_signature(a, b, |x, y| {
   |  __________________________^
LL | |
LL | |         //
LL | |         // See `correct_region`, which explains the point of this
...  |
LL | |         require(&x, &y)
LL | |     })
   | |_____^
   |
   = help: consider adding an explicit lifetime bound `T: ReFree(DefId(0:11 ~ ty_param_closure_outlives_from_where_clause[317d]::no_region[0]), BrNamed(DefId(0:12 ~ ty_param_closure_outlives_from_where_clause[317d]::no_region[0]::'a[0]), 'a))`...

note: External requirements
  --> $DIR/ty-param-closure-outlives-from-where-clause.rs:43:26
   |
LL |       with_signature(a, b, |x, y| {
   |  __________________________^
LL | |         // Key point of this test:
LL | |         //
LL | |         // The *closure* is being type-checked with all of its free
...  |
LL | |         require(&x, &y)
LL | |     })
   | |_____^
   |
   = note: defining type: correct_region::<'_#1r, T>::{{closure}}#0 with closure substs [
               i32,
               extern "rust-call" fn((std::cell::Cell<&'_#2r ()>, T)),
           ]
   = note: number of external vids: 3
   = note: where T: '_#2r

note: No external requirements
  --> $DIR/ty-param-closure-outlives-from-where-clause.rs:39:1
   |
LL | / fn correct_region<'a, T>(a: Cell<&'a ()>, b: T)
LL | | where
LL | |     T: 'a,
LL | | {
...  |
LL | |     })
LL | | }
   | |_^
   |
   = note: defining type: correct_region::<'_#1r, T>

note: External requirements
  --> $DIR/ty-param-closure-outlives-from-where-clause.rs:64:26
   |
LL |       with_signature(a, b, |x, y| {
   |  __________________________^
LL | |
LL | |         // See `correct_region`
LL | |         require(&x, &y)
LL | |     })
   | |_____^
   |
   = note: defining type: wrong_region::<'_#1r, T>::{{closure}}#0 with closure substs [
               i32,
               extern "rust-call" fn((std::cell::Cell<&'_#2r ()>, T)),
           ]
   = note: late-bound region is '_#3r
   = note: number of external vids: 4
   = note: where T: '_#2r

note: No external requirements
  --> $DIR/ty-param-closure-outlives-from-where-clause.rs:60:1
   |
LL | / fn wrong_region<'a, 'b, T>(a: Cell<&'a ()>, b: T)
LL | | where
LL | |     T: 'b,
LL | | {
...  |
LL | |     })
LL | | }
   | |_^
   |
   = note: defining type: wrong_region::<'_#1r, T>

error[E0309]: the parameter type `T` may not live long enough
  --> $DIR/ty-param-closure-outlives-from-where-clause.rs:64:26
   |
LL |       with_signature(a, b, |x, y| {
   |  __________________________^
LL | |
LL | |         // See `correct_region`
LL | |         require(&x, &y)
LL | |     })
   | |_____^
   |
   = help: consider adding an explicit lifetime bound `T: ReFree(DefId(0:19 ~ ty_param_closure_outlives_from_where_clause[317d]::wrong_region[0]), BrNamed(DefId(0:20 ~ ty_param_closure_outlives_from_where_clause[317d]::wrong_region[0]::'a[0]), 'a))`...

note: External requirements
  --> $DIR/ty-param-closure-outlives-from-where-clause.rs:77:26
   |
LL |       with_signature(a, b, |x, y| {
   |  __________________________^
LL | |         // See `correct_region`
LL | |         require(&x, &y)
LL | |     })
   | |_____^
   |
   = note: defining type: outlives_region::<'_#1r, '_#2r, T>::{{closure}}#0 with closure substs [
               i32,
               extern "rust-call" fn((std::cell::Cell<&'_#3r ()>, T)),
           ]
   = note: number of external vids: 4
   = note: where T: '_#3r

note: No external requirements
  --> $DIR/ty-param-closure-outlives-from-where-clause.rs:72:1
   |
LL | / fn outlives_region<'a, 'b, T>(a: Cell<&'a ()>, b: T)
LL | | where
LL | |     T: 'b,
LL | |     'b: 'a,
...  |
LL | |     })
LL | | }
   | |_^
   |
   = note: defining type: outlives_region::<'_#1r, '_#2r, T>

error: aborting due to 2 previous errors

For more information about this error, try `rustc --explain E0309`.
