i18n: make text from intention lazy

#KT-37483
This commit is contained in:
Dmitry Gridin
2020-04-03 21:05:26 +07:00
parent d8ca21d728
commit 25dfc6dd63
63 changed files with 343 additions and 565 deletions
@@ -28,11 +28,10 @@ import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall
import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode
import org.jetbrains.kotlin.util.OperatorNameConventions
class OperatorToFunctionIntention :
SelfTargetingIntention<KtExpression>(
KtExpression::class.java,
KotlinIdeaAnalysisBundle.message("replace.overloaded.operator.with.function.call")
) {
class OperatorToFunctionIntention : SelfTargetingIntention<KtExpression>(
KtExpression::class.java,
KotlinIdeaAnalysisBundle.lazyMessage("replace.overloaded.operator.with.function.call"),
) {
companion object {
private fun isApplicableUnary(element: KtUnaryExpression, caretOffset: Int): Boolean {
if (element.baseExpression == null) return false
@@ -65,7 +64,8 @@ class OperatorToFunctionIntention :
return when (opRef.getReferencedNameElementType()) {
KtTokens.PLUS, KtTokens.MINUS, KtTokens.MUL, KtTokens.DIV, KtTokens.PERC, KtTokens.RANGE,
KtTokens.IN_KEYWORD, KtTokens.NOT_IN, KtTokens.PLUSEQ, KtTokens.MINUSEQ, KtTokens.MULTEQ, KtTokens.DIVEQ, KtTokens.PERCEQ,
KtTokens.GT, KtTokens.LT, KtTokens.GTEQ, KtTokens.LTEQ -> true
KtTokens.GT, KtTokens.LT, KtTokens.GTEQ, KtTokens.LTEQ
-> true
KtTokens.EQEQ, KtTokens.EXCLEQ -> listOf(element.left, element.right).none { it?.node?.elementType == KtNodeTypes.NULL }
KtTokens.EQ -> element.left is KtArrayAccessExpression
else -> false
@@ -30,7 +30,7 @@ abstract class SelfTargetingIntention<TElement : PsiElement>(
@Nls private val familyNameGetter: () -> String = textGetter,
) : IntentionAction {
@Deprecated("Replace with primary constructor", ReplaceWith("SelfTargetingIntention(elementType, { text }, { familyName })"))
@Deprecated("Replace with primary constructor", ReplaceWith("SelfTargetingIntention<TElement>(elementType, { text }, { familyName })"))
constructor(
elementType: Class<TElement>,
@Nls text: String,
@@ -130,7 +130,7 @@ abstract class SelfTargetingRangeIntention<TElement : PsiElement>(
@Nls familyNameGetter: () -> String = textGetter,
) : SelfTargetingIntention<TElement>(elementType, textGetter, familyNameGetter) {
@Deprecated("Replace with primary constructor", ReplaceWith("SelfTargetingRangeIntention(elementType, { text }, { familyName })"))
@Deprecated("Replace with primary constructor", ReplaceWith("SelfTargetingRangeIntention<TElement>(elementType, { text }, { familyName })"))
constructor(
elementType: Class<TElement>,
@Nls text: String,
@@ -153,7 +153,7 @@ abstract class SelfTargetingOffsetIndependentIntention<TElement : KtElement>(
@Deprecated(
"Replace with primary constructor",
ReplaceWith("SelfTargetingOffsetIndependentIntention(elementType, { text }, { familyName })")
ReplaceWith("SelfTargetingOffsetIndependentIntention<TElement>(elementType, { text }, { familyName })")
)
constructor(
elementType: Class<TElement>,