KT-4524 Generate implementations fails on functions with default values

#KT-4524 Fixed
This commit is contained in:
Andrey Breslav
2014-10-13 08:43:58 +04:00
parent cc68ed894b
commit f202a5c31d
6 changed files with 33 additions and 3 deletions
@@ -51,6 +51,7 @@ public class DescriptorRendererBuilder {
return type; return type;
} }
}; };
private boolean renderDefaultValues = true;
@NotNull @NotNull
private DescriptorRenderer.OverrideRenderingPolicy overrideRenderingPolicy = DescriptorRenderer.OverrideRenderingPolicy.RENDER_OPEN; private DescriptorRenderer.OverrideRenderingPolicy overrideRenderingPolicy = DescriptorRenderer.OverrideRenderingPolicy.RENDER_OPEN;
@@ -209,6 +210,11 @@ public class DescriptorRendererBuilder {
return this; return this;
} }
public DescriptorRendererBuilder setRenderDefaultValues(boolean renderDefaultValues) {
this.renderDefaultValues = renderDefaultValues;
return this;
}
@NotNull @NotNull
public DescriptorRendererBuilder setTypeNormalizer(@NotNull Function1<JetType, JetType> typeNormalizer) { public DescriptorRendererBuilder setTypeNormalizer(@NotNull Function1<JetType, JetType> typeNormalizer) {
this.typeNormalizer = typeNormalizer; this.typeNormalizer = typeNormalizer;
@@ -222,7 +228,7 @@ public class DescriptorRendererBuilder {
normalizedVisibilities, showInternalKeyword, prettyFunctionTypes, uninferredTypeParameterAsName, normalizedVisibilities, showInternalKeyword, prettyFunctionTypes, uninferredTypeParameterAsName,
overrideRenderingPolicy, valueParametersHandler, textFormat, excludedAnnotationClasses, includePropertyConstant, overrideRenderingPolicy, valueParametersHandler, textFormat, excludedAnnotationClasses, includePropertyConstant,
includeSynthesizedParameterNames, withoutFunctionParameterNames, withoutTypeParameters, receiverAfterName, includeSynthesizedParameterNames, withoutFunctionParameterNames, withoutTypeParameters, receiverAfterName,
renderClassObjectName, withoutSuperTypes, typeNormalizer); renderClassObjectName, withoutSuperTypes, typeNormalizer, renderDefaultValues);
} }
} }
@@ -65,6 +65,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
private final boolean renderClassObjectName; private final boolean renderClassObjectName;
private final boolean withoutSuperTypes; private final boolean withoutSuperTypes;
private final boolean receiverAfterName; private final boolean receiverAfterName;
private final boolean renderDefaultValues;
@NotNull @NotNull
private final OverrideRenderingPolicy overrideRenderingPolicy; private final OverrideRenderingPolicy overrideRenderingPolicy;
@@ -100,7 +101,8 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
boolean receiverAfterName, boolean receiverAfterName,
boolean renderClassObjectName, boolean renderClassObjectName,
boolean withoutSuperTypes, boolean withoutSuperTypes,
Function1<JetType, JetType> typeNormalizer @NotNull Function1<JetType, JetType> typeNormalizer,
boolean renderDefaultValues
) { ) {
this.shortNames = shortNames; this.shortNames = shortNames;
this.withDefinedIn = withDefinedIn; this.withDefinedIn = withDefinedIn;
@@ -126,6 +128,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
this.renderClassObjectName = renderClassObjectName; this.renderClassObjectName = renderClassObjectName;
this.withoutSuperTypes = withoutSuperTypes; this.withoutSuperTypes = withoutSuperTypes;
this.typeNormalizer = typeNormalizer; this.typeNormalizer = typeNormalizer;
this.renderDefaultValues = renderDefaultValues;
} }
/* FORMATTING */ /* FORMATTING */
@@ -822,7 +825,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
renderAnnotations(valueParameter, builder); renderAnnotations(valueParameter, builder);
renderVariable(valueParameter, includeName, builder, topLevel); renderVariable(valueParameter, includeName, builder, topLevel);
boolean withDefaultValue = debugMode ? valueParameter.declaresDefaultValue() : valueParameter.hasDefaultValue(); boolean withDefaultValue = renderDefaultValues && (debugMode ? valueParameter.declaresDefaultValue() : valueParameter.hasDefaultValue());
if (withDefaultValue) { if (withDefaultValue) {
builder.append(" = ..."); builder.append(" = ...");
} }
@@ -55,6 +55,7 @@ import static org.jetbrains.jet.lang.psi.PsiPackage.JetPsiFactory;
public abstract class OverrideImplementMethodsHandler implements LanguageCodeInsightActionHandler { public abstract class OverrideImplementMethodsHandler implements LanguageCodeInsightActionHandler {
private static final DescriptorRenderer OVERRIDE_RENDERER = new DescriptorRendererBuilder() private static final DescriptorRenderer OVERRIDE_RENDERER = new DescriptorRendererBuilder()
.setRenderDefaultValues(false)
.setModifiers(DescriptorRenderer.Modifier.OVERRIDE) .setModifiers(DescriptorRenderer.Modifier.OVERRIDE)
.setWithDefinedIn(false) .setWithDefinedIn(false)
.setShortNames(false) .setShortNames(false)
@@ -0,0 +1,7 @@
trait T {
fun foo(a:Int = 1)
}
class C : T {
<caret>
}
@@ -0,0 +1,9 @@
trait T {
fun foo(a:Int = 1)
}
class C : T {
override fun foo(a: Int) {
<selection><caret>throw UnsupportedOperationException()</selection>
}
}
@@ -71,6 +71,10 @@ public final class OverrideImplementTest extends AbstractOverrideImplementTest {
doImplementFileTest(); doImplementFileTest();
} }
public void testDefaultValues() {
doImplementFileTest();
}
public void testRespectCaretPosition() { public void testRespectCaretPosition() {
doMultiImplementFileTest(); doMultiImplementFileTest();
} }