From 02d4376b851141462fb1831e531fd85f7771f2a9 Mon Sep 17 00:00:00 2001 From: hedgehog Date: Mon, 4 Apr 2016 13:21:11 +0300 Subject: [PATCH] #KT-10797 Fixed --- .../ReplaceContainsIntention.kt | 16 ++++++++++++++++ .../replaceContains/containsFromJava.1.java | 5 +++++ .../containsFromJava.1.java.after | 5 +++++ .../replaceContains/containsFromJava.kt | 4 ++++ .../replaceContains/containsFromJava.kt.after | 4 ++++ .../replaceContains/withoutOperatorModifier.kt | 9 +++++++++ .../idea/intentions/IntentionTestGenerated.java | 12 ++++++++++++ 7 files changed, 55 insertions(+) create mode 100644 idea/testData/intentions/conventionNameCalls/replaceContains/containsFromJava.1.java create mode 100644 idea/testData/intentions/conventionNameCalls/replaceContains/containsFromJava.1.java.after create mode 100644 idea/testData/intentions/conventionNameCalls/replaceContains/containsFromJava.kt create mode 100644 idea/testData/intentions/conventionNameCalls/replaceContains/containsFromJava.kt.after create mode 100644 idea/testData/intentions/conventionNameCalls/replaceContains/withoutOperatorModifier.kt diff --git a/idea/src/org/jetbrains/kotlin/idea/intentions/conventionNameCalls/ReplaceContainsIntention.kt b/idea/src/org/jetbrains/kotlin/idea/intentions/conventionNameCalls/ReplaceContainsIntention.kt index 33c3db448e3..32c0ab7b739 100644 --- a/idea/src/org/jetbrains/kotlin/idea/intentions/conventionNameCalls/ReplaceContainsIntention.kt +++ b/idea/src/org/jetbrains/kotlin/idea/intentions/conventionNameCalls/ReplaceContainsIntention.kt @@ -18,14 +18,21 @@ package org.jetbrains.kotlin.idea.intentions.conventionNameCalls import com.intellij.codeInsight.intention.HighPriorityAction import com.intellij.openapi.editor.Editor +import com.intellij.openapi.project.Project import com.intellij.openapi.util.TextRange +import org.jetbrains.kotlin.descriptors.FunctionDescriptor +import org.jetbrains.kotlin.idea.caches.resolve.analyze +import org.jetbrains.kotlin.idea.codeInsight.DescriptorToSourceUtilsIde.getAnyDeclaration import org.jetbrains.kotlin.idea.intentions.* +import org.jetbrains.kotlin.idea.refactoring.canRefactor import org.jetbrains.kotlin.lexer.KtTokens import org.jetbrains.kotlin.psi.* +import org.jetbrains.kotlin.resolve.calls.callUtil.getResolvedCall import org.jetbrains.kotlin.resolve.calls.model.ArgumentMatch import org.jetbrains.kotlin.resolve.calls.model.isReallySuccess import org.jetbrains.kotlin.resolve.descriptorUtil.builtIns import org.jetbrains.kotlin.resolve.lazy.BodyResolveMode +import org.jetbrains.kotlin.util.OperatorChecks import org.jetbrains.kotlin.util.OperatorNameConventions class ReplaceContainsIntention : SelfTargetingRangeIntention(KtDotQualifiedExpression::class.java, "Replace 'contains' call with 'in' operator"), HighPriorityAction { @@ -43,6 +50,9 @@ class ReplaceContainsIntention : SelfTargetingRangeIntentionains(1) +} \ No newline at end of file diff --git a/idea/testData/intentions/conventionNameCalls/replaceContains/containsFromJava.kt.after b/idea/testData/intentions/conventionNameCalls/replaceContains/containsFromJava.kt.after new file mode 100644 index 00000000000..f82141b91e2 --- /dev/null +++ b/idea/testData/intentions/conventionNameCalls/replaceContains/containsFromJava.kt.after @@ -0,0 +1,4 @@ +fun foo() { + val c = Container() + 1 in c +} \ No newline at end of file diff --git a/idea/testData/intentions/conventionNameCalls/replaceContains/withoutOperatorModifier.kt b/idea/testData/intentions/conventionNameCalls/replaceContains/withoutOperatorModifier.kt new file mode 100644 index 00000000000..117aaba4366 --- /dev/null +++ b/idea/testData/intentions/conventionNameCalls/replaceContains/withoutOperatorModifier.kt @@ -0,0 +1,9 @@ +// IS_APPLICABLE: false + +fun test() { + class Test{ + fun contains(a: Int) : Boolean = true + } + val test = Test() + test.contains(0) +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java index 2852acce5b1..090184c1a0b 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/intentions/IntentionTestGenerated.java @@ -2807,6 +2807,12 @@ public class IntentionTestGenerated extends AbstractIntentionTest { KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/intentions/conventionNameCalls/replaceContains"), Pattern.compile("^([\\w\\-_]+)\\.kt$"), true); } + @TestMetadata("containsFromJava.kt") + public void testContainsFromJava() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceContains/containsFromJava.kt"); + doTest(fileName); + } + @TestMetadata("containsInExpression.kt") public void testContainsInExpression() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceContains/containsInExpression.kt"); @@ -2908,6 +2914,12 @@ public class IntentionTestGenerated extends AbstractIntentionTest { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceContains/unacceptableVararg2.kt"); doTest(fileName); } + + @TestMetadata("withoutOperatorModifier.kt") + public void testWithoutOperatorModifier() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/intentions/conventionNameCalls/replaceContains/withoutOperatorModifier.kt"); + doTest(fileName); + } } @TestMetadata("idea/testData/intentions/conventionNameCalls/replaceGetOrSet")