From aec37a35dc45a28f3b537128561661603b095f31 Mon Sep 17 00:00:00 2001 From: Ilya Ryzhenkov Date: Mon, 20 Apr 2015 17:46:31 +0300 Subject: [PATCH] =?UTF-8?q?Add=20renderAccessors=20flag=20to=20DescriptorR?= =?UTF-8?q?enderer=20to=20render=20property=20accessors=20as=20"setter=20f?= =?UTF-8?q?or=20=E2=80=A6"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../renderer/DescriptorRendererBuilder.java | 11 ++++++-- .../renderer/DescriptorRendererImpl.java | 28 ++++++++++++++++++- 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererBuilder.java b/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererBuilder.java index 0dc40653632..6bebd4f444f 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererBuilder.java +++ b/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererBuilder.java @@ -59,6 +59,7 @@ public class DescriptorRendererBuilder { private Collection excludedAnnotationClasses = Collections.emptyList(); private boolean receiverAfterName = false; private boolean renderCompanionObjectName = false; + private boolean renderAccessors = false; public DescriptorRendererBuilder() { } @@ -224,6 +225,12 @@ public class DescriptorRendererBuilder { return this; } + @NotNull + public DescriptorRendererBuilder setRenderAccessors(boolean renderAccessors) { + this.renderAccessors = renderAccessors; + return this; + } + @NotNull public DescriptorRenderer build() { return new DescriptorRendererImpl( @@ -231,8 +238,8 @@ public class DescriptorRendererBuilder { normalizedVisibilities, showInternalKeyword, prettyFunctionTypes, uninferredTypeParameterAsName, overrideRenderingPolicy, valueParametersHandler, textFormat, excludedAnnotationClasses, includePropertyConstant, parameterNameRenderingPolicy, withoutTypeParameters, receiverAfterName, renderCompanionObjectName, withoutSuperTypes, - typeNormalizer, renderDefaultValues, flexibleTypesForCode, secondaryConstructorsAsPrimary - ); + typeNormalizer, renderDefaultValues, flexibleTypesForCode, secondaryConstructorsAsPrimary, + renderAccessors); } } diff --git a/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.java b/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.java index d265142d3a5..1538602042c 100644 --- a/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.java +++ b/core/descriptors/src/org/jetbrains/kotlin/renderer/DescriptorRendererImpl.java @@ -70,6 +70,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer { private final boolean includePropertyConstant; private final boolean secondaryConstructorsAsPrimary; private final Set excludedAnnotationClasses; + private final boolean renderAccessors; /* package */ DescriptorRendererImpl( NameShortness nameShortness, @@ -97,7 +98,8 @@ public class DescriptorRendererImpl implements DescriptorRenderer { @NotNull Function1 typeNormalizer, boolean renderDefaultValues, boolean flexibleTypesForCode, - boolean secondaryConstructorsAsPrimary + boolean secondaryConstructorsAsPrimary, + boolean renderAccessors ) { this.nameShortness = nameShortness; this.withDefinedIn = withDefinedIn; @@ -114,6 +116,7 @@ public class DescriptorRendererImpl implements DescriptorRenderer { this.textFormat = textFormat; this.includePropertyConstant = includePropertyConstant; this.secondaryConstructorsAsPrimary = secondaryConstructorsAsPrimary; + this.renderAccessors = renderAccessors; this.excludedAnnotationClasses = new HashSet(excludedAnnotationClasses); this.prettyFunctionTypes = prettyFunctionTypes; this.uninferredTypeParameterAsName = uninferredTypeParameterAsName; @@ -1107,6 +1110,29 @@ public class DescriptorRendererImpl implements DescriptorRenderer { return null; } + @Override + public Void visitPropertyGetterDescriptor(PropertyGetterDescriptor descriptor, StringBuilder builder) { + if (renderAccessors) { + builder.append("getter for "); + renderProperty(descriptor.getCorrespondingProperty(), builder); + return null; + } else { + return super.visitPropertyGetterDescriptor(descriptor, builder); + } + + } + + @Override + public Void visitPropertySetterDescriptor(PropertySetterDescriptor descriptor, StringBuilder builder) { + if (renderAccessors) { + builder.append("setter for "); + renderProperty(descriptor.getCorrespondingProperty(), builder); + return null; + } else { + return super.visitPropertySetterDescriptor(descriptor, builder); + } + } + @Override public Void visitFunctionDescriptor(FunctionDescriptor descriptor, StringBuilder builder) { renderFunction(descriptor, builder);