rust-lang / rust-lang/rust-clippy

Add a lint for items used before definition,inside expression block

Open
#5,352 5 comments 2 reactions 0 assignees View on GitHub

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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.