-
Notifications
You must be signed in to change notification settings - Fork 13.5k
Split elided_lifetime_in_paths into finer-grained lints #120808
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
Open
shepmaster
wants to merge
7
commits into
rust-lang:master
Choose a base branch
from
shepmaster:split-elided-lifetimes-in-paths
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
+558
−240
Open
Changes from 1 commit
Commits
Show all changes
7 commits
Select commit
Hold shift + click to select a range
79216b6
Test elided-lifetimes-in-paths outside of function signatures
shepmaster 2089a29
Support trailing comma in `add_lint_group!`
shepmaster 662b848
Add a helper to rename lint groups
shepmaster 640abd7
Handle documenting a lint that was renamed to a group
shepmaster 1bfae6e
Extend HIR to track the source of a type
shepmaster 788db3e
Add new HIR implementations of hidden lifetimes in paths lints
shepmaster b0e622e
Replace `elided_lifetime_in_paths` with multiple renamed lints
shepmaster File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,57 @@ | ||
#![deny(elided_lifetimes_in_paths)] | ||
|
||
// Most of the time, we focus on elided lifetimes in function | ||
// signatures, but they can also appear in other places! The original | ||
// version of this lint handled all these cases in one location, but | ||
// it's desired that the one lint actually be multiple. | ||
|
||
struct ContainsLifetime<'a>(&'a u8); | ||
|
||
impl<'a> ContainsLifetime<'a> { | ||
fn use_it() {} | ||
} | ||
|
||
struct ContainsLifetimeAndType<'a, T>(&'a T); | ||
|
||
impl<'a, T> ContainsLifetimeAndType<'a, T> { | ||
fn use_it() {} | ||
} | ||
|
||
fn use_via_turbofish<T>() {} | ||
|
||
trait UseViaTrait { | ||
fn use_it() {} | ||
} | ||
|
||
impl UseViaTrait for ContainsLifetime<'_> {} | ||
|
||
trait TraitWithLifetime<'a> { | ||
fn use_it() {} | ||
} | ||
|
||
impl<'a> TraitWithLifetime<'a> for u8 {} | ||
|
||
// ========== | ||
|
||
static USE_VIA_STATIC: ContainsLifetime = ContainsLifetime(&42); | ||
//~^ ERROR hidden lifetime parameters | ||
|
||
fn main() { | ||
use_via_turbofish::<ContainsLifetime>(); | ||
//~^ ERROR hidden lifetime parameters | ||
|
||
let _use_via_binding: ContainsLifetime; | ||
//~^ ERROR hidden lifetime parameters | ||
|
||
<ContainsLifetime as UseViaTrait>::use_it(); | ||
//~^ ERROR hidden lifetime parameters | ||
|
||
<ContainsLifetime>::use_it(); | ||
//~^ ERROR hidden lifetime parameters | ||
|
||
ContainsLifetime::use_it(); | ||
|
||
ContainsLifetimeAndType::<u8>::use_it(); | ||
|
||
<u8 as TraitWithLifetime>::use_it(); | ||
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
error: hidden lifetime parameters in types are deprecated | ||
--> $DIR/elided-lifetimes-in-type-paths.rs:36:24 | ||
| | ||
LL | static USE_VIA_STATIC: ContainsLifetime = ContainsLifetime(&42); | ||
| ^^^^^^^^^^^^^^^^ expected lifetime parameter | ||
| | ||
note: the lint level is defined here | ||
--> $DIR/elided-lifetimes-in-type-paths.rs:1:9 | ||
| | ||
LL | #![deny(elided_lifetimes_in_paths)] | ||
| ^^^^^^^^^^^^^^^^^^^^^^^^^ | ||
help: indicate the anonymous lifetime | ||
| | ||
LL | static USE_VIA_STATIC: ContainsLifetime<'_> = ContainsLifetime(&42); | ||
| ++++ | ||
|
||
error: hidden lifetime parameters in types are deprecated | ||
--> $DIR/elided-lifetimes-in-type-paths.rs:40:25 | ||
| | ||
LL | use_via_turbofish::<ContainsLifetime>(); | ||
| ^^^^^^^^^^^^^^^^ expected lifetime parameter | ||
| | ||
help: indicate the anonymous lifetime | ||
| | ||
LL | use_via_turbofish::<ContainsLifetime<'_>>(); | ||
| ++++ | ||
|
||
error: hidden lifetime parameters in types are deprecated | ||
--> $DIR/elided-lifetimes-in-type-paths.rs:43:27 | ||
| | ||
LL | let _use_via_binding: ContainsLifetime; | ||
| ^^^^^^^^^^^^^^^^ expected lifetime parameter | ||
| | ||
help: indicate the anonymous lifetime | ||
| | ||
LL | let _use_via_binding: ContainsLifetime<'_>; | ||
| ++++ | ||
|
||
error: hidden lifetime parameters in types are deprecated | ||
--> $DIR/elided-lifetimes-in-type-paths.rs:46:6 | ||
| | ||
LL | <ContainsLifetime as UseViaTrait>::use_it(); | ||
| ^^^^^^^^^^^^^^^^ expected lifetime parameter | ||
| | ||
help: indicate the anonymous lifetime | ||
| | ||
LL | <ContainsLifetime<'_> as UseViaTrait>::use_it(); | ||
| ++++ | ||
|
||
error: hidden lifetime parameters in types are deprecated | ||
--> $DIR/elided-lifetimes-in-type-paths.rs:49:6 | ||
| | ||
LL | <ContainsLifetime>::use_it(); | ||
| ^^^^^^^^^^^^^^^^ expected lifetime parameter | ||
| | ||
help: indicate the anonymous lifetime | ||
| | ||
LL | <ContainsLifetime<'_>>::use_it(); | ||
| ++++ | ||
|
||
error: aborting due to 5 previous errors | ||
|
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.
Nit (wording): maybe for clarity (I was reading this, and it wasn't immediately clear)