Skip to content

unused_qualifications lint confused by pub use Foo::* #138770

Open
@nnethercote

Description

@nnethercote

I tried enabling unused_qualifications for the compiler itself. It mostly works, but gets confused by pub use Foo::* forms.

Here's an example from compiler/rustc_ast/src/token.rs, which has this:

pub use LitKind::*;

followed by this:

pub enum LitKind { 
    Bool, // AST only, must never appear in a `Token`
    Byte,
    Char,
    Integer, // e.g. `1`, `1u8`, `1f32`
    Float,   // e.g. `1.`, `1.0`, `1e3f32`
    Str,
    StrRaw(u8), // raw string delimited by `n` hash symbols
    ByteStr,
    ByteStrRaw(u8), // raw byte string delimited by `n` hash symbols
    CStr,
    CStrRaw(u8),
    Err(ErrorGuaranteed),
}   

It emits a bogus error for every variant of the enum. Here's one example:

error: unnecessary qualification
   --> compiler/rustc_ast/src/token.rs:160:10
    |
160 |   pub enum LitKind {
    |  __________^
161 | |     Bool, // AST only, must never appear in a `Token`
162 | |     Byte,
163 | |     Char,
164 | |     Integer, // e.g. `1`, `1u8`, `1f32`
    | |___________^
    |
help: remove the unnecessary path segments
    |
160 - pub enum LitKind {
161 -     Bool, // AST only, must never appear in a `Token`
162 -     Byte,
163 -     Char,
164 -     Integer, // e.g. `1`, `1u8`, `1f32`
160 + pub enum Integer, // e.g. `1`, `1u8`, `1f32`
    |

There is no qualification present, and the help suggestion is nonsense.

I was unable to reproduce this behaviour in a standalone test case.

Activity

added
needs-triageThis issue may need triage. Remove it if it has been sufficiently triaged.
on Mar 21, 2025
added
A-lintsArea: Lints (warnings about flaws in source code) such as unused_mut.
T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.
on Mar 21, 2025
removed
needs-triageThis issue may need triage. Remove it if it has been sufficiently triaged.
on Apr 30, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    A-lintsArea: Lints (warnings about flaws in source code) such as unused_mut.C-bugCategory: This is a bug.L-unused_qualificationsLint: unused_qualificationsT-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Development

      No branches or pull requests

        Participants

        @nnethercote@lolbinarycat@jieyouxu@rustbot

        Issue actions

          `unused_qualifications` lint confused by `pub use Foo::*` · Issue #138770 · rust-lang/rust