error: lifetime may not live long enough
  --> $DIR/regions-outlives-projection-container.rs:40:13
   |
LL | fn with_assoc<'a,'b>() {
   |               -- -- lifetime `'b` defined here
   |               |
   |               lifetime `'a` defined here
...
LL |     let _x: &'a WithAssoc<TheType<'b>> = loop { };
   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'b` must outlive `'a`

error: lifetime may not live long enough
  --> $DIR/regions-outlives-projection-container.rs:58:13
   |
LL | fn without_assoc<'a,'b>() {
   |                  -- -- lifetime `'b` defined here
   |                  |
   |                  lifetime `'a` defined here
...
LL |     let _x: &'a WithoutAssoc<TheType<'b>> = loop { };
   |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ type annotation requires that `'b` must outlive `'a`

error: lifetime may not live long enough
  --> $DIR/regions-outlives-projection-container.rs:67:5
   |
LL | fn call_with_assoc<'a,'b>() {
   |                    -- -- lifetime `'b` defined here
   |                    |
   |                    lifetime `'a` defined here
...
LL |     call::<&'a WithAssoc<TheType<'b>>>();
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'b` must outlive `'a`

error: lifetime may not live long enough
  --> $DIR/regions-outlives-projection-container.rs:74:5
   |
LL | fn call_without_assoc<'a,'b>() {
   |                       -- -- lifetime `'b` defined here
   |                       |
   |                       lifetime `'a` defined here
...
LL |     call::<&'a WithoutAssoc<TheType<'b>>>();
   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'b` must outlive `'a`

error: aborting due to 4 previous errors

