"Unused equals expression" inspection: highlight whole expression with yellow background
^KT-41615 Fixed
This commit is contained in:
committed by
Vladimir Dolzhenko
parent
b81ec2c8f0
commit
343010a833
@@ -1454,7 +1454,7 @@
|
|||||||
|
|
||||||
<localInspection implementationClass="org.jetbrains.kotlin.idea.inspections.UnusedEqualsInspection"
|
<localInspection implementationClass="org.jetbrains.kotlin.idea.inspections.UnusedEqualsInspection"
|
||||||
groupPath="Kotlin"
|
groupPath="Kotlin"
|
||||||
groupName="Redundant constructs"
|
groupName="Probable bugs"
|
||||||
enabledByDefault="true"
|
enabledByDefault="true"
|
||||||
level="WARNING"
|
level="WARNING"
|
||||||
language="kotlin"
|
language="kotlin"
|
||||||
|
|||||||
@@ -5,7 +5,6 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.idea.inspections
|
package org.jetbrains.kotlin.idea.inspections
|
||||||
|
|
||||||
import com.intellij.codeInspection.ProblemHighlightType
|
|
||||||
import com.intellij.codeInspection.ProblemsHolder
|
import com.intellij.codeInspection.ProblemsHolder
|
||||||
import com.intellij.psi.PsiElementVisitor
|
import com.intellij.psi.PsiElementVisitor
|
||||||
import org.jetbrains.kotlin.idea.KotlinBundle
|
import org.jetbrains.kotlin.idea.KotlinBundle
|
||||||
@@ -21,15 +20,10 @@ class UnusedEqualsInspection : AbstractKotlinInspection() {
|
|||||||
|
|
||||||
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean): PsiElementVisitor {
|
override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean): PsiElementVisitor {
|
||||||
return object : KtVisitorVoid() {
|
return object : KtVisitorVoid() {
|
||||||
private fun reportIfNotUsedAsExpression(expression: KtExpression, target: KtExpression) {
|
private fun reportIfNotUsedAsExpression(expression: KtExpression) {
|
||||||
val context = expression.analyze()
|
val context = expression.analyze()
|
||||||
if (!expression.isUsedAsExpression(context)) {
|
if (!expression.isUsedAsExpression(context)) {
|
||||||
holder.registerProblem(
|
holder.registerProblem(expression, KotlinBundle.message("unused.equals.expression"))
|
||||||
target,
|
|
||||||
KotlinBundle.message("unused.equals.expression"),
|
|
||||||
ProblemHighlightType.LIKE_UNUSED_SYMBOL
|
|
||||||
)
|
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -38,7 +32,7 @@ class UnusedEqualsInspection : AbstractKotlinInspection() {
|
|||||||
if (expression.operationToken == KtTokens.EQEQ &&
|
if (expression.operationToken == KtTokens.EQEQ &&
|
||||||
(expression.parent is KtBlockExpression || expression.parent.parent is KtIfExpression)
|
(expression.parent is KtBlockExpression || expression.parent.parent is KtIfExpression)
|
||||||
) {
|
) {
|
||||||
reportIfNotUsedAsExpression(expression, expression.operationReference)
|
reportIfNotUsedAsExpression(expression)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -49,7 +43,7 @@ class UnusedEqualsInspection : AbstractKotlinInspection() {
|
|||||||
if (calleeExpression.getReferencedNameAsName() != OperatorNameConventions.EQUALS) return
|
if (calleeExpression.getReferencedNameAsName() != OperatorNameConventions.EQUALS) return
|
||||||
|
|
||||||
if (!expression.isAnyEquals()) return
|
if (!expression.isAnyEquals()) return
|
||||||
reportIfNotUsedAsExpression(expression.getQualifiedExpressionForSelectorOrThis(), calleeExpression)
|
reportIfNotUsedAsExpression(expression.getQualifiedExpressionForSelectorOrThis())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,8 +4,11 @@
|
|||||||
<line>4</line>
|
<line>4</line>
|
||||||
<module>light_idea_test_case</module>
|
<module>light_idea_test_case</module>
|
||||||
<entry_point TYPE="file" FQNAME="simple.kt"/>
|
<entry_point TYPE="file" FQNAME="simple.kt"/>
|
||||||
<problem_class severity="WARNING" attribute_key="NOT_USED_ELEMENT_ATTRIBUTES">Unused equals expression</problem_class>
|
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Unused equals expression</problem_class>
|
||||||
<description>Unused equals expression</description>
|
<description>Unused equals expression</description>
|
||||||
|
<highlighted_element>a == b</highlighted_element>
|
||||||
|
<offset>4</offset>
|
||||||
|
<length>6</length>
|
||||||
</problem>
|
</problem>
|
||||||
|
|
||||||
<problem>
|
<problem>
|
||||||
@@ -13,8 +16,11 @@
|
|||||||
<line>5</line>
|
<line>5</line>
|
||||||
<module>light_idea_test_case</module>
|
<module>light_idea_test_case</module>
|
||||||
<entry_point TYPE="file" FQNAME="simple.kt"/>
|
<entry_point TYPE="file" FQNAME="simple.kt"/>
|
||||||
<problem_class severity="WARNING" attribute_key="NOT_USED_ELEMENT_ATTRIBUTES">Unused equals expression</problem_class>
|
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Unused equals expression</problem_class>
|
||||||
<description>Unused equals expression</description>
|
<description>Unused equals expression</description>
|
||||||
|
<highlighted_element>a == 1</highlighted_element>
|
||||||
|
<offset>4</offset>
|
||||||
|
<length>6</length>
|
||||||
</problem>
|
</problem>
|
||||||
|
|
||||||
<problem>
|
<problem>
|
||||||
@@ -22,8 +28,11 @@
|
|||||||
<line>8</line>
|
<line>8</line>
|
||||||
<module>light_idea_test_case</module>
|
<module>light_idea_test_case</module>
|
||||||
<entry_point TYPE="file" FQNAME="simple.kt"/>
|
<entry_point TYPE="file" FQNAME="simple.kt"/>
|
||||||
<problem_class severity="WARNING" attribute_key="NOT_USED_ELEMENT_ATTRIBUTES">Unused equals expression</problem_class>
|
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Unused equals expression</problem_class>
|
||||||
<description>Unused equals expression</description>
|
<description>Unused equals expression</description>
|
||||||
|
<highlighted_element>a == b</highlighted_element>
|
||||||
|
<offset>8</offset>
|
||||||
|
<length>6</length>
|
||||||
</problem>
|
</problem>
|
||||||
|
|
||||||
<problem>
|
<problem>
|
||||||
@@ -31,8 +40,11 @@
|
|||||||
<line>13</line>
|
<line>13</line>
|
||||||
<module>light_idea_test_case</module>
|
<module>light_idea_test_case</module>
|
||||||
<entry_point TYPE="file" FQNAME="simple.kt"/>
|
<entry_point TYPE="file" FQNAME="simple.kt"/>
|
||||||
<problem_class severity="WARNING" attribute_key="NOT_USED_ELEMENT_ATTRIBUTES">Unused equals expression</problem_class>
|
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Unused equals expression</problem_class>
|
||||||
<description>Unused equals expression</description>
|
<description>Unused equals expression</description>
|
||||||
|
<highlighted_element>a == b</highlighted_element>
|
||||||
|
<offset>8</offset>
|
||||||
|
<length>6</length>
|
||||||
</problem>
|
</problem>
|
||||||
|
|
||||||
<problem>
|
<problem>
|
||||||
@@ -40,8 +52,11 @@
|
|||||||
<line>14</line>
|
<line>14</line>
|
||||||
<module>light_idea_test_case</module>
|
<module>light_idea_test_case</module>
|
||||||
<entry_point TYPE="file" FQNAME="simple.kt"/>
|
<entry_point TYPE="file" FQNAME="simple.kt"/>
|
||||||
<problem_class severity="WARNING" attribute_key="NOT_USED_ELEMENT_ATTRIBUTES">Unused equals expression</problem_class>
|
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Unused equals expression</problem_class>
|
||||||
<description>Unused equals expression</description>
|
<description>Unused equals expression</description>
|
||||||
|
<highlighted_element>a == b</highlighted_element>
|
||||||
|
<offset>8</offset>
|
||||||
|
<length>6</length>
|
||||||
</problem>
|
</problem>
|
||||||
|
|
||||||
<problem>
|
<problem>
|
||||||
@@ -49,8 +64,11 @@
|
|||||||
<line>18</line>
|
<line>18</line>
|
||||||
<module>light_idea_test_case</module>
|
<module>light_idea_test_case</module>
|
||||||
<entry_point TYPE="file" FQNAME="simple.kt"/>
|
<entry_point TYPE="file" FQNAME="simple.kt"/>
|
||||||
<problem_class severity="WARNING" attribute_key="NOT_USED_ELEMENT_ATTRIBUTES">Unused equals expression</problem_class>
|
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Unused equals expression</problem_class>
|
||||||
<description>Unused equals expression</description>
|
<description>Unused equals expression</description>
|
||||||
|
<highlighted_element>a == b</highlighted_element>
|
||||||
|
<offset>4</offset>
|
||||||
|
<length>6</length>
|
||||||
</problem>
|
</problem>
|
||||||
|
|
||||||
<problem>
|
<problem>
|
||||||
@@ -58,8 +76,11 @@
|
|||||||
<line>38</line>
|
<line>38</line>
|
||||||
<module>light_idea_test_case</module>
|
<module>light_idea_test_case</module>
|
||||||
<entry_point TYPE="file" FQNAME="simple.kt"/>
|
<entry_point TYPE="file" FQNAME="simple.kt"/>
|
||||||
<problem_class severity="WARNING" attribute_key="NOT_USED_ELEMENT_ATTRIBUTES">Unused equals expression</problem_class>
|
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Unused equals expression</problem_class>
|
||||||
<description>Unused equals expression</description>
|
<description>Unused equals expression</description>
|
||||||
|
<highlighted_element>a == 1</highlighted_element>
|
||||||
|
<offset>12</offset>
|
||||||
|
<length>6</length>
|
||||||
</problem>
|
</problem>
|
||||||
|
|
||||||
<problem>
|
<problem>
|
||||||
@@ -67,8 +88,11 @@
|
|||||||
<line>61</line>
|
<line>61</line>
|
||||||
<module>light_idea_test_case</module>
|
<module>light_idea_test_case</module>
|
||||||
<entry_point TYPE="file" FQNAME="temp:///src/test.kt" />
|
<entry_point TYPE="file" FQNAME="temp:///src/test.kt" />
|
||||||
<problem_class severity="WARNING" attribute_key="NOT_USED_ELEMENT_ATTRIBUTES">Unused equals expression</problem_class>
|
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Unused equals expression</problem_class>
|
||||||
<description>Unused equals expression</description>
|
<description>Unused equals expression</description>
|
||||||
|
<highlighted_element>a == -1</highlighted_element>
|
||||||
|
<offset>28</offset>
|
||||||
|
<length>7</length>
|
||||||
</problem>
|
</problem>
|
||||||
|
|
||||||
<problem>
|
<problem>
|
||||||
@@ -76,8 +100,11 @@
|
|||||||
<line>61</line>
|
<line>61</line>
|
||||||
<module>light_idea_test_case</module>
|
<module>light_idea_test_case</module>
|
||||||
<entry_point TYPE="file" FQNAME="temp:///src/test.kt" />
|
<entry_point TYPE="file" FQNAME="temp:///src/test.kt" />
|
||||||
<problem_class severity="WARNING" attribute_key="NOT_USED_ELEMENT_ATTRIBUTES">Unused equals expression</problem_class>
|
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Unused equals expression</problem_class>
|
||||||
<description>Unused equals expression</description>
|
<description>Unused equals expression</description>
|
||||||
|
<highlighted_element>a == -1</highlighted_element>
|
||||||
|
<offset>28</offset>
|
||||||
|
<length>7</length>
|
||||||
</problem>
|
</problem>
|
||||||
|
|
||||||
<problem>
|
<problem>
|
||||||
@@ -85,8 +112,11 @@
|
|||||||
<line>71</line>
|
<line>71</line>
|
||||||
<module>light_idea_test_case</module>
|
<module>light_idea_test_case</module>
|
||||||
<entry_point TYPE="file" FQNAME="temp:///src/test.kt" />
|
<entry_point TYPE="file" FQNAME="temp:///src/test.kt" />
|
||||||
<problem_class severity="WARNING" attribute_key="NOT_USED_ELEMENT_ATTRIBUTES">Unused equals expression</problem_class>
|
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Unused equals expression</problem_class>
|
||||||
<description>Unused equals expression</description>
|
<description>Unused equals expression</description>
|
||||||
|
<highlighted_element>it == null</highlighted_element>
|
||||||
|
<offset>34</offset>
|
||||||
|
<length>10</length>
|
||||||
</problem>
|
</problem>
|
||||||
|
|
||||||
<problem>
|
<problem>
|
||||||
@@ -94,8 +124,11 @@
|
|||||||
<line>75</line>
|
<line>75</line>
|
||||||
<module>light_idea_test_case</module>
|
<module>light_idea_test_case</module>
|
||||||
<entry_point TYPE="file" FQNAME="temp:///src/test.kt" />
|
<entry_point TYPE="file" FQNAME="temp:///src/test.kt" />
|
||||||
<problem_class severity="WARNING" attribute_key="NOT_USED_ELEMENT_ATTRIBUTES">Unused equals expression</problem_class>
|
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Unused equals expression</problem_class>
|
||||||
<description>Unused equals expression</description>
|
<description>Unused equals expression</description>
|
||||||
|
<highlighted_element>it.equals(null)</highlighted_element>
|
||||||
|
<offset>34</offset>
|
||||||
|
<length>15</length>
|
||||||
</problem>
|
</problem>
|
||||||
|
|
||||||
<problem>
|
<problem>
|
||||||
@@ -103,7 +136,10 @@
|
|||||||
<line>81</line>
|
<line>81</line>
|
||||||
<module>light_idea_test_case</module>
|
<module>light_idea_test_case</module>
|
||||||
<entry_point TYPE="file" FQNAME="temp:///src/test.kt" />
|
<entry_point TYPE="file" FQNAME="temp:///src/test.kt" />
|
||||||
<problem_class severity="WARNING" attribute_key="NOT_USED_ELEMENT_ATTRIBUTES">Unused equals expression</problem_class>
|
<problem_class severity="WARNING" attribute_key="WARNING_ATTRIBUTES">Unused equals expression</problem_class>
|
||||||
<description>Unused equals expression</description>
|
<description>Unused equals expression</description>
|
||||||
|
<highlighted_element>equals(null)</highlighted_element>
|
||||||
|
<offset>48</offset>
|
||||||
|
<length>12</length>
|
||||||
</problem>
|
</problem>
|
||||||
</problems>
|
</problems>
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
org.jetbrains.kotlin.idea.inspections.UnusedEqualsInspection
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
// FIX: none
|
||||||
|
fun foo(a: Int, b: Int) {
|
||||||
|
<caret>a.equals(b)
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
// FIX: none
|
||||||
|
fun foo(a: Int, b: Int) {
|
||||||
|
a.equals(b)<caret>
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
// FIX: none
|
||||||
|
fun foo(a: Int, b: Int) {
|
||||||
|
<caret>a == b
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
// FIX: none
|
||||||
|
fun foo(a: Int, b: Int) {
|
||||||
|
a == b<caret>
|
||||||
|
}
|
||||||
+33
@@ -13984,6 +13984,39 @@ public class LocalInspectionTestGenerated extends AbstractLocalInspectionTest {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("idea/testData/inspectionsLocal/unusedEquals")
|
||||||
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
public static class UnusedEquals extends AbstractLocalInspectionTest {
|
||||||
|
private void runTest(String testDataFilePath) throws Exception {
|
||||||
|
KotlinTestUtils.runTest(this::doTest, this, testDataFilePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void testAllFilesPresentInUnusedEquals() throws Exception {
|
||||||
|
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("idea/testData/inspectionsLocal/unusedEquals"), Pattern.compile("^([\\w\\-_]+)\\.(kt|kts)$"), null, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("equals.kt")
|
||||||
|
public void testEquals() throws Exception {
|
||||||
|
runTest("idea/testData/inspectionsLocal/unusedEquals/equals.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("equals2.kt")
|
||||||
|
public void testEquals2() throws Exception {
|
||||||
|
runTest("idea/testData/inspectionsLocal/unusedEquals/equals2.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("simple.kt")
|
||||||
|
public void testSimple() throws Exception {
|
||||||
|
runTest("idea/testData/inspectionsLocal/unusedEquals/simple.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("simple2.kt")
|
||||||
|
public void testSimple2() throws Exception {
|
||||||
|
runTest("idea/testData/inspectionsLocal/unusedEquals/simple2.kt");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("idea/testData/inspectionsLocal/unusedLambdaExpressionBody")
|
@TestMetadata("idea/testData/inspectionsLocal/unusedLambdaExpressionBody")
|
||||||
@TestDataPath("$PROJECT_ROOT")
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
@RunWith(JUnit3RunnerWithInners.class)
|
@RunWith(JUnit3RunnerWithInners.class)
|
||||||
|
|||||||
Reference in New Issue
Block a user