Skip to content
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

INSP: remove unused_qualifications lint from unused group, change level to WEAK WARNING #10762

Merged
merged 2 commits into from Jul 30, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion src/main/kotlin/org/rust/ide/inspections/lints/RsLint.kt
Expand Up @@ -32,7 +32,7 @@ sealed class RsLint(
object UnreachableCode : RsLint("unreachable_code")
object BareTraitObjects : RsLint("bare_trait_objects", listOf("rust_2018_idioms"))
object NonShorthandFieldPatterns : RsLint("non_shorthand_field_patterns")
object UnusedQualifications : RsLint("unused_qualifications", listOf("unused"))
object UnusedQualifications : RsLint("unused_qualifications")
object UnusedMustUse : RsLint("unused_must_use", listOf("unused"))
object RedundantSemicolons : RsLint("redundant_semicolons", listOf("unused"))
object UnusedLabels : RsLint("unused_labels", listOf("unused"))
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/META-INF/rust-core.xml
Expand Up @@ -701,7 +701,7 @@
key="inspection.rs.unused.import.display.name"/>

<localInspection language="Rust" groupPath="Rust" groupKey="lints"
enabledByDefault="true" level="WARNING"
enabledByDefault="true" level="WEAK WARNING"
implementationClass="org.rust.ide.inspections.lints.RsUnnecessaryQualificationsInspection"
key="inspection.rs.unnecessary.qualifications.display.name"/>

Expand Down
Expand Up @@ -28,7 +28,7 @@ class RsUnnecessaryQualificationsInspectionTest : RsInspectionsTestBase(RsUnnece
use bar::S;

fn foo() {
let _: <warning descr="Unnecessary qualification">bar::/*caret*/</warning>S;
let _: <weak_warning descr="Unnecessary qualification">bar::/*caret*/</weak_warning>S;
}
""", """
mod bar {
Expand All @@ -40,7 +40,7 @@ class RsUnnecessaryQualificationsInspectionTest : RsInspectionsTestBase(RsUnnece
fn foo() {
let _: /*caret*/S;
}
""")
""", checkWeakWarn = true)

fun `test multiple path necessary qualified`() = checkFixIsUnavailable("Remove unnecessary path prefix", """
mod bar {
Expand All @@ -52,7 +52,7 @@ class RsUnnecessaryQualificationsInspectionTest : RsInspectionsTestBase(RsUnnece
fn foo() {
let _: bar::baz::/*caret*/S;
}
""")
""", checkWeakWarn = true)

fun `test multiple segments whole path`() = checkFixByText("Remove unnecessary path prefix", """
mod bar {
Expand All @@ -64,7 +64,7 @@ class RsUnnecessaryQualificationsInspectionTest : RsInspectionsTestBase(RsUnnece
use bar::baz::S;

fn foo() {
let _: <warning descr="Unnecessary qualification">bar::baz::/*caret*/</warning>S;
let _: <weak_warning descr="Unnecessary qualification">bar::baz::/*caret*/</weak_warning>S;
}
""", """
mod bar {
Expand All @@ -78,7 +78,7 @@ class RsUnnecessaryQualificationsInspectionTest : RsInspectionsTestBase(RsUnnece
fn foo() {
let _: /*caret*/S;
}
""")
""", checkWeakWarn = true)

fun `test multiple segments partial path`() = checkFixByText("Remove unnecessary path prefix", """
mod bar {
Expand All @@ -90,7 +90,7 @@ class RsUnnecessaryQualificationsInspectionTest : RsInspectionsTestBase(RsUnnece
use bar::baz;

fn foo() {
let _: <warning descr="Unnecessary qualification">bar::/*caret*/</warning>baz::S;
let _: <weak_warning descr="Unnecessary qualification">bar::/*caret*/</weak_warning>baz::S;
}
""", """
mod bar {
Expand All @@ -104,7 +104,7 @@ class RsUnnecessaryQualificationsInspectionTest : RsInspectionsTestBase(RsUnnece
fn foo() {
let _: /*caret*/baz::S;
}
""")
""", checkWeakWarn = true)

fun `test associated method`() = checkFixByText("Remove unnecessary path prefix", """
mod bar {
Expand All @@ -117,7 +117,7 @@ class RsUnnecessaryQualificationsInspectionTest : RsInspectionsTestBase(RsUnnece
use bar::S;

fn foo() {
let _ = <warning descr="Unnecessary qualification">bar::/*caret*/</warning>S::new();
let _ = <weak_warning descr="Unnecessary qualification">bar::/*caret*/</weak_warning>S::new();
}
""", """
mod bar {
Expand All @@ -132,7 +132,7 @@ class RsUnnecessaryQualificationsInspectionTest : RsInspectionsTestBase(RsUnnece
fn foo() {
let _ = /*caret*/S::new();
}
""")
""", checkWeakWarn = true)

fun `test expression context with generics`() = checkFixByText("Remove unnecessary path prefix", """
mod bar {
Expand All @@ -145,7 +145,7 @@ class RsUnnecessaryQualificationsInspectionTest : RsInspectionsTestBase(RsUnnece
use bar::S;

fn foo() {
let _ = <warning descr="Unnecessary qualification">bar::/*caret*/</warning>S::<u32>::new(0);
let _ = <weak_warning descr="Unnecessary qualification">bar::/*caret*/</weak_warning>S::<u32>::new(0);
}
""", """
mod bar {
Expand All @@ -160,7 +160,7 @@ class RsUnnecessaryQualificationsInspectionTest : RsInspectionsTestBase(RsUnnece
fn foo() {
let _ = /*caret*/S::<u32>::new(0);
}
""")
""", checkWeakWarn = true)

fun `test crate prefix`() = checkFixByText("Remove unnecessary path prefix", """
mod bar {
Expand All @@ -170,7 +170,7 @@ class RsUnnecessaryQualificationsInspectionTest : RsInspectionsTestBase(RsUnnece
use bar::S;

fn foo() {
let _: <warning descr="Unnecessary qualification">crate::/*caret*/</warning>S;
let _: <weak_warning descr="Unnecessary qualification">crate::/*caret*/</weak_warning>S;
}
""", """
mod bar {
Expand All @@ -182,7 +182,7 @@ class RsUnnecessaryQualificationsInspectionTest : RsInspectionsTestBase(RsUnnece
fn foo() {
let _: /*caret*/S;
}
""")
""", checkWeakWarn = true)

@MockEdition(CargoWorkspace.Edition.EDITION_2015)
fun `test bare colon colon`() = checkFixByText("Remove unnecessary path prefix", """
Expand All @@ -193,7 +193,7 @@ class RsUnnecessaryQualificationsInspectionTest : RsInspectionsTestBase(RsUnnece
use bar::S;

fn foo() {
let _: <warning descr="Unnecessary qualification">::/*caret*/</warning>S;
let _: <weak_warning descr="Unnecessary qualification">::/*caret*/</weak_warning>S;
}
""", """
mod bar {
Expand All @@ -205,7 +205,7 @@ class RsUnnecessaryQualificationsInspectionTest : RsInspectionsTestBase(RsUnnece
fn foo() {
let _: /*caret*/S;
}
""")
""", checkWeakWarn = true)

@MockEdition(CargoWorkspace.Edition.EDITION_2015)
fun `test bare colon colon with nested path`() = checkFixByText("Remove unnecessary path prefix", """
Expand All @@ -216,7 +216,7 @@ class RsUnnecessaryQualificationsInspectionTest : RsInspectionsTestBase(RsUnnece
use bar::S;

fn foo() {
let _: <warning descr="Unnecessary qualification">::bar::/*caret*/</warning>S;
let _: <weak_warning descr="Unnecessary qualification">::bar::/*caret*/</weak_warning>S;
}
""", """
mod bar {
Expand All @@ -228,7 +228,7 @@ class RsUnnecessaryQualificationsInspectionTest : RsInspectionsTestBase(RsUnnece
fn foo() {
let _: /*caret*/S;
}
""")
""", checkWeakWarn = true)

@ProjectDescriptor(WithDependencyRustProjectDescriptor::class)
fun `test bare colon colon necessary qualification`() = checkFixIsUnavailableByFileTree("Remove unnecessary path prefix", """
Expand All @@ -247,7 +247,7 @@ class RsUnnecessaryQualificationsInspectionTest : RsInspectionsTestBase(RsUnnece
fn foo() {
let _: ::dep_lib::bar::/*caret*/S;
}
""")
""", checkWeakWarn = true)

fun `test spaces in path`() = checkFixByText("Remove unnecessary path prefix", """
mod bar {
Expand All @@ -257,7 +257,7 @@ class RsUnnecessaryQualificationsInspectionTest : RsInspectionsTestBase(RsUnnece
use bar::S;

fn foo() {
let _: <warning descr="Unnecessary qualification">bar :: /*caret*/</warning>S;
let _: <weak_warning descr="Unnecessary qualification">bar :: /*caret*/</weak_warning>S;
}
""", """
mod bar {
Expand All @@ -269,7 +269,7 @@ class RsUnnecessaryQualificationsInspectionTest : RsInspectionsTestBase(RsUnnece
fn foo() {
let _: /*caret*/S;
}
""")
""", checkWeakWarn = true)

fun `test comments in path`() = checkFixByText("Remove unnecessary path prefix", """
mod bar {
Expand All @@ -279,7 +279,7 @@ class RsUnnecessaryQualificationsInspectionTest : RsInspectionsTestBase(RsUnnece
use bar::S;

fn foo() {
let _: <warning descr="Unnecessary qualification">bar/*foo*/ :: /*bar*//*caret*/</warning>S;
let _: <weak_warning descr="Unnecessary qualification">bar/*foo*/ :: /*bar*//*caret*/</weak_warning>S;
}
""", """
mod bar {
Expand All @@ -291,7 +291,7 @@ class RsUnnecessaryQualificationsInspectionTest : RsInspectionsTestBase(RsUnnece
fn foo() {
let _: /*caret*/S;
}
""")
""", checkWeakWarn = true)

fun `test path in value namespace`() = checkFixByText("Remove unnecessary path prefix", """
enum Foo {
Expand All @@ -302,7 +302,7 @@ class RsUnnecessaryQualificationsInspectionTest : RsInspectionsTestBase(RsUnnece
use Foo::B;

fn foo() {
let _ = <warning descr="Unnecessary qualification">Foo::/*caret*/</warning>B;
let _ = <weak_warning descr="Unnecessary qualification">Foo::/*caret*/</weak_warning>B;
}
""", """
enum Foo {
Expand All @@ -315,7 +315,7 @@ class RsUnnecessaryQualificationsInspectionTest : RsInspectionsTestBase(RsUnnece
fn foo() {
let _ = /*caret*/B;
}
""")
""", checkWeakWarn = true)

fun `test path with type arguments 1`() = checkWarnings("""
enum Foo<T> {
Expand All @@ -341,7 +341,7 @@ class RsUnnecessaryQualificationsInspectionTest : RsInspectionsTestBase(RsUnnece
use bar::Foo;

fn foo() {
let _ = <warning descr="Unnecessary qualification">bar::/*caret*/</warning>Foo::<()>::B;
let _ = <weak_warning descr="Unnecessary qualification">bar::/*caret*/</weak_warning>Foo::<()>::B;
}
""", """
mod bar {
Expand All @@ -356,7 +356,7 @@ class RsUnnecessaryQualificationsInspectionTest : RsInspectionsTestBase(RsUnnece
fn foo() {
let _ = /*caret*/Foo::<()>::B;
}
""")
""", checkWeakWarn = true)

fun `test allow`() = checkWarnings("""
#![allow(unused_qualifications)]
Expand Down Expand Up @@ -385,4 +385,18 @@ class RsUnnecessaryQualificationsInspectionTest : RsInspectionsTestBase(RsUnnece
let _: <error descr="Unnecessary qualification">bar::/*caret*/</error>S;
}
""")

fun `test deny 'unused' does not make the unused_qualifications a hard error`() = checkWarnings("""
#![deny(unused)]

mod bar {
pub struct S;
}

use bar::S;

fn foo() {
let _: <weak_warning descr="Unnecessary qualification">bar::/*caret*/</weak_warning>S;
}
""")
}