-
Notifications
You must be signed in to change notification settings - Fork 12.7k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
in which we suggest anonymizing single-use lifetimes in paths #62453
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)). ![path_anon_suggest](https://user-images.githubusercontent.com/1076988/60761598-e2619180-a000-11e9-9144-1bdf8eb848e3.png) 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?)