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" "org.jetbrains.annotations.ReadOnly"
).map { FqName(it) }) ).map { FqName(it) })
.setOverrideRenderingPolicy(DescriptorRenderer.OverrideRenderingPolicy.RENDER_OPEN_OVERRIDE) .setOverrideRenderingPolicy(DescriptorRenderer.OverrideRenderingPolicy.RENDER_OPEN_OVERRIDE)
.setIncludeSynthesizedParameterNames(false) .setParameterNameRenderingPolicy(DescriptorRenderer.ParameterNameRenderingPolicy.NONE)
.setIncludePropertyConstant(false) .setIncludePropertyConstant(false)
.setVerbose(true) .setVerbose(true)
.build() .build()
@@ -39,7 +39,7 @@ public interface DescriptorRenderer extends Renderer<DeclarationDescriptor> {
DescriptorRenderer COMPACT_WITH_SHORT_TYPES = new DescriptorRendererBuilder() DescriptorRenderer COMPACT_WITH_SHORT_TYPES = new DescriptorRendererBuilder()
.setModifiers() .setModifiers()
.setNameShortness(NameShortness.SHORT) .setNameShortness(NameShortness.SHORT)
.setIncludeSynthesizedParameterNames(false).build(); .setParameterNameRenderingPolicy(ParameterNameRenderingPolicy.ONLY_NON_SYNTHESIZED).build();
DescriptorRenderer STARTS_FROM_NAME = new DescriptorRendererBuilder() DescriptorRenderer STARTS_FROM_NAME = new DescriptorRendererBuilder()
.setWithDefinedIn(false) .setWithDefinedIn(false)
@@ -51,7 +51,7 @@ public interface DescriptorRenderer extends Renderer<DeclarationDescriptor> {
.setModifiers() .setModifiers()
.setNameShortness(NameShortness.SHORT) .setNameShortness(NameShortness.SHORT)
.setWithoutTypeParameters(true) .setWithoutTypeParameters(true)
.setWithoutFunctionParameterNames(true) .setParameterNameRenderingPolicy(ParameterNameRenderingPolicy.NONE)
.setReceiverAfterName(true) .setReceiverAfterName(true)
.setRenderCompanionObjectName(true) .setRenderCompanionObjectName(true)
.setWithoutSuperTypes(true) .setWithoutSuperTypes(true)
@@ -59,8 +59,10 @@ public interface DescriptorRenderer extends Renderer<DeclarationDescriptor> {
DescriptorRenderer FQ_NAMES_IN_TYPES = new DescriptorRendererBuilder().build(); DescriptorRenderer FQ_NAMES_IN_TYPES = new DescriptorRendererBuilder().build();
DescriptorRenderer SHORT_NAMES_IN_TYPES = new DescriptorRendererBuilder().setNameShortness( DescriptorRenderer SHORT_NAMES_IN_TYPES = new DescriptorRendererBuilder()
NameShortness.SHORT).setIncludeSynthesizedParameterNames(false).build(); .setNameShortness(NameShortness.SHORT)
.setParameterNameRenderingPolicy(ParameterNameRenderingPolicy.ONLY_NON_SYNTHESIZED)
.build();
DescriptorRenderer DEBUG_TEXT = new DescriptorRendererBuilder() DescriptorRenderer DEBUG_TEXT = new DescriptorRendererBuilder()
.setDebugMode(true) .setDebugMode(true)
@@ -122,6 +124,10 @@ public interface DescriptorRenderer extends Renderer<DeclarationDescriptor> {
RENDER_OVERRIDE, RENDER_OPEN, RENDER_OPEN_OVERRIDE RENDER_OVERRIDE, RENDER_OPEN, RENDER_OPEN_OVERRIDE
} }
enum ParameterNameRenderingPolicy {
ALL, ONLY_NON_SYNTHESIZED, NONE
}
enum Modifier { enum Modifier {
VISIBILITY, MODALITY, OVERRIDE, ANNOTATIONS, INNER, MEMBER_KIND VISIBILITY, MODALITY, OVERRIDE, ANNOTATIONS, INNER, MEMBER_KIND
} }
@@ -41,8 +41,6 @@ public class DescriptorRendererBuilder {
private boolean prettyFunctionTypes = true; private boolean prettyFunctionTypes = true;
private boolean uninferredTypeParameterAsName = false; private boolean uninferredTypeParameterAsName = false;
private boolean includePropertyConstant = false; private boolean includePropertyConstant = false;
private boolean includeSynthesizedParameterNames = true;
private boolean withoutFunctionParameterNames = false;
private boolean withoutTypeParameters = false; private boolean withoutTypeParameters = false;
private boolean withoutSuperTypes = false; private boolean withoutSuperTypes = false;
private Function1<JetType, JetType> typeNormalizer = new Function1<JetType, JetType>() { private Function1<JetType, JetType> typeNormalizer = new Function1<JetType, JetType>() {
@@ -54,14 +52,10 @@ public class DescriptorRendererBuilder {
private boolean renderDefaultValues = true; private boolean renderDefaultValues = true;
private boolean flexibleTypesForCode = false; private boolean flexibleTypesForCode = false;
private boolean secondaryConstructorsAsPrimary = true; private boolean secondaryConstructorsAsPrimary = true;
@NotNull
private DescriptorRenderer.OverrideRenderingPolicy overrideRenderingPolicy = DescriptorRenderer.OverrideRenderingPolicy.RENDER_OPEN; private DescriptorRenderer.OverrideRenderingPolicy overrideRenderingPolicy = DescriptorRenderer.OverrideRenderingPolicy.RENDER_OPEN;
@NotNull
private DescriptorRenderer.ValueParametersHandler valueParametersHandler = new DescriptorRenderer.DefaultValueParameterHandler(); private DescriptorRenderer.ValueParametersHandler valueParametersHandler = new DescriptorRenderer.DefaultValueParameterHandler();
@NotNull
private DescriptorRenderer.TextFormat textFormat = DescriptorRenderer.TextFormat.PLAIN; private DescriptorRenderer.TextFormat textFormat = DescriptorRenderer.TextFormat.PLAIN;
@NotNull private DescriptorRenderer.ParameterNameRenderingPolicy parameterNameRenderingPolicy = DescriptorRenderer.ParameterNameRenderingPolicy.ALL;
private Collection<FqName> excludedAnnotationClasses = Collections.emptyList(); private Collection<FqName> excludedAnnotationClasses = Collections.emptyList();
private boolean receiverAfterName = false; private boolean receiverAfterName = false;
private boolean renderCompanionObjectName = false; private boolean renderCompanionObjectName = false;
@@ -177,8 +171,8 @@ public class DescriptorRendererBuilder {
} }
@NotNull @NotNull
public DescriptorRendererBuilder setIncludeSynthesizedParameterNames(boolean includeSynthesizedParameterNames) { public DescriptorRendererBuilder setParameterNameRenderingPolicy(@NotNull DescriptorRenderer.ParameterNameRenderingPolicy parameterNameRenderingPolicy) {
this.includeSynthesizedParameterNames = includeSynthesizedParameterNames; this.parameterNameRenderingPolicy = parameterNameRenderingPolicy;
return this; return this;
} }
@@ -188,12 +182,6 @@ public class DescriptorRendererBuilder {
return this; return this;
} }
@NotNull
public DescriptorRendererBuilder setWithoutFunctionParameterNames(boolean withoutFunctionParameterNames) {
this.withoutFunctionParameterNames = withoutFunctionParameterNames;
return this;
}
@NotNull @NotNull
public DescriptorRendererBuilder setReceiverAfterName(boolean receiverAfterName) { public DescriptorRendererBuilder setReceiverAfterName(boolean receiverAfterName) {
this.receiverAfterName = receiverAfterName; this.receiverAfterName = receiverAfterName;
@@ -242,9 +230,9 @@ public class DescriptorRendererBuilder {
nameShortness, withDefinedIn, modifiers, startFromName, debugMode, classWithPrimaryConstructor, verbose, unitReturnType, nameShortness, withDefinedIn, modifiers, startFromName, debugMode, classWithPrimaryConstructor, verbose, unitReturnType,
normalizedVisibilities, showInternalKeyword, prettyFunctionTypes, uninferredTypeParameterAsName, normalizedVisibilities, showInternalKeyword, prettyFunctionTypes, uninferredTypeParameterAsName,
overrideRenderingPolicy, valueParametersHandler, textFormat, excludedAnnotationClasses, includePropertyConstant, overrideRenderingPolicy, valueParametersHandler, textFormat, excludedAnnotationClasses, includePropertyConstant,
includeSynthesizedParameterNames, withoutFunctionParameterNames, withoutTypeParameters, receiverAfterName, parameterNameRenderingPolicy, withoutTypeParameters, receiverAfterName, renderCompanionObjectName, withoutSuperTypes,
renderCompanionObjectName, withoutSuperTypes, typeNormalizer, renderDefaultValues, flexibleTypesForCode, typeNormalizer, renderDefaultValues, flexibleTypesForCode, secondaryConstructorsAsPrimary
secondaryConstructorsAsPrimary); );
} }
} }
@@ -60,24 +60,18 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
private final boolean showInternalKeyword; private final boolean showInternalKeyword;
private final boolean prettyFunctionTypes; private final boolean prettyFunctionTypes;
private final boolean uninferredTypeParameterAsName; private final boolean uninferredTypeParameterAsName;
private final boolean includeSynthesizedParameterNames; private final ParameterNameRenderingPolicy parameterNameRenderingPolicy;
private final boolean withoutFunctionParameterNames;
private final boolean withoutTypeParameters; private final boolean withoutTypeParameters;
private final boolean renderCompanionObjectName; private final boolean renderCompanionObjectName;
private final boolean withoutSuperTypes; private final boolean withoutSuperTypes;
private final boolean receiverAfterName; private final boolean receiverAfterName;
private final boolean renderDefaultValues; private final boolean renderDefaultValues;
private final boolean flexibleTypesForCode; private final boolean flexibleTypesForCode;
@NotNull
private final OverrideRenderingPolicy overrideRenderingPolicy; private final OverrideRenderingPolicy overrideRenderingPolicy;
@NotNull
private final ValueParametersHandler handler; private final ValueParametersHandler handler;
@NotNull
private final TextFormat textFormat; private final TextFormat textFormat;
private final boolean includePropertyConstant; private final boolean includePropertyConstant;
private final boolean secondaryConstructorsAsPrimary; private final boolean secondaryConstructorsAsPrimary;
@NotNull
private final Set<FqName> excludedAnnotationClasses; private final Set<FqName> excludedAnnotationClasses;
/* package */ DescriptorRendererImpl( /* package */ DescriptorRendererImpl(
@@ -98,8 +92,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
@NotNull TextFormat textFormat, @NotNull TextFormat textFormat,
@NotNull Collection<FqName> excludedAnnotationClasses, @NotNull Collection<FqName> excludedAnnotationClasses,
boolean includePropertyConstant, boolean includePropertyConstant,
boolean includeSynthesizedParameterNames, @NotNull ParameterNameRenderingPolicy parameterNameRenderingPolicy,
boolean withoutFunctionParameterNames,
boolean withoutTypeParameters, boolean withoutTypeParameters,
boolean receiverAfterName, boolean receiverAfterName,
boolean renderCompanionObjectName, boolean renderCompanionObjectName,
@@ -127,8 +120,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
this.excludedAnnotationClasses = new HashSet<FqName>(excludedAnnotationClasses); this.excludedAnnotationClasses = new HashSet<FqName>(excludedAnnotationClasses);
this.prettyFunctionTypes = prettyFunctionTypes; this.prettyFunctionTypes = prettyFunctionTypes;
this.uninferredTypeParameterAsName = uninferredTypeParameterAsName; this.uninferredTypeParameterAsName = uninferredTypeParameterAsName;
this.includeSynthesizedParameterNames = includeSynthesizedParameterNames; this.parameterNameRenderingPolicy = parameterNameRenderingPolicy;
this.withoutFunctionParameterNames = withoutFunctionParameterNames;
this.withoutTypeParameters = withoutTypeParameters; this.withoutTypeParameters = withoutTypeParameters;
this.receiverAfterName = receiverAfterName; this.receiverAfterName = receiverAfterName;
this.renderCompanionObjectName = renderCompanionObjectName; this.renderCompanionObjectName = renderCompanionObjectName;
@@ -471,7 +463,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
return renderName(cd.getName()); return renderName(cd.getName());
} }
else if (cd instanceof ClassDescriptor) { else if (cd instanceof ClassDescriptor) {
return renderClassifierName((ClassDescriptor) cd); return renderClassifierName(cd);
} }
else { else {
assert cd == null: "Unexpected classifier: " + cd.getClass(); 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) { private void renderValueParameters(@NotNull FunctionDescriptor function, @NotNull StringBuilder builder) {
boolean includeNames = !withoutFunctionParameterNames && boolean includeNames = shouldRenderParameterNames(function);
(includeSynthesizedParameterNames || !function.hasSynthesizedParameterNames());
handler.appendBeforeValueParameters(function, builder); handler.appendBeforeValueParameters(function, builder);
for (ValueParameterDescriptor parameter : function.getValueParameters()) { for (ValueParameterDescriptor parameter : function.getValueParameters()) {
handler.appendBeforeValueParameter(parameter, builder); handler.appendBeforeValueParameter(parameter, builder);
@@ -881,8 +872,26 @@ public class DescriptorRendererImpl implements DescriptorRenderer {
handler.appendAfterValueParameters(function, builder); 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 */ /* 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) { if (topLevel) {
builder.append(renderKeyword("value-parameter")).append(" "); builder.append(renderKeyword("value-parameter")).append(" ");
} }