From f8b6e8a1fa12b66754259524d15f1b927ce1ea9b Mon Sep 17 00:00:00 2001 From: Him188 <Him188@mamoe.net> Date: Wed, 30 Dec 2020 16:50:59 +0800 Subject: [PATCH] Support complex expressions --- .../src/diagnostics/fix/ConvertToPlainTextFix.kt | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/tools/intellij-plugin/src/diagnostics/fix/ConvertToPlainTextFix.kt b/tools/intellij-plugin/src/diagnostics/fix/ConvertToPlainTextFix.kt index 9e56c083c..1b0c8c634 100644 --- a/tools/intellij-plugin/src/diagnostics/fix/ConvertToPlainTextFix.kt +++ b/tools/intellij-plugin/src/diagnostics/fix/ConvertToPlainTextFix.kt @@ -56,16 +56,18 @@ class ConvertToPlainTextFix( val psiFactory = KtPsiFactory(project) - if (element.parent is KtBinaryExpression) { - // 'str + msg' - + val referenceExpr = element.referenceExpression() + if (referenceExpr == null || element.parent is KtBinaryExpression) { + // + operator, e.g. 'str + msg' + // or + // complex expressions, e.g. 'str.toString().plus(msg)', '"".also { }.plus(msg)' val replaced = element.replace(psiFactory.createExpression("net.mamoe.mirai.message.data.PlainText(${element.text})")) as? KtElement ?: return ShortenReferences.DEFAULT.process(replaced) return } - val resolved = element.referenceExpression()?.resolve() ?: return + val resolved = referenceExpr.resolve() if (resolved !is KtDeclaration) return // 'plus' function // perform fix on receiver