<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rust/tests/ui/self/elision/ref-mut-self.fixed, branch beta</title>
<subtitle>https://github.com/rust-lang/rust
</subtitle>
<id>http://git.dreamy.place/mirrors/rust/atom?h=beta</id>
<link rel='self' href='http://git.dreamy.place/mirrors/rust/atom?h=beta'/>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/'/>
<updated>2024-05-17T20:31:13+00:00</updated>
<entry>
<title>Tweak suggested lifetimes to modify return type instead of `&amp;self` receiver</title>
<updated>2024-05-17T20:31:13+00:00</updated>
<author>
<name>Esteban Küber</name>
<email>esteban@kuber.com.ar</email>
</author>
<published>2024-05-07T19:54:16+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=1775e7b93d4142eb2e4c75c2d49a9c4d8541d7a6'/>
<id>urn:sha1:1775e7b93d4142eb2e4c75c2d49a9c4d8541d7a6</id>
<content type='text'>
Do not suggest constraining the `&amp;self` param, but rather the return type.
If that is wrong (because it is not sufficient), a follow up error will tell the
user to fix it. This way we lower the chances of *over* constraining, but still
get the cake of "correctly" contrained in two steps.

This is a correct suggestion:

```
error: lifetime may not live long enough
  --&gt; $DIR/ex3-both-anon-regions-return-type-is-anon.rs:9:9
   |
LL |     fn foo&lt;'a&gt;(&amp;self, x: &amp;i32) -&gt; &amp;i32 {
   |                -         - let's call the lifetime of this reference `'1`
   |                |
   |                let's call the lifetime of this reference `'2`
LL |         x
   |         ^ method was supposed to return data with lifetime `'2` but it is returning data with lifetime `'1`
   |
help: consider introducing a named lifetime parameter and update trait if needed
   |
LL |     fn foo&lt;'a&gt;(&amp;self, x: &amp;'a i32) -&gt; &amp;'a i32 {
   |                           ++          ++
```

While this is incomplete because it should suggestino `&amp;'a self`

```
error: lifetime may not live long enough
  --&gt; $DIR/ex3-both-anon-regions-self-is-anon.rs:7:19
   |
LL |     fn foo&lt;'a&gt;(&amp;self, x: &amp;Foo) -&gt; &amp;Foo {
   |                -         - let's call the lifetime of this reference `'1`
   |                |
   |                let's call the lifetime of this reference `'2`
LL |         if true { x } else { self }
   |                   ^ method was supposed to return data with lifetime `'2` but it is returning data with lifetime `'1`
   |
help: consider introducing a named lifetime parameter and update trait if needed
   |
LL |     fn foo&lt;'a&gt;(&amp;self, x: &amp;'a Foo) -&gt; &amp;'a Foo {
   |                           ++          ++
```

but the follow up error is

```
error: lifetime may not live long enough
 --&gt; tests/ui/lifetimes/lifetime-errors/ex3-both-anon-regions-self-is-anon.rs:7:30
  |
6 |     fn foo&lt;'a&gt;(&amp;self, x: &amp;'a Foo) -&gt; &amp;'a Foo {
  |            --  - let's call the lifetime of this reference `'1`
  |            |
  |            lifetime `'a` defined here
7 |         if true { x } else { self }
  |                              ^^^^ method was supposed to return data with lifetime `'a` but it is returning data with lifetime `'1`
  |
help: consider introducing a named lifetime parameter and update trait if needed
  |
6 |     fn foo&lt;'a&gt;(&amp;'a self, x: &amp;'a Foo) -&gt; &amp;'a Foo {
  |                 ++
```
</content>
</entry>
<entry>
<title>Run `rustfmt` on modified tests</title>
<updated>2024-05-17T20:31:13+00:00</updated>
<author>
<name>Esteban Küber</name>
<email>esteban@kuber.com.ar</email>
</author>
<published>2024-05-07T19:45:51+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=ee5a157b4a9d51788d7306af63b3e3ef063ec49d'/>
<id>urn:sha1:ee5a157b4a9d51788d7306af63b3e3ef063ec49d</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Account for owning item lifetimes in suggestion and annotate tests as `run-rustfix`</title>
<updated>2024-05-17T20:31:13+00:00</updated>
<author>
<name>Esteban Küber</name>
<email>esteban@kuber.com.ar</email>
</author>
<published>2024-05-07T19:35:25+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=d1d585d039ace2ea72db8772166773a80a661905'/>
<id>urn:sha1:d1d585d039ace2ea72db8772166773a80a661905</id>
<content type='text'>
```
error: lifetime may not live long enough
  --&gt; $DIR/lt-ref-self.rs:12:9
   |
LL |     fn ref_self(&amp;self, f: &amp;u32) -&gt; &amp;u32 {
   |                 -         - let's call the lifetime of this reference `'1`
   |                 |
   |                 let's call the lifetime of this reference `'2`
LL |         f
   |         ^ method was supposed to return data with lifetime `'2` but it is returning data with lifetime `'1`
   |
help: consider introducing a named lifetime parameter and update trait if needed
   |
LL |     fn ref_self&lt;'b&gt;(&amp;'b self, f: &amp;'b u32) -&gt; &amp;'b u32 {
   |                ++++  ++           ++          ++
```
</content>
</entry>
</feed>
