Disabled "Convert to get/set call" intention where it did not work correctly anyway
This commit is contained in:
+6
@@ -20,6 +20,8 @@ import com.intellij.openapi.editor.Editor
|
|||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||||
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
import org.jetbrains.kotlin.idea.caches.resolve.analyze
|
||||||
|
import org.jetbrains.kotlin.idea.references.ReferenceAccess
|
||||||
|
import org.jetbrains.kotlin.idea.references.readWriteAccess
|
||||||
import org.jetbrains.kotlin.lexer.KtTokens
|
import org.jetbrains.kotlin.lexer.KtTokens
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
import org.jetbrains.kotlin.psi.psiUtil.getQualifiedElementSelector
|
import org.jetbrains.kotlin.psi.psiUtil.getQualifiedElementSelector
|
||||||
@@ -61,6 +63,10 @@ public class OperatorToFunctionIntention : JetSelfTargetingIntention<KtExpressio
|
|||||||
private fun isApplicableArrayAccess(element: KtArrayAccessExpression, caretOffset: Int): Boolean {
|
private fun isApplicableArrayAccess(element: KtArrayAccessExpression, caretOffset: Int): Boolean {
|
||||||
val lbracket = element.getLeftBracket() ?: return false
|
val lbracket = element.getLeftBracket() ?: return false
|
||||||
val rbracket = element.getRightBracket() ?: return false
|
val rbracket = element.getRightBracket() ?: return false
|
||||||
|
|
||||||
|
val access = element.readWriteAccess(useResolveForReadWrite = true)
|
||||||
|
if (access == ReferenceAccess.READ_WRITE) return false // currently not supported
|
||||||
|
|
||||||
return lbracket.getTextRange().containsOffset(caretOffset) || rbracket.getTextRange().containsOffset(caretOffset)
|
return lbracket.getTextRange().containsOffset(caretOffset) || rbracket.getTextRange().containsOffset(caretOffset)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,9 @@
|
|||||||
|
// IS_APPLICABLE: false
|
||||||
|
interface C {
|
||||||
|
operator fun get(p: String): Int
|
||||||
|
operator fun set(p: String, value: Int)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun foo(c: C) {
|
||||||
|
c<caret>[""] += 10
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
// WITH_RUNTIME
|
||||||
|
interface C {
|
||||||
|
operator fun get(p: String): MutableList<Int>
|
||||||
|
}
|
||||||
|
|
||||||
|
fun foo(c: C) {
|
||||||
|
c<caret>[""] += 10
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
// WITH_RUNTIME
|
||||||
|
interface C {
|
||||||
|
operator fun get(p: String): MutableList<Int>
|
||||||
|
}
|
||||||
|
|
||||||
|
fun foo(c: C) {
|
||||||
|
c.get("") += 10
|
||||||
|
}
|
||||||
@@ -0,0 +1,9 @@
|
|||||||
|
// IS_APPLICABLE: false
|
||||||
|
interface C {
|
||||||
|
operator fun get(p: String): Int
|
||||||
|
operator fun set(p: String, value: Int)
|
||||||
|
}
|
||||||
|
|
||||||
|
fun foo(c: C) {
|
||||||
|
c<caret>[""]++
|
||||||
|
}
|
||||||
@@ -5901,6 +5901,18 @@ public class IntentionTestGenerated extends AbstractIntentionTest {
|
|||||||
doTest(fileName);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("compoundAssignment.kt")
|
||||||
|
public void testCompoundAssignment() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/operatorToFunction/compoundAssignment.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
|
@TestMetadata("compoundAssignment2.kt")
|
||||||
|
public void testCompoundAssignment2() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/operatorToFunction/compoundAssignment2.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("functionCallMultipleArgument.kt")
|
@TestMetadata("functionCallMultipleArgument.kt")
|
||||||
public void testFunctionCallMultipleArgument() throws Exception {
|
public void testFunctionCallMultipleArgument() throws Exception {
|
||||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/operatorToFunction/functionCallMultipleArgument.kt");
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/operatorToFunction/functionCallMultipleArgument.kt");
|
||||||
@@ -5949,6 +5961,12 @@ public class IntentionTestGenerated extends AbstractIntentionTest {
|
|||||||
doTest(fileName);
|
doTest(fileName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("pluPlus.kt")
|
||||||
|
public void testPluPlus() throws Exception {
|
||||||
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/operatorToFunction/pluPlus.kt");
|
||||||
|
doTest(fileName);
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("postfixMinusMinus.kt")
|
@TestMetadata("postfixMinusMinus.kt")
|
||||||
public void testPostfixMinusMinus() throws Exception {
|
public void testPostfixMinusMinus() throws Exception {
|
||||||
String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/operatorToFunction/postfixMinusMinus.kt");
|
String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/operatorToFunction/postfixMinusMinus.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user