KtArrayAccessReference: remove redundant functions
This commit is contained in:
@@ -5,14 +5,12 @@
|
|||||||
|
|
||||||
package org.jetbrains.kotlin.idea.references
|
package org.jetbrains.kotlin.idea.references
|
||||||
|
|
||||||
import com.google.common.collect.Lists
|
|
||||||
import com.intellij.psi.MultiRangeReference
|
import com.intellij.psi.MultiRangeReference
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.lexer.KtToken
|
import org.jetbrains.kotlin.lexer.KtToken
|
||||||
import org.jetbrains.kotlin.lexer.KtTokens
|
import org.jetbrains.kotlin.lexer.KtTokens
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.KtArrayAccessExpression
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.getPossiblyQualifiedCallExpression
|
|
||||||
import org.jetbrains.kotlin.util.OperatorNameConventions
|
import org.jetbrains.kotlin.util.OperatorNameConventions
|
||||||
|
|
||||||
abstract class KtArrayAccessReference(
|
abstract class KtArrayAccessReference(
|
||||||
@@ -30,39 +28,9 @@ abstract class KtArrayAccessReference(
|
|||||||
|
|
||||||
override fun canRename() = true
|
override fun canRename() = true
|
||||||
|
|
||||||
override fun handleElementRename(newElementName: String): PsiElement? {
|
abstract override fun handleElementRename(newElementName: String): PsiElement?
|
||||||
val arrayAccessExpression = expression
|
|
||||||
if (OperatorNameConventions.INVOKE.asString() == newElementName) {
|
|
||||||
val replacement = KtPsiFactory(arrayAccessExpression.project).buildExpression {
|
|
||||||
val arrayExpression = arrayAccessExpression.arrayExpression
|
|
||||||
if (arrayExpression is KtQualifiedExpression) {
|
|
||||||
appendExpression(arrayExpression.receiverExpression)
|
|
||||||
appendFixedText(arrayExpression.operationSign.value)
|
|
||||||
appendExpression(arrayExpression.selectorExpression)
|
|
||||||
} else {
|
|
||||||
appendExpression(arrayExpression)
|
|
||||||
}
|
|
||||||
|
|
||||||
appendFixedText("(")
|
|
||||||
appendExpressions(arrayAccessExpression.indexExpressions, ",")
|
|
||||||
appendFixedText(")")
|
|
||||||
}
|
|
||||||
val fullCallExpression = arrayAccessExpression.replace(replacement) as KtExpression
|
|
||||||
val callExpression = fullCallExpression.getPossiblyQualifiedCallExpression()
|
|
||||||
if (callExpression != null && canMoveLambdaOutsideParentheses(callExpression)) {
|
|
||||||
moveFunctionLiteralOutsideParentheses(callExpression)
|
|
||||||
}
|
|
||||||
return fullCallExpression
|
|
||||||
}
|
|
||||||
|
|
||||||
return doRenameImplicitConventionalCall(newElementName)
|
|
||||||
}
|
|
||||||
|
|
||||||
protected abstract fun moveFunctionLiteralOutsideParentheses(callExpression: KtCallExpression)
|
|
||||||
protected abstract fun canMoveLambdaOutsideParentheses(callExpression: KtCallExpression): Boolean
|
|
||||||
protected abstract fun doRenameImplicitConventionalCall(newName: String?): KtExpression
|
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private val NAMES = Lists.newArrayList(OperatorNameConventions.GET, OperatorNameConventions.SET)
|
private val NAMES = listOf(OperatorNameConventions.GET, OperatorNameConventions.SET)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user