From 11fd8fe392da78a44ec74ba72704a070f0f3f87f Mon Sep 17 00:00:00 2001 From: Valentin Kipyatkov Date: Tue, 28 Oct 2014 12:51:41 +0300 Subject: [PATCH] Convert to expression body: fixed type selection for public override --- .../plugin/intentions/ConvertToExpressionBodyAction.kt | 2 +- .../convertToExpressionBody/overridePublicFun.kt | 9 +++++++++ .../convertToExpressionBody/overridePublicFun.kt.after | 7 +++++++ .../jet/plugin/intentions/IntentionTestGenerated.java | 6 ++++++ 4 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 idea/testData/intentions/convertToExpressionBody/overridePublicFun.kt create mode 100644 idea/testData/intentions/convertToExpressionBody/overridePublicFun.kt.after diff --git a/idea/src/org/jetbrains/jet/plugin/intentions/ConvertToExpressionBodyAction.kt b/idea/src/org/jetbrains/jet/plugin/intentions/ConvertToExpressionBodyAction.kt index 1dd4f4e2c9e..d8b61c10be3 100644 --- a/idea/src/org/jetbrains/jet/plugin/intentions/ConvertToExpressionBodyAction.kt +++ b/idea/src/org/jetbrains/jet/plugin/intentions/ConvertToExpressionBodyAction.kt @@ -26,7 +26,6 @@ import org.jetbrains.jet.lang.psi.* import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns import org.jetbrains.jet.lexer.JetTokens import com.intellij.openapi.util.TextRange -import org.jetbrains.jet.lang.psi.psiUtil.siblings import org.jetbrains.jet.plugin.caches.resolve.getLazyResolveSession import org.jetbrains.jet.lang.descriptors.DeclarationDescriptorWithVisibility @@ -63,6 +62,7 @@ public class ConvertToExpressionBodyAction : PsiElementBaseIntentionAction() { } private fun canOmitType(declaration: JetCallableDeclaration): Boolean { + if (declaration.getModifierList()?.hasModifier(JetTokens.OVERRIDE_KEYWORD) ?: false) return true val descriptor = declaration.getLazyResolveSession().resolveToDescriptor(declaration) return !((descriptor as? DeclarationDescriptorWithVisibility)?.getVisibility()?.isPublicAPI() ?: false) } diff --git a/idea/testData/intentions/convertToExpressionBody/overridePublicFun.kt b/idea/testData/intentions/convertToExpressionBody/overridePublicFun.kt new file mode 100644 index 00000000000..f6dae7240d6 --- /dev/null +++ b/idea/testData/intentions/convertToExpressionBody/overridePublicFun.kt @@ -0,0 +1,9 @@ +open class A { + public open fun foo(): String = "" +} + +class B : A() { + public override fun foo(): String { + return "abc" + } +} diff --git a/idea/testData/intentions/convertToExpressionBody/overridePublicFun.kt.after b/idea/testData/intentions/convertToExpressionBody/overridePublicFun.kt.after new file mode 100644 index 00000000000..d355ef3f860 --- /dev/null +++ b/idea/testData/intentions/convertToExpressionBody/overridePublicFun.kt.after @@ -0,0 +1,7 @@ +open class A { + public open fun foo(): String = "" +} + +class B : A() { + public override fun foo(): String = "abc" +} diff --git a/idea/tests/org/jetbrains/jet/plugin/intentions/IntentionTestGenerated.java b/idea/tests/org/jetbrains/jet/plugin/intentions/IntentionTestGenerated.java index 99935d70dd3..e03e47d49cd 100644 --- a/idea/tests/org/jetbrains/jet/plugin/intentions/IntentionTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/plugin/intentions/IntentionTestGenerated.java @@ -3138,6 +3138,12 @@ public class IntentionTestGenerated extends AbstractIntentionTest { doTest(fileName); } + @TestMetadata("overridePublicFun.kt") + public void testOverridePublicFun() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/convertToExpressionBody/overridePublicFun.kt"); + doTest(fileName); + } + @TestMetadata("protectedFunNoSelection.kt") public void testProtectedFunNoSelection() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/intentions/convertToExpressionBody/protectedFunNoSelection.kt");