summary refs log tree commit diff
path: root/src/test/ui/hrtb/hrtb-perfect-forwarding.nll.stderr
blob: f1647d3d2e43be52594b4bbe73b6b6bd993517b7 (plain)
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
warning: function cannot return without recursing
  --> $DIR/hrtb-perfect-forwarding.rs:22:1
   |
LL | / fn no_hrtb<'b,T>(mut t: T)
LL | |     where T : Bar<&'b isize>
LL | | {
LL | |     // OK -- `T : Bar<&'b isize>`, and thus the impl above ensures that
LL | |     // `&mut T : Bar<&'b isize>`.
LL | |     no_hrtb(&mut t);
   | |     --------------- recursive call site
LL | | }
   | |_^ cannot return without recursing
   |
   = note: `#[warn(unconditional_recursion)]` on by default
   = help: a `loop` may express intention better if this is on purpose

warning: function cannot return without recursing
  --> $DIR/hrtb-perfect-forwarding.rs:30:1
   |
LL | / fn bar_hrtb<T>(mut t: T)
LL | |     where T : for<'b> Bar<&'b isize>
LL | | {
LL | |     // OK -- `T : for<'b> Bar<&'b isize>`, and thus the impl above
...  |
LL | |     bar_hrtb(&mut t);
   | |     ---------------- recursive call site
LL | | }
   | |_^ cannot return without recursing
   |
   = help: a `loop` may express intention better if this is on purpose

warning: function cannot return without recursing
  --> $DIR/hrtb-perfect-forwarding.rs:39:1
   |
LL | / fn foo_hrtb_bar_not<'b,T>(mut t: T)
LL | |     where T : for<'a> Foo<&'a isize> + Bar<&'b isize>
LL | | {
LL | |     // Not OK -- The forwarding impl for `Foo` requires that `Bar` also
...  |
LL | |     foo_hrtb_bar_not(&mut t);
   | |     ------------------------ recursive call site
LL | | }
   | |_^ cannot return without recursing
   |
   = help: a `loop` may express intention better if this is on purpose

error: higher-ranked subtype error
  --> $DIR/hrtb-perfect-forwarding.rs:46:5
   |
LL |     foo_hrtb_bar_not(&mut t);
   |     ^^^^^^^^^^^^^^^^^^^^^^^^

error: lifetime may not live long enough
  --> $DIR/hrtb-perfect-forwarding.rs:46:5
   |
LL | fn foo_hrtb_bar_not<'b,T>(mut t: T)
   |                     -- lifetime `'b` defined here
...
LL |     foo_hrtb_bar_not(&mut t);
   |     ^^^^^^^^^^^^^^^^^^^^^^^^ requires that `'b` must outlive `'static`
   |
   = help: consider replacing `'b` with `'static`

warning: function cannot return without recursing
  --> $DIR/hrtb-perfect-forwarding.rs:49:1
   |
LL | / fn foo_hrtb_bar_hrtb<T>(mut t: T)
LL | |     where T : for<'a> Foo<&'a isize> + for<'b> Bar<&'b isize>
LL | | {
LL | |     // OK -- now we have `T : for<'b> Bar&'b isize>`.
LL | |     foo_hrtb_bar_hrtb(&mut t);
   | |     ------------------------- recursive call site
LL | | }
   | |_^ cannot return without recursing
   |
   = help: a `loop` may express intention better if this is on purpose

error: aborting due to 2 previous errors