KT-4524 Generate implementations fails on functions with default values
#KT-4524 Fixed
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user