diff --git a/core/descriptors/src/org/jetbrains/jet/renderer/DescriptorRendererBuilder.java b/core/descriptors/src/org/jetbrains/jet/renderer/DescriptorRendererBuilder.java index a60f7d55615..3551ad97741 100644 --- a/core/descriptors/src/org/jetbrains/jet/renderer/DescriptorRendererBuilder.java +++ b/core/descriptors/src/org/jetbrains/jet/renderer/DescriptorRendererBuilder.java @@ -51,6 +51,7 @@ public class DescriptorRendererBuilder { return type; } }; + private boolean renderDefaultValues = true; @NotNull private DescriptorRenderer.OverrideRenderingPolicy overrideRenderingPolicy = DescriptorRenderer.OverrideRenderingPolicy.RENDER_OPEN; @@ -209,6 +210,11 @@ public class DescriptorRendererBuilder { return this; } + public DescriptorRendererBuilder setRenderDefaultValues(boolean renderDefaultValues) { + this.renderDefaultValues = renderDefaultValues; + return this; + } + @NotNull public DescriptorRendererBuilder setTypeNormalizer(@NotNull Function1 typeNormalizer) { this.typeNormalizer = typeNormalizer; @@ -222,7 +228,7 @@ public class DescriptorRendererBuilder { normalizedVisibilities, showInternalKeyword, prettyFunctionTypes, uninferredTypeParameterAsName, overrideRenderingPolicy, valueParametersHandler, textFormat, excludedAnnotationClasses, includePropertyConstant, includeSynthesizedParameterNames, withoutFunctionParameterNames, withoutTypeParameters, receiverAfterName, - renderClassObjectName, withoutSuperTypes, typeNormalizer); + renderClassObjectName, withoutSuperTypes, typeNormalizer, renderDefaultValues); } } diff --git a/core/descriptors/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java b/core/descriptors/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java index d8989c6205c..15013342182 100644 --- a/core/descriptors/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java +++ b/core/descriptors/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java @@ -65,6 +65,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer { private final boolean renderClassObjectName; private final boolean withoutSuperTypes; private final boolean receiverAfterName; + private final boolean renderDefaultValues; @NotNull private final OverrideRenderingPolicy overrideRenderingPolicy; @@ -100,7 +101,8 @@ public class DescriptorRendererImpl implements DescriptorRenderer { boolean receiverAfterName, boolean renderClassObjectName, boolean withoutSuperTypes, - Function1 typeNormalizer + @NotNull Function1 typeNormalizer, + boolean renderDefaultValues ) { this.shortNames = shortNames; this.withDefinedIn = withDefinedIn; @@ -126,6 +128,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer { this.renderClassObjectName = renderClassObjectName; this.withoutSuperTypes = withoutSuperTypes; this.typeNormalizer = typeNormalizer; + this.renderDefaultValues = renderDefaultValues; } /* FORMATTING */ @@ -822,7 +825,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer { renderAnnotations(valueParameter, builder); renderVariable(valueParameter, includeName, builder, topLevel); - boolean withDefaultValue = debugMode ? valueParameter.declaresDefaultValue() : valueParameter.hasDefaultValue(); + boolean withDefaultValue = renderDefaultValues && (debugMode ? valueParameter.declaresDefaultValue() : valueParameter.hasDefaultValue()); if (withDefaultValue) { builder.append(" = ..."); } diff --git a/idea/src/org/jetbrains/jet/plugin/codeInsight/OverrideImplementMethodsHandler.java b/idea/src/org/jetbrains/jet/plugin/codeInsight/OverrideImplementMethodsHandler.java index b35bd036479..1769d700122 100644 --- a/idea/src/org/jetbrains/jet/plugin/codeInsight/OverrideImplementMethodsHandler.java +++ b/idea/src/org/jetbrains/jet/plugin/codeInsight/OverrideImplementMethodsHandler.java @@ -55,6 +55,7 @@ import static org.jetbrains.jet.lang.psi.PsiPackage.JetPsiFactory; public abstract class OverrideImplementMethodsHandler implements LanguageCodeInsightActionHandler { private static final DescriptorRenderer OVERRIDE_RENDERER = new DescriptorRendererBuilder() + .setRenderDefaultValues(false) .setModifiers(DescriptorRenderer.Modifier.OVERRIDE) .setWithDefinedIn(false) .setShortNames(false) diff --git a/idea/testData/codeInsight/overrideImplement/defaultValues.kt b/idea/testData/codeInsight/overrideImplement/defaultValues.kt new file mode 100644 index 00000000000..112bb1e7e16 --- /dev/null +++ b/idea/testData/codeInsight/overrideImplement/defaultValues.kt @@ -0,0 +1,7 @@ +trait T { + fun foo(a:Int = 1) +} + +class C : T { + +} \ No newline at end of file diff --git a/idea/testData/codeInsight/overrideImplement/defaultValues.kt.after b/idea/testData/codeInsight/overrideImplement/defaultValues.kt.after new file mode 100644 index 00000000000..4bad01c54d9 --- /dev/null +++ b/idea/testData/codeInsight/overrideImplement/defaultValues.kt.after @@ -0,0 +1,9 @@ +trait T { + fun foo(a:Int = 1) +} + +class C : T { + override fun foo(a: Int) { + throw UnsupportedOperationException() + } +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/plugin/codeInsight/OverrideImplementTest.java b/idea/tests/org/jetbrains/jet/plugin/codeInsight/OverrideImplementTest.java index c8ad3a6ff18..7f7165cab51 100644 --- a/idea/tests/org/jetbrains/jet/plugin/codeInsight/OverrideImplementTest.java +++ b/idea/tests/org/jetbrains/jet/plugin/codeInsight/OverrideImplementTest.java @@ -71,6 +71,10 @@ public final class OverrideImplementTest extends AbstractOverrideImplementTest { doImplementFileTest(); } + public void testDefaultValues() { + doImplementFileTest(); + } + public void testRespectCaretPosition() { doMultiImplementFileTest(); }