JavaMapForEachInspection: do not report when lambda parameter is destructuring declaration
#KT-34511 Fixed
This commit is contained in:
committed by
Mikhail Glukhikh
parent
8857827dce
commit
afc680d5c9
@@ -32,7 +32,8 @@ class JavaMapForEachInspection : AbstractApplicabilityBasedInspection<KtDotQuali
|
||||
if (calleeExpression.text != "forEach") return false
|
||||
|
||||
val lambda = callExpression.lambda() ?: return false
|
||||
if (lambda.valueParameters.size != 2) return false
|
||||
val lambdaParameters = lambda.valueParameters
|
||||
if (lambdaParameters.size != 2 || lambdaParameters.any { it.destructuringDeclaration != null }) return false
|
||||
|
||||
val context = element.analyze(BodyResolveMode.PARTIAL)
|
||||
if (!element.receiverExpression.getType(context).isMap(DefaultBuiltIns.Instance)) return false
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
// PROBLEM: none
|
||||
// RUNTIME_WITH_FULL_JDK
|
||||
fun test(map: Map<Int, String>) {
|
||||
val mapOfPairs = mapOf<Pair<Int, Int>, Int>()
|
||||
mapOfPairs.<caret>forEach { (first, second), value ->
|
||||
println(first)
|
||||
println(second)
|
||||
println(value)
|
||||
}
|
||||
}
|
||||
+5
@@ -5066,6 +5066,11 @@ public class LocalInspectionTestGenerated extends AbstractLocalInspectionTest {
|
||||
KotlinTestUtils.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("idea/testData/inspectionsLocal/javaMapForEach"), Pattern.compile("^([\\w\\-_]+)\\.(kt|kts)$"), null, true);
|
||||
}
|
||||
|
||||
@TestMetadata("destructuringDeclaration.kt")
|
||||
public void testDestructuringDeclaration() throws Exception {
|
||||
runTest("idea/testData/inspectionsLocal/javaMapForEach/destructuringDeclaration.kt");
|
||||
}
|
||||
|
||||
@TestMetadata("java.kt")
|
||||
public void testJava() throws Exception {
|
||||
runTest("idea/testData/inspectionsLocal/javaMapForEach/java.kt");
|
||||
|
||||
Reference in New Issue
Block a user