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;
}
};
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<JetType, JetType> 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);
}
}
@@ -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<JetType, JetType> typeNormalizer
@NotNull Function1<JetType, JetType> 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(" = ...");
}
@@ -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)
@@ -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();
}
public void testDefaultValues() {
doImplementFileTest();
}
public void testRespectCaretPosition() {
doMultiImplementFileTest();
}