From 10648f44ac1ed305f5f3a1a92c74011a10a3b9d1 Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Tue, 19 Jan 2016 20:26:55 +0300 Subject: [PATCH] Do not auto-import convention methods without 'operator' modifier (KT-10212) #KT-10212 Fixed --- .../jetbrains/kotlin/idea/util/CallType.kt | 2 +- .../autoImports/delegateNoOperator.test | 20 +++++++++++++++++++ .../indexCallExtensionGetNoOperator.test | 18 +---------------- .../QuickFixMultiFileTestGenerated.java | 6 ++++++ 4 files changed, 28 insertions(+), 18 deletions(-) create mode 100644 idea/testData/quickfix/autoImports/delegateNoOperator.test diff --git a/idea/ide-common/src/org/jetbrains/kotlin/idea/util/CallType.kt b/idea/ide-common/src/org/jetbrains/kotlin/idea/util/CallType.kt index e550b070ce4..874a4212013 100644 --- a/idea/ide-common/src/org/jetbrains/kotlin/idea/util/CallType.kt +++ b/idea/ide-common/src/org/jetbrains/kotlin/idea/util/CallType.kt @@ -62,7 +62,7 @@ sealed class CallType(val descriptorKindFilter: Descript object TYPE : CallType(DescriptorKindFilter(DescriptorKindFilter.CLASSIFIERS_MASK or DescriptorKindFilter.PACKAGES_MASK) exclude DescriptorKindExclude.EnumEntry) - object DELEGATE : CallType(DescriptorKindFilter.FUNCTIONS) + object DELEGATE : CallType(DescriptorKindFilter.FUNCTIONS exclude NonOperatorExclude) object ANNOTATION : CallType(DescriptorKindFilter(DescriptorKindFilter.CLASSIFIERS_MASK or DescriptorKindFilter.PACKAGES_MASK) exclude NonAnnotationClassifierExclude) diff --git a/idea/testData/quickfix/autoImports/delegateNoOperator.test b/idea/testData/quickfix/autoImports/delegateNoOperator.test new file mode 100644 index 00000000000..c922d0a12ff --- /dev/null +++ b/idea/testData/quickfix/autoImports/delegateNoOperator.test @@ -0,0 +1,20 @@ +// FILE: first.before.kt +// "Import" "false" +// ERROR: Missing 'getValue(kotlin.Nothing?, kotlin.reflect.KProperty<*>)' method on delegate of type 'kotlin.String' + +package b + +val x: String by "" // <--- should not propose to auto-import a.getValue, + // because that would not fix the error + +// FILE: second.kt +package a + +import kotlin.reflect.KProperty + +fun String.getValue(x: Any?, y: KProperty<*>) = "" + + + +// FILE: first.after.kt +// Should not be checked \ No newline at end of file diff --git a/idea/testData/quickfix/autoImports/indexCallExtensionGetNoOperator.test b/idea/testData/quickfix/autoImports/indexCallExtensionGetNoOperator.test index b993bd85307..c07fdefe555 100644 --- a/idea/testData/quickfix/autoImports/indexCallExtensionGetNoOperator.test +++ b/idea/testData/quickfix/autoImports/indexCallExtensionGetNoOperator.test @@ -29,20 +29,4 @@ fun Some.get(s: String) {} // FILE: first.after.kt -// "Import" "true" -// ERROR: Unresolved reference: foo()["str"] -// ERROR: No get method providing array access - -package testing - -import some.Some -import some.get - -fun foo(): Some = Some() - -fun testing() { - foo()["str"] -} - - - +// Should not be checked diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiFileTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiFileTestGenerated.java index 1fcb1df18b4..e1558112f9d 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiFileTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixMultiFileTestGenerated.java @@ -101,6 +101,12 @@ public class QuickFixMultiFileTestGenerated extends AbstractQuickFixMultiFileTes doTestWithExtraFile(fileName); } + @TestMetadata("delegateNoOperator.test") + public void testDelegateNoOperator() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/autoImports/delegateNoOperator.test"); + doTestWithExtraFile(fileName); + } + @TestMetadata("divOperator.before.Main.kt") public void testDivOperator() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/autoImports/divOperator.before.Main.kt");