diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/collections/SimplifiableCallInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/collections/SimplifiableCallInspection.kt index 4bc6eacca4b..7432bfb6739 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/collections/SimplifiableCallInspection.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/collections/SimplifiableCallInspection.kt @@ -21,8 +21,7 @@ import org.jetbrains.kotlin.types.typeUtil.builtIns class SimplifiableCallInspection : AbstractKotlinInspection() { override fun buildVisitor(holder: ProblemsHolder, isOnTheFly: Boolean) = - qualifiedExpressionVisitor(fun(expression) { - val callExpression = expression.selectorExpression as? KtCallExpression ?: return + callExpressionVisitor(fun(callExpression) { val calleeExpression = callExpression.calleeExpression ?: return val (conversion, resolvedCall) = callExpression.findConversionAndResolvedCall() ?: return if (!conversion.callChecker(resolvedCall)) return @@ -30,7 +29,7 @@ class SimplifiableCallInspection : AbstractKotlinInspection() { holder.registerProblem( calleeExpression, - "${conversion.fqName.shortName()} call could be simplified to $replacement", + "${conversion.shortName} call could be simplified to $replacement", ProblemHighlightType.GENERIC_ERROR_OR_WARNING, SimplifyCallFix(conversion, replacement) ) @@ -94,9 +93,9 @@ class SimplifiableCallInspection : AbstractKotlinInspection() { if (statement.operationToken != KtTokens.EXCLEQ && statement.operationToken != KtTokens.EXCLEQEQEQ) return null val left = statement.left ?: return null val right = statement.right ?: return null - if (left.isNameReferenceTo(lambdaParameterName) && right.isNull()) { - return "filterNotNull()" - } else if (right.isNameReferenceTo(lambdaParameterName) && left.isNull()) { + if (left.isNameReferenceTo(lambdaParameterName) && right.isNull() || + right.isNameReferenceTo(lambdaParameterName) && left.isNull() + ) { return "filterNotNull()" } } @@ -116,7 +115,7 @@ class SimplifiableCallInspection : AbstractKotlinInspection() { } private class SimplifyCallFix(val conversion: Conversion, val replacement: String) : LocalQuickFix { - override fun getName() = "Convert '${conversion.fqName.shortName()}' call to '$replacement'" + override fun getName() = "Convert '${conversion.shortName}' call to '$replacement'" override fun getFamilyName() = name diff --git a/idea/testData/inspectionsLocal/collections/simplifiableCall/filterIsInstanceReceiver.kt b/idea/testData/inspectionsLocal/collections/simplifiableCall/filterIsInstanceReceiver.kt new file mode 100644 index 00000000000..3297332b751 --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/simplifiableCall/filterIsInstanceReceiver.kt @@ -0,0 +1,4 @@ +// WITH_RUNTIME +fun List.test() { + filter { it is String } +} \ No newline at end of file diff --git a/idea/testData/inspectionsLocal/collections/simplifiableCall/filterIsInstanceReceiver.kt.after b/idea/testData/inspectionsLocal/collections/simplifiableCall/filterIsInstanceReceiver.kt.after new file mode 100644 index 00000000000..335ca2a8eb3 --- /dev/null +++ b/idea/testData/inspectionsLocal/collections/simplifiableCall/filterIsInstanceReceiver.kt.after @@ -0,0 +1,4 @@ +// WITH_RUNTIME +fun List.test() { + filterIsInstance() +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java index 7f30afbe67d..ab947762ffc 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/inspections/LocalInspectionTestGenerated.java @@ -1108,6 +1108,11 @@ public class LocalInspectionTestGenerated extends AbstractLocalInspectionTest { runTest("idea/testData/inspectionsLocal/collections/simplifiableCall/explicitLambdaParameter.kt"); } + @TestMetadata("filterIsInstanceReceiver.kt") + public void testFilterIsInstanceReceiver() throws Exception { + runTest("idea/testData/inspectionsLocal/collections/simplifiableCall/filterIsInstanceReceiver.kt"); + } + @TestMetadata("filterIsInstanceSimple.kt") public void testFilterIsInstanceSimple() throws Exception { runTest("idea/testData/inspectionsLocal/collections/simplifiableCall/filterIsInstanceSimple.kt");