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;
|
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();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user