diff options
| author | bors <bors@rust-lang.org> | 2022-10-29 17:32:45 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-10-29 17:32:45 +0000 |
| commit | 5e9772042948002f9c6f60c4c81603170035fffa (patch) | |
| tree | 51c350d2a6a336c4ee58ab582ae30d19409418c7 /src | |
| parent | 68c836a904e5a421712db311421c5266f9ce71c0 (diff) | |
| parent | cb1e7d96767525fde3965f86bace8a5acf0dc643 (diff) | |
| download | rust-5e9772042948002f9c6f60c4c81603170035fffa.tar.gz rust-5e9772042948002f9c6f60c4c81603170035fffa.zip | |
Auto merge of #103450 - cjgillot:elision-nodedup, r=Mark-Simulacrum
Do not consider repeated lifetime params for elision. Fixes https://github.com/rust-lang/rust/issues/103330
Diffstat (limited to 'src')
| -rw-r--r-- | src/test/ui/lifetimes/lifetime-elision-return-type-requires-explicit-lifetime.rs | 6 | ||||
| -rw-r--r-- | src/test/ui/lifetimes/lifetime-elision-return-type-requires-explicit-lifetime.stderr | 14 |
2 files changed, 19 insertions, 1 deletions
diff --git a/src/test/ui/lifetimes/lifetime-elision-return-type-requires-explicit-lifetime.rs b/src/test/ui/lifetimes/lifetime-elision-return-type-requires-explicit-lifetime.rs index 7a2eba518fe..d0a8fe795ef 100644 --- a/src/test/ui/lifetimes/lifetime-elision-return-type-requires-explicit-lifetime.rs +++ b/src/test/ui/lifetimes/lifetime-elision-return-type-requires-explicit-lifetime.rs @@ -42,4 +42,10 @@ fn k<'a, T: WithLifetime<'a>>(_x: T::Output) -> &isize { panic!() } +fn l<'a>(_: &'a str, _: &'a str) -> &str { "" } +//~^ ERROR missing lifetime specifier + +// This is ok because both `'a` are for the same parameter. +fn m<'a>(_: &'a Foo<'a>) -> &str { "" } + fn main() {} diff --git a/src/test/ui/lifetimes/lifetime-elision-return-type-requires-explicit-lifetime.stderr b/src/test/ui/lifetimes/lifetime-elision-return-type-requires-explicit-lifetime.stderr index d0775487955..5eee953ef18 100644 --- a/src/test/ui/lifetimes/lifetime-elision-return-type-requires-explicit-lifetime.stderr +++ b/src/test/ui/lifetimes/lifetime-elision-return-type-requires-explicit-lifetime.stderr @@ -70,6 +70,18 @@ help: consider using the `'a` lifetime LL | fn k<'a, T: WithLifetime<'a>>(_x: T::Output) -> &'a isize { | ++ -error: aborting due to 6 previous errors +error[E0106]: missing lifetime specifier + --> $DIR/lifetime-elision-return-type-requires-explicit-lifetime.rs:45:37 + | +LL | fn l<'a>(_: &'a str, _: &'a str) -> &str { "" } + | ------- ------- ^ expected named lifetime parameter + | + = help: this function's return type contains a borrowed value with an elided lifetime, but the lifetime cannot be derived from the arguments +help: consider using the `'a` lifetime + | +LL | fn l<'a>(_: &'a str, _: &'a str) -> &'a str { "" } + | ++ + +error: aborting due to 7 previous errors For more information about this error, try `rustc --explain E0106`. |
