From 998399bcd8496fe0825a68bfc86278d0c27201c6 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Fri, 9 Sep 2016 10:22:24 +0300 Subject: [PATCH] Change to star projection no longer applied for functional types #KT-13715 Fixed Also EA-87648 Fixed --- .../kotlin/idea/quickfix/ChangeToStarProjectionFix.kt | 1 + .../cast/changeFunctionalToStarProjection.kt | 9 +++++++++ .../kotlin/idea/quickfix/QuickFixTestGenerated.java | 6 ++++++ 3 files changed, 16 insertions(+) create mode 100644 idea/testData/quickfix/addStarProjections/cast/changeFunctionalToStarProjection.kt diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeToStarProjectionFix.kt b/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeToStarProjectionFix.kt index 7531eff7b03..02601eb0851 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeToStarProjectionFix.kt +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeToStarProjectionFix.kt @@ -38,6 +38,7 @@ class ChangeToStarProjectionFix(element: KtTypeElement) : KotlinQuickFixAction()?.right ?: diagnostic.psiElement.getNonStrictParentOfType() val typeElement = typeReference?.typeElement ?: return null + if (typeElement is KtFunctionType) return null if (typeElement.typeArgumentsAsTypes.isNotEmpty()) { return ChangeToStarProjectionFix(typeElement) } diff --git a/idea/testData/quickfix/addStarProjections/cast/changeFunctionalToStarProjection.kt b/idea/testData/quickfix/addStarProjections/cast/changeFunctionalToStarProjection.kt new file mode 100644 index 00000000000..22157c89107 --- /dev/null +++ b/idea/testData/quickfix/addStarProjections/cast/changeFunctionalToStarProjection.kt @@ -0,0 +1,9 @@ +// "Change type arguments to <*, *>" "false" +// ACTION: Convert to expression body + +class Constructor(val x: T) + +fun y() : Constructor<*> = Constructor(42) +fun x(): (String) -> String { + return y() as (String) -> String +} \ 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 c9a3a85cfeb..1ce57f508e8 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java @@ -480,6 +480,12 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { KotlinTestUtils.assertAllTestsPresentByMetadata(this.getClass(), new File("idea/testData/quickfix/addStarProjections/cast"), Pattern.compile("^([\\w\\-_]+)\\.kt$"), true); } + @TestMetadata("changeFunctionalToStarProjection.kt") + public void testChangeFunctionalToStarProjection() throws Exception { + String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/addStarProjections/cast/changeFunctionalToStarProjection.kt"); + doTest(fileName); + } + @TestMetadata("changeToStarProjection.kt") public void testChangeToStarProjection() throws Exception { String fileName = KotlinTestUtils.navigationMetadata("idea/testData/quickfix/addStarProjections/cast/changeToStarProjection.kt");