-
Notifications
You must be signed in to change notification settings - Fork 13.4k
in which we suggest anonymizing single-use lifetimes in paths #62453
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Conversation
Niko Matsakis commented in October 2017 (rust-lang#44752 (comment)) that these should lint. They do! Let's reify that in the tests now (and then we'll see a nice diff when we add suggestions in a future commit).
| | ||
LL | fn left<'x, 'y>(foo: Double<'x, 'y>) -> &'x u32 { foo.f } | ||
| ^^ this lifetime... -- ...is used only here | ||
help: elide the single-use lifetime |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you perhaps add a rustfix
test? I assume this suggestion can be automatically applied, yes?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think it can't due to the multiple ambiguity span bug, unless that has been fixed since Berlin.
(Some(decl_span), Some(use_span), None) => { | ||
// if both declaration and use deletion spans start at the same | ||
// place ("start at" because the latter includes trailing | ||
// whitespace), then this is an in-band lifetime |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This sounds like a bug in the ast's span, right? No need to fix now but add a FIXME
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
No, that's not referring to an AST span; it's referring to a span that we synthesized earlier in the function (the 'a
with the trailing space in &'a Foo
).
@bors r+ rollup |
📌 Commit acc4e56 has been approved by |
in which we suggest anonymizing single-use lifetimes in paths Following @nikomatsakis's [October 2017 comment](rust-lang#44752 (comment)).  r? @estebank cc @eddyb (you were saying something about running single-use-lifetimes against the tree the other week?)
Rollup of 12 pull requests Successful merges: - #61535 (Coherence test when a generic type param has a default value from an associated type) - #62274 (rustc_mir: follow FalseUnwind's real_target edge in qualify_consts.) - #62431 (Add messages to `Option`'s and `Result`'s `must_use` annotation for `is_*`) - #62453 (in which we suggest anonymizing single-use lifetimes in paths ) - #62568 (Replace unsafe_destructor_blind_to_params with may_dangle) - #62578 (Add test for #49919) - #62595 (Document that the crate keyword refers to the project root) - #62599 (move mem::uninitialized deprecation back by 1 release, to 1.39) - #62605 (Emit dropped unemitted errors to aid in ICE debugging) - #62607 (Correctly break out of recovery loop) - #62608 (`async unsafe fn` tests) - #62623 (downgrade indirect_structural_match lint to allow) Failed merges: r? @ghost
Following @nikomatsakis's October 2017 comment.
r? @estebank
cc @eddyb (you were saying something about running single-use-lifetimes against the tree the other week?)