Skip to content

redundant-imports lint does not work in macro-defined modules #158400

Description

@mkroening

Similar to #158371, I found that the redundant_imports lint does not work in modules that are defined in any macros. This is especially relevant since this also affects cfg_if! and cfg_select! which are often used to define modules (e.g., #158252).

Interestingly, other lints seem to work just fine, so this seems specific to the work that redundant_imports needs to do to analyze imports.

Reproduction

lib.rs:

#![deny(redundant_imports)]

#[cfg(true)]
pub mod foo; // works

macro_rules! identity {
    ($($tt:tt)*) => {
        $($tt)*
    };
}

identity! {
    // pub mod foo; // does not work
}

cfg_if::cfg_if! {
    if #[cfg(true)] {
        // pub mod foo; //does not work
    }
}

cfg_select! {
    _ => {
        // pub mod foo; // does not work
    }
}

foo.rs:

use std::option::Option::None;
pub fn foo() -> Option<i32> { None }

Command:

cargo check

Activity

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

    C-bugCategory: This is a bug.needs-triageThis issue may need triage. Remove it if it has been sufficiently triaged.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions