Suggest adding lifetime to struct field
This commit is contained in:
parent
f9234767e4
commit
0ea9b58029
@ -2306,7 +2306,13 @@ impl<'a, 'tcx> LifetimeContext<'a, 'tcx> {
|
||||
|
||||
Scope::Root => break None,
|
||||
|
||||
Scope::Binder { s, .. } => {
|
||||
Scope::Binder { s, ref lifetimes, .. } => {
|
||||
// collect named lifetimes for suggestions
|
||||
for name in lifetimes.keys() {
|
||||
if let hir::ParamName::Plain(name) = name {
|
||||
lifetime_names.insert(*name);
|
||||
}
|
||||
}
|
||||
late_depth += 1;
|
||||
scope = s;
|
||||
}
|
||||
@ -2323,6 +2329,7 @@ impl<'a, 'tcx> LifetimeContext<'a, 'tcx> {
|
||||
Elide::Exact(l) => l.shifted(late_depth),
|
||||
Elide::Error(ref e) => {
|
||||
if let Scope::Binder { ref lifetimes, .. } = s {
|
||||
// collect named lifetimes for suggestions
|
||||
for name in lifetimes.keys() {
|
||||
if let hir::ParamName::Plain(name) = name {
|
||||
lifetime_names.insert(*name);
|
||||
|
@ -1,4 +1,6 @@
|
||||
struct Thing<'a>(&'a ());
|
||||
struct Foo<'a>(&usize);
|
||||
//~^ ERROR missing lifetime specifier
|
||||
|
||||
fn func1<'a>(_arg: &'a Thing) -> &() { unimplemented!() }
|
||||
//~^ ERROR missing lifetime specifier
|
||||
|
@ -1,5 +1,11 @@
|
||||
error[E0106]: missing lifetime specifier
|
||||
--> $DIR/return-without-lifetime.rs:3:34
|
||||
--> $DIR/return-without-lifetime.rs:2:16
|
||||
|
|
||||
LL | struct Foo<'a>(&usize);
|
||||
| ^ help: consider using the named lifetime: `&'a`
|
||||
|
||||
error[E0106]: missing lifetime specifier
|
||||
--> $DIR/return-without-lifetime.rs:5:34
|
||||
|
|
||||
LL | fn func1<'a>(_arg: &'a Thing) -> &() { unimplemented!() }
|
||||
| ^ help: consider using the named lifetime: `&'a`
|
||||
@ -7,13 +13,13 @@ LL | fn func1<'a>(_arg: &'a Thing) -> &() { unimplemented!() }
|
||||
= help: this function's return type contains a borrowed value, but the signature does not say which one of `_arg`'s 2 lifetimes it is borrowed from
|
||||
|
||||
error[E0106]: missing lifetime specifier
|
||||
--> $DIR/return-without-lifetime.rs:5:35
|
||||
--> $DIR/return-without-lifetime.rs:7:35
|
||||
|
|
||||
LL | fn func2<'a>(_arg: &Thing<'a>) -> &() { unimplemented!() }
|
||||
| ^ help: consider using the named lifetime: `&'a`
|
||||
|
|
||||
= help: this function's return type contains a borrowed value, but the signature does not say which one of `_arg`'s 2 lifetimes it is borrowed from
|
||||
|
||||
error: aborting due to 2 previous errors
|
||||
error: aborting due to 3 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0106`.
|
||||
|
Loading…
Reference in New Issue
Block a user