0f6e06b7c0
by using an opaque type obligation to bubble up comparisons between opaque types and other types Also uses proper obligation causes so that the body id works, because out of some reason nll uses body ids for logic instead of just diagnostics.
32 lines
1.5 KiB
Plaintext
32 lines
1.5 KiB
Plaintext
error[E0700]: hidden type for `impl Trait` captures lifetime that does not appear in bounds
|
|
--> $DIR/ordinary-bounds-unrelated.rs:28:22
|
|
|
|
|
LL | fn upper_bounds<'a, 'b, 'c, 'd, 'e>(a: Ordinary<'a>, b: Ordinary<'b>) -> impl Trait<'d, 'e>
|
|
| -- hidden type `Ordinary<'b>` captures the lifetime `'b` as defined here
|
|
...
|
|
LL | if condition() { a } else { b }
|
|
| ^
|
|
|
|
|
help: to declare that the `impl Trait` captures `'b`, you can add an explicit `'b` lifetime bound
|
|
|
|
|
LL | fn upper_bounds<'a, 'b, 'c, 'd, 'e>(a: Ordinary<'a>, b: Ordinary<'b>) -> impl Trait<'d, 'e> + 'b
|
|
| ++++
|
|
|
|
error[E0700]: hidden type for `impl Trait` captures lifetime that does not appear in bounds
|
|
--> $DIR/ordinary-bounds-unrelated.rs:28:33
|
|
|
|
|
LL | fn upper_bounds<'a, 'b, 'c, 'd, 'e>(a: Ordinary<'a>, b: Ordinary<'b>) -> impl Trait<'d, 'e>
|
|
| -- hidden type `Ordinary<'b>` captures the lifetime `'b` as defined here
|
|
...
|
|
LL | if condition() { a } else { b }
|
|
| ^
|
|
|
|
|
help: to declare that the `impl Trait` captures `'b`, you can add an explicit `'b` lifetime bound
|
|
|
|
|
LL | fn upper_bounds<'a, 'b, 'c, 'd, 'e>(a: Ordinary<'a>, b: Ordinary<'b>) -> impl Trait<'d, 'e> + 'b
|
|
| ++++
|
|
|
|
error: aborting due to 2 previous errors
|
|
|
|
For more information about this error, try `rustc --explain E0700`.
|