From 30c41e6720743318a65c5f326dd3605e359930e3 Mon Sep 17 00:00:00 2001 From: Toshiaki Kameyama Date: Fri, 20 Sep 2019 14:20:14 +0900 Subject: [PATCH] "Create type parameter from usage": don't suggest for not extension property #KT-33300 Fixed --- ...peParameterByUnresolvedRefActionFactory.kt | 2 +- .../inExtensionProperty.kt | 3 ++ .../inExtensionProperty.kt.after | 3 ++ .../inExtensionProperty2.kt | 5 ++++ .../inExtensionProperty2.kt.after | 5 ++++ .../inExtensionProperty3.kt | 6 ++++ .../inExtensionProperty3.kt.after | 6 ++++ .../inContainingDeclaration/inProperty.kt | 10 +++++++ .../inContainingDeclaration/inProperty2.kt | 14 +++++++++ .../inContainingDeclaration/inProperty3.kt | 9 ++++++ .../idea/quickfix/QuickFixTestGenerated.java | 30 +++++++++++++++++++ 11 files changed, 92 insertions(+), 1 deletion(-) create mode 100644 idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inExtensionProperty.kt create mode 100644 idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inExtensionProperty.kt.after create mode 100644 idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inExtensionProperty2.kt create mode 100644 idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inExtensionProperty2.kt.after create mode 100644 idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inExtensionProperty3.kt create mode 100644 idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inExtensionProperty3.kt.after create mode 100644 idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inProperty.kt create mode 100644 idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inProperty2.kt create mode 100644 idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inProperty3.kt diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createTypeParameter/CreateTypeParameterByUnresolvedRefActionFactory.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createTypeParameter/CreateTypeParameterByUnresolvedRefActionFactory.kt index 2aa63f350d1..6d92ecf589e 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createTypeParameter/CreateTypeParameterByUnresolvedRefActionFactory.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/createFromUsage/createTypeParameter/CreateTypeParameterByUnresolvedRefActionFactory.kt @@ -109,7 +109,7 @@ fun getPossibleTypeParameterContainers(startFrom: PsiElement): ListT? + get() = null \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inExtensionProperty.kt.after b/idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inExtensionProperty.kt.after new file mode 100644 index 00000000000..1f36cc6a275 --- /dev/null +++ b/idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inExtensionProperty.kt.after @@ -0,0 +1,3 @@ +// "Create type parameter 'T' in property 'a'" "true" +val T.a: T? + get() = null \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inExtensionProperty2.kt b/idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inExtensionProperty2.kt new file mode 100644 index 00000000000..0d68c5c7fa2 --- /dev/null +++ b/idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inExtensionProperty2.kt @@ -0,0 +1,5 @@ +// "Create type parameter 'T' in property 'a'" "true" +class Test { + val T.a: T? + get() = null +} \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inExtensionProperty2.kt.after b/idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inExtensionProperty2.kt.after new file mode 100644 index 00000000000..4f74d104186 --- /dev/null +++ b/idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inExtensionProperty2.kt.after @@ -0,0 +1,5 @@ +// "Create type parameter 'T' in property 'a'" "true" +class Test { + val T.a: T? + get() = null +} \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inExtensionProperty3.kt b/idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inExtensionProperty3.kt new file mode 100644 index 00000000000..e810d62884e --- /dev/null +++ b/idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inExtensionProperty3.kt @@ -0,0 +1,6 @@ +// "Create type parameter 'T' in property 'a'" "true" +val T.a: String + get() { + val b: T + return "" + } \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inExtensionProperty3.kt.after b/idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inExtensionProperty3.kt.after new file mode 100644 index 00000000000..4a76646ba77 --- /dev/null +++ b/idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inExtensionProperty3.kt.after @@ -0,0 +1,6 @@ +// "Create type parameter 'T' in property 'a'" "true" +val T.a: String + get() { + val b: T + return "" + } \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inProperty.kt b/idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inProperty.kt new file mode 100644 index 00000000000..567de2f5db6 --- /dev/null +++ b/idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inProperty.kt @@ -0,0 +1,10 @@ +// "Create type parameter 'T' in property 'a'" "false" +// ACTION: Convert property initializer to getter +// ACTION: Convert to lazy property +// ACTION: Create annotation 'T' +// ACTION: Create class 'T' +// ACTION: Create enum 'T' +// ACTION: Create interface 'T' +// ACTION: Remove explicit type specification +// ERROR: Unresolved reference: T +val a: T? = null \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inProperty2.kt b/idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inProperty2.kt new file mode 100644 index 00000000000..29ff554aa5d --- /dev/null +++ b/idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inProperty2.kt @@ -0,0 +1,14 @@ +// "Create type parameter 'T' in property 'a'" "false" +// ACTION: Convert property initializer to getter +// ACTION: Convert to lazy property +// ACTION: Create annotation 'T' +// ACTION: Create class 'T' +// ACTION: Create enum 'T' +// ACTION: Create interface 'T' +// ACTION: Create type parameter 'T' in class 'Test' +// ACTION: Move to constructor +// ACTION: Remove explicit type specification +// ERROR: Unresolved reference: T +class Test { + val a: T? = null +} \ No newline at end of file diff --git a/idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inProperty3.kt b/idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inProperty3.kt new file mode 100644 index 00000000000..9f2b1b87803 --- /dev/null +++ b/idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inProperty3.kt @@ -0,0 +1,9 @@ +// "Create type parameter 'T' in property 'a'" "false" +// ACTION: Create annotation 'T' +// ACTION: Create class 'T' +// ACTION: Create enum 'T' +// ACTION: Create interface 'T' +// ERROR: Unresolved reference: T +val a = fun() { + val b: T +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java index cef0a40fbd2..3c82f765b27 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java @@ -4748,6 +4748,36 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { runTest("idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inAnnotation.kt"); } + @TestMetadata("inExtensionProperty.kt") + public void testInExtensionProperty() throws Exception { + runTest("idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inExtensionProperty.kt"); + } + + @TestMetadata("inExtensionProperty2.kt") + public void testInExtensionProperty2() throws Exception { + runTest("idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inExtensionProperty2.kt"); + } + + @TestMetadata("inExtensionProperty3.kt") + public void testInExtensionProperty3() throws Exception { + runTest("idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inExtensionProperty3.kt"); + } + + @TestMetadata("inProperty.kt") + public void testInProperty() throws Exception { + runTest("idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inProperty.kt"); + } + + @TestMetadata("inProperty2.kt") + public void testInProperty2() throws Exception { + runTest("idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inProperty2.kt"); + } + + @TestMetadata("inProperty3.kt") + public void testInProperty3() throws Exception { + runTest("idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inProperty3.kt"); + } + @TestMetadata("inSuperTypeEntry.kt") public void testInSuperTypeEntry() throws Exception { runTest("idea/testData/quickfix/createFromUsage/createTypeParameter/inContainingDeclaration/inSuperTypeEntry.kt");