rust-lang / rust-lang/rust-clippy
Add a lint for items used before definition,inside expression block
Open
Nobody has claimed this yet.
A-lint
E-medium
L-style
T-AST
- Dominant language
- Rust
- Stars
- 13.5k
- Forks
- 2.2k
- Avg merge
- 2d 10h
- Merged PRs (30d)
- 32
Description
I would like to have a lint like the items_after_statements lint,but which only triggers if an item defined inside an expression block is used before it's defined.
For example,it would trigger with this code:
fn hello() {
println!("First statement");
let hello: Bar = (0..10).collect();
type Bar = Vec<u32>;
}
But it would not trigger with this code:
fn hello() {
println!("First statement");
type Bar = Vec<u32>;
let hello: Bar = (0..10).collect();
}
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by locating Clippy's existing items_after_statements lint and its tests, then inspect how expression blocks and item definitions are represented. The change is done when a lint reports an item used before its definition only within an expression block, while allowing the reversed order shown in the issue.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- tooling
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 32/100