From d5deb03292ee24b2212a9d3aa1a0621c3dae4fd3 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Tue, 8 Sep 2015 17:23:01 +0300 Subject: [PATCH] Change Function Signature Fix: Do not render default values in overriding functions #KT-8520 Fixed --- .../ChangeMemberFunctionSignatureFix.java | 21 ++++++++++++++----- .../noDefaultValuesInOverride.kt | 8 +++++++ .../noDefaultValuesInOverride.kt.after | 8 +++++++ .../idea/quickfix/QuickFixTestGenerated.java | 6 ++++++ 4 files changed, 38 insertions(+), 5 deletions(-) create mode 100644 idea/testData/quickfix/override/nothingToOverride/noDefaultValuesInOverride.kt create mode 100644 idea/testData/quickfix/override/nothingToOverride/noDefaultValuesInOverride.kt.after diff --git a/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeMemberFunctionSignatureFix.java b/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeMemberFunctionSignatureFix.java index 1789a416a3b..703ef2b2fcc 100644 --- a/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeMemberFunctionSignatureFix.java +++ b/idea/src/org/jetbrains/kotlin/idea/quickfix/ChangeMemberFunctionSignatureFix.java @@ -66,7 +66,17 @@ import java.util.*; * Fix that changes member function's signature to match one of super functions' signatures. */ public class ChangeMemberFunctionSignatureFix extends JetHintAction { - private static final DescriptorRenderer SIGNATURE_RENDERER = DescriptorRenderer.Companion.withOptions( + private static final DescriptorRenderer SIGNATURE_SOURCE_RENDERER = IdeDescriptorRenderers.SOURCE_CODE.withOptions( + new Function1() { + @Override + public Unit invoke(DescriptorRendererOptions options) { + options.setRenderDefaultValues(false); + return Unit.INSTANCE$; + } + } + ); + + private static final DescriptorRenderer SIGNATURE_PREVIEW_RENDERER = DescriptorRenderer.Companion.withOptions( new Function1() { @Override public Unit invoke(DescriptorRendererOptions options) { @@ -75,6 +85,7 @@ public class ChangeMemberFunctionSignatureFix extends JetHintActionemptySet()); options.setNameShortness(NameShortness.SHORT); options.setUnitReturnType(false); + options.setRenderDefaultValues(false); return Unit.INSTANCE$; } } @@ -96,7 +107,7 @@ public class ChangeMemberFunctionSignatureFix extends JetHintAction keys = new ArrayList(possibleSignatures.keySet()); Collections.sort(keys); @@ -364,13 +375,13 @@ public class ChangeMemberFunctionSignatureFix extends JetHintAction fun foo(a: Int): Any? = null +} \ No newline at end of file diff --git a/idea/testData/quickfix/override/nothingToOverride/noDefaultValuesInOverride.kt.after b/idea/testData/quickfix/override/nothingToOverride/noDefaultValuesInOverride.kt.after new file mode 100644 index 00000000000..1930dfddb25 --- /dev/null +++ b/idea/testData/quickfix/override/nothingToOverride/noDefaultValuesInOverride.kt.after @@ -0,0 +1,8 @@ +// "Change function signature to 'fun foo(a: Int, b: String): Any?'" "true" +interface A { + public fun foo(a: Int = 1, b: String = "str"): Any? +} + +class B : A { + public override fun foo(a: Int, b: String): Any? = null +} \ 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 11230aa127e..250ccd4cfa3 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java +++ b/idea/tests/org/jetbrains/kotlin/idea/quickfix/QuickFixTestGenerated.java @@ -4889,6 +4889,12 @@ public class QuickFixTestGenerated extends AbstractQuickFixTest { doTest(fileName); } + @TestMetadata("noDefaultValuesInOverride.kt") + public void testNoDefaultValuesInOverride() throws Exception { + String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/override/nothingToOverride/noDefaultValuesInOverride.kt"); + doTest(fileName); + } + @TestMetadata("noOpenSuperFunction.kt") public void testNoOpenSuperFunction() throws Exception { String fileName = JetTestUtils.navigationMetadata("idea/testData/quickfix/override/nothingToOverride/noOpenSuperFunction.kt");