Rollup merge of #120148 - trevyn:issue-117965, r=cjgillot
`single_use_lifetimes`: Don't suggest deleting lifetimes with bounds Closes #117965 ``` 9 | pub fn get<'b: 'a>(&'b self) -> &'a str { | ^^ -- ...is used only here | | | this lifetime... ``` In this example, I think the `&'b self` can be replaced with the bound itself, yielding `&'a self`, but this would require a deeper refactor. Happy to do as a follow-on PR if desired.
This commit is contained in:
commit
b7c2ba71c8
@ -2567,8 +2567,9 @@ impl<'a: 'ast, 'ast, 'tcx> LateResolutionVisitor<'a, '_, 'ast, 'tcx> {
|
||||
debug!(?param.ident, ?param.ident.span, ?use_span);
|
||||
|
||||
let elidable = matches!(use_ctxt, LifetimeCtxt::Ref);
|
||||
let deletion_span =
|
||||
if param.bounds.is_empty() { deletion_span() } else { None };
|
||||
|
||||
let deletion_span = deletion_span();
|
||||
self.r.lint_buffer.buffer_lint_with_diagnostic(
|
||||
lint::builtin::SINGLE_USE_LIFETIMES,
|
||||
param.id,
|
||||
|
18
tests/ui/single-use-lifetime/issue-117965.rs
Normal file
18
tests/ui/single-use-lifetime/issue-117965.rs
Normal file
@ -0,0 +1,18 @@
|
||||
#![deny(single_use_lifetimes)]
|
||||
|
||||
pub enum Data<'a> {
|
||||
Borrowed(&'a str),
|
||||
Owned(String),
|
||||
}
|
||||
|
||||
impl<'a> Data<'a> {
|
||||
pub fn get<'b: 'a>(&'b self) -> &'a str {
|
||||
//~^ ERROR lifetime parameter `'b` only used once
|
||||
match &self {
|
||||
Self::Borrowed(val) => val,
|
||||
Self::Owned(val) => &val,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {}
|
16
tests/ui/single-use-lifetime/issue-117965.stderr
Normal file
16
tests/ui/single-use-lifetime/issue-117965.stderr
Normal file
@ -0,0 +1,16 @@
|
||||
error: lifetime parameter `'b` only used once
|
||||
--> $DIR/issue-117965.rs:9:16
|
||||
|
|
||||
LL | pub fn get<'b: 'a>(&'b self) -> &'a str {
|
||||
| ^^ -- ...is used only here
|
||||
| |
|
||||
| this lifetime...
|
||||
|
|
||||
note: the lint level is defined here
|
||||
--> $DIR/issue-117965.rs:1:9
|
||||
|
|
||||
LL | #![deny(single_use_lifetimes)]
|
||||
| ^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
|
Loading…
x
Reference in New Issue
Block a user