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:
+1
-1
@@ -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(" ");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user