Merge two DescriptorRenderer parameters about parameter name rendering

Also disable parameter name rendering completely in
AbstractJvmRuntimeDescriptorLoaderTest because they can't be obtained anyway in
reflection
This commit is contained in:
Alexander Udalov
2015-04-06 22:01:45 +03:00
parent 47e7235e64
commit 4956b24810
4 changed files with 41 additions and 38 deletions
@@ -65,7 +65,7 @@ public abstract class AbstractJvmRuntimeDescriptorLoaderTest : TestCaseWithTmpdi
"org.jetbrains.annotations.ReadOnly"
).map { FqName(it) })
.setOverrideRenderingPolicy(DescriptorRenderer.OverrideRenderingPolicy.RENDER_OPEN_OVERRIDE)
.setIncludeSynthesizedParameterNames(false)
.setParameterNameRenderingPolicy(DescriptorRenderer.ParameterNameRenderingPolicy.NONE)
.setIncludePropertyConstant(false)
.setVerbose(true)
.build()
@@ -39,7 +39,7 @@ public interface DescriptorRenderer extends Renderer<DeclarationDescriptor> {
DescriptorRenderer COMPACT_WITH_SHORT_TYPES = new DescriptorRendererBuilder()
.setModifiers()
.setNameShortness(NameShortness.SHORT)
.setIncludeSynthesizedParameterNames(false).build();
.setParameterNameRenderingPolicy(ParameterNameRenderingPolicy.ONLY_NON_SYNTHESIZED).build();
DescriptorRenderer STARTS_FROM_NAME = new DescriptorRendererBuilder()
.setWithDefinedIn(false)
@@ -51,7 +51,7 @@ public interface DescriptorRenderer extends Renderer<DeclarationDescriptor> {
.setModifiers()
.setNameShortness(NameShortness.SHORT)
.setWithoutTypeParameters(true)
.setWithoutFunctionParameterNames(true)
.setParameterNameRenderingPolicy(ParameterNameRenderingPolicy.NONE)
.setReceiverAfterName(true)
.setRenderCompanionObjectName(true)
.setWithoutSuperTypes(true)
@@ -59,8 +59,10 @@ public interface DescriptorRenderer extends Renderer<DeclarationDescriptor> {
DescriptorRenderer FQ_NAMES_IN_TYPES = new DescriptorRendererBuilder().build();
DescriptorRenderer SHORT_NAMES_IN_TYPES = new DescriptorRendererBuilder().setNameShortness(
NameShortness.SHORT).setIncludeSynthesizedParameterNames(false).build();
DescriptorRenderer SHORT_NAMES_IN_TYPES = new DescriptorRendererBuilder()
.setNameShortness(NameShortness.SHORT)
.setParameterNameRenderingPolicy(ParameterNameRenderingPolicy.ONLY_NON_SYNTHESIZED)
.build();
DescriptorRenderer DEBUG_TEXT = new DescriptorRendererBuilder()
.setDebugMode(true)
@@ -122,6 +124,10 @@ public interface DescriptorRenderer extends Renderer<DeclarationDescriptor> {
RENDER_OVERRIDE, RENDER_OPEN, RENDER_OPEN_OVERRIDE
}
enum ParameterNameRenderingPolicy {
ALL, ONLY_NON_SYNTHESIZED, NONE
}
enum Modifier {
VISIBILITY, MODALITY, OVERRIDE, ANNOTATIONS, INNER, MEMBER_KIND
}
@@ -41,8 +41,6 @@ public class DescriptorRendererBuilder {
private boolean prettyFunctionTypes = true;
private boolean uninferredTypeParameterAsName = false;
private boolean includePropertyConstant = false;
private boolean includeSynthesizedParameterNames = true;
private boolean withoutFunctionParameterNames = false;
private boolean withoutTypeParameters = false;
private boolean withoutSuperTypes = false;
private Function1<JetType, JetType> typeNormalizer = new Function1<JetType, JetType>() {
@@ -54,14 +52,10 @@ public class DescriptorRendererBuilder {
private boolean renderDefaultValues = true;
private boolean flexibleTypesForCode = false;
private boolean secondaryConstructorsAsPrimary = true;
@NotNull
private DescriptorRenderer.OverrideRenderingPolicy overrideRenderingPolicy = DescriptorRenderer.OverrideRenderingPolicy.RENDER_OPEN;
@NotNull
private DescriptorRenderer.ValueParametersHandler valueParametersHandler = new DescriptorRenderer.DefaultValueParameterHandler();
@NotNull
private DescriptorRenderer.TextFormat textFormat = DescriptorRenderer.TextFormat.PLAIN;
@NotNull
private DescriptorRenderer.ParameterNameRenderingPolicy parameterNameRenderingPolicy = DescriptorRenderer.ParameterNameRenderingPolicy.ALL;
private Collection<FqName> excludedAnnotationClasses = Collections.emptyList();
private boolean receiverAfterName = false;
private boolean renderCompanionObjectName = false;
@@ -177,8 +171,8 @@ public class DescriptorRendererBuilder {
}
@NotNull
public DescriptorRendererBuilder setIncludeSynthesizedParameterNames(boolean includeSynthesizedParameterNames) {
this.includeSynthesizedParameterNames = includeSynthesizedParameterNames;
public DescriptorRendererBuilder setParameterNameRenderingPolicy(@NotNull DescriptorRenderer.ParameterNameRenderingPolicy parameterNameRenderingPolicy) {
this.parameterNameRenderingPolicy = parameterNameRenderingPolicy;
return this;
}
@@ -188,12 +182,6 @@ public class DescriptorRendererBuilder {
return this;
}
@NotNull
public DescriptorRendererBuilder setWithoutFunctionParameterNames(boolean withoutFunctionParameterNames) {
this.withoutFunctionParameterNames = withoutFunctionParameterNames;
return this;
}
@NotNull
public DescriptorRendererBuilder setReceiverAfterName(boolean receiverAfterName) {
this.receiverAfterName = receiverAfterName;
@@ -242,9 +230,9 @@ public class DescriptorRendererBuilder {
nameShortness, withDefinedIn, modifiers, startFromName, debugMode, classWithPrimaryConstructor, verbose, unitReturnType,
normalizedVisibilities, showInternalKeyword, prettyFunctionTypes, uninferredTypeParameterAsName,
overrideRenderingPolicy, valueParametersHandler, textFormat, excludedAnnotationClasses, includePropertyConstant,
includeSynthesizedParameterNames, withoutFunctionParameterNames, withoutTypeParameters, receiverAfterName,
renderCompanionObjectName, withoutSuperTypes, typeNormalizer, renderDefaultValues, flexibleTypesForCode,
secondaryConstructorsAsPrimary);
parameterNameRenderingPolicy, withoutTypeParameters, receiverAfterName, renderCompanionObjectName, withoutSuperTypes,
typeNormalizer, renderDefaultValues, flexibleTypesForCode, secondaryConstructorsAsPrimary
);
}
}
@@ -60,24 +60,18 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
private final boolean showInternalKeyword;
private final boolean prettyFunctionTypes;
private final boolean uninferredTypeParameterAsName;
private final boolean includeSynthesizedParameterNames;
private final boolean withoutFunctionParameterNames;
private final ParameterNameRenderingPolicy parameterNameRenderingPolicy;
private final boolean withoutTypeParameters;
private final boolean renderCompanionObjectName;
private final boolean withoutSuperTypes;
private final boolean receiverAfterName;
private final boolean renderDefaultValues;
private final boolean flexibleTypesForCode;
@NotNull
private final OverrideRenderingPolicy overrideRenderingPolicy;
@NotNull
private final ValueParametersHandler handler;
@NotNull
private final TextFormat textFormat;
private final boolean includePropertyConstant;
private final boolean secondaryConstructorsAsPrimary;
@NotNull
private final Set<FqName> excludedAnnotationClasses;
/* package */ DescriptorRendererImpl(
@@ -98,8 +92,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
@NotNull TextFormat textFormat,
@NotNull Collection<FqName> excludedAnnotationClasses,
boolean includePropertyConstant,
boolean includeSynthesizedParameterNames,
boolean withoutFunctionParameterNames,
@NotNull ParameterNameRenderingPolicy parameterNameRenderingPolicy,
boolean withoutTypeParameters,
boolean receiverAfterName,
boolean renderCompanionObjectName,
@@ -127,8 +120,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
this.excludedAnnotationClasses = new HashSet<FqName>(excludedAnnotationClasses);
this.prettyFunctionTypes = prettyFunctionTypes;
this.uninferredTypeParameterAsName = uninferredTypeParameterAsName;
this.includeSynthesizedParameterNames = includeSynthesizedParameterNames;
this.withoutFunctionParameterNames = withoutFunctionParameterNames;
this.parameterNameRenderingPolicy = parameterNameRenderingPolicy;
this.withoutTypeParameters = withoutTypeParameters;
this.receiverAfterName = receiverAfterName;
this.renderCompanionObjectName = renderCompanionObjectName;
@@ -471,7 +463,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
return renderName(cd.getName());
}
else if (cd instanceof ClassDescriptor) {
return renderClassifierName((ClassDescriptor) cd);
return renderClassifierName(cd);
}
else {
assert cd == null: "Unexpected classifier: " + cd.getClass();
@@ -870,8 +862,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
}
private void renderValueParameters(@NotNull FunctionDescriptor function, @NotNull StringBuilder builder) {
boolean includeNames = !withoutFunctionParameterNames &&
(includeSynthesizedParameterNames || !function.hasSynthesizedParameterNames());
boolean includeNames = shouldRenderParameterNames(function);
handler.appendBeforeValueParameters(function, builder);
for (ValueParameterDescriptor parameter : function.getValueParameters()) {
handler.appendBeforeValueParameter(parameter, builder);
@@ -881,8 +872,26 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
handler.appendAfterValueParameters(function, builder);
}
private boolean shouldRenderParameterNames(@NotNull FunctionDescriptor function) {
switch (parameterNameRenderingPolicy) {
case ALL:
return true;
case ONLY_NON_SYNTHESIZED:
return !function.hasSynthesizedParameterNames();
case NONE:
return false;
default:
throw new UnsupportedOperationException(parameterNameRenderingPolicy.toString());
}
}
/* VARIABLES */
private void renderValueParameter(@NotNull ValueParameterDescriptor valueParameter, boolean includeName, @NotNull StringBuilder builder, boolean topLevel) {
private void renderValueParameter(
@NotNull ValueParameterDescriptor valueParameter,
boolean includeName,
@NotNull StringBuilder builder,
boolean topLevel
) {
if (topLevel) {
builder.append(renderKeyword("value-parameter")).append(" ");
}