From e1d223937b54e8abb3dbc83917eef6de65c316d6 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Wed, 20 Jun 2018 17:15:41 +0300 Subject: [PATCH] Optimize "replace toString() with string template" Related to KT-13782 --- .../ReplaceToStringWithStringTemplateInspection.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/inspections/ReplaceToStringWithStringTemplateInspection.kt b/idea/src/org/jetbrains/kotlin/idea/inspections/ReplaceToStringWithStringTemplateInspection.kt index 550b9e5dcc8..4288daedbee 100644 --- a/idea/src/org/jetbrains/kotlin/idea/inspections/ReplaceToStringWithStringTemplateInspection.kt +++ b/idea/src/org/jetbrains/kotlin/idea/inspections/ReplaceToStringWithStringTemplateInspection.kt @@ -18,7 +18,7 @@ import org.jetbrains.kotlin.resolve.descriptorUtil.fqNameUnsafe import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode class ReplaceToStringWithStringTemplateInspection : AbstractApplicabilityBasedInspection( - KtDotQualifiedExpression::class.java + KtDotQualifiedExpression::class.java ) { override fun isApplicable(element: KtDotQualifiedExpression): Boolean { if (element.receiverExpression !is KtReferenceExpression) return false @@ -39,6 +39,9 @@ class ReplaceToStringWithStringTemplateInspection : AbstractApplicabilityBasedIn override val defaultFixText = "Replace 'toString' with string template" private fun KtDotQualifiedExpression.isToString(): Boolean { + val callExpression = selectorExpression as? KtCallExpression ?: return false + val referenceExpression = callExpression.calleeExpression as? KtNameReferenceExpression ?: return false + if (referenceExpression.getReferencedName() != "toString") return false val resolvedCall = toResolvedCall(BodyResolveMode.PARTIAL) ?: return false val callableDescriptor = resolvedCall.resultingDescriptor as? CallableMemberDescriptor ?: return false return callableDescriptor.getDeepestSuperDeclarations().any { it.fqNameUnsafe.asString() == "kotlin.Any.toString" }