Converted DescriptorRenderer, DescriptorRendererImpl and DescriptorRedererBuilder to Kotlin
This commit is contained in:
@@ -1,180 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2015 JetBrains s.r.o.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.renderer;
|
|
||||||
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
import org.jetbrains.kotlin.descriptors.ClassifierDescriptor;
|
|
||||||
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor;
|
|
||||||
import org.jetbrains.kotlin.descriptors.FunctionDescriptor;
|
|
||||||
import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor;
|
|
||||||
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor;
|
|
||||||
import org.jetbrains.kotlin.name.FqNameBase;
|
|
||||||
import org.jetbrains.kotlin.name.Name;
|
|
||||||
import org.jetbrains.kotlin.types.JetType;
|
|
||||||
import org.jetbrains.kotlin.types.TypeProjection;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
public interface DescriptorRenderer extends Renderer<DeclarationDescriptor> {
|
|
||||||
DescriptorRenderer COMPACT_WITH_MODIFIERS = new DescriptorRendererBuilder().setWithDefinedIn(false).build();
|
|
||||||
|
|
||||||
DescriptorRenderer COMPACT = new DescriptorRendererBuilder()
|
|
||||||
.setWithDefinedIn(false)
|
|
||||||
.setModifiers().build();
|
|
||||||
|
|
||||||
DescriptorRenderer COMPACT_WITH_SHORT_TYPES = new DescriptorRendererBuilder()
|
|
||||||
.setModifiers()
|
|
||||||
.setNameShortness(NameShortness.SHORT)
|
|
||||||
.setParameterNameRenderingPolicy(ParameterNameRenderingPolicy.ONLY_NON_SYNTHESIZED).build();
|
|
||||||
|
|
||||||
DescriptorRenderer STARTS_FROM_NAME = new DescriptorRendererBuilder()
|
|
||||||
.setWithDefinedIn(false)
|
|
||||||
.setModifiers()
|
|
||||||
.setStartFromName(true).build();
|
|
||||||
|
|
||||||
DescriptorRenderer ONLY_NAMES_WITH_SHORT_TYPES = new DescriptorRendererBuilder()
|
|
||||||
.setWithDefinedIn(false)
|
|
||||||
.setModifiers()
|
|
||||||
.setNameShortness(NameShortness.SHORT)
|
|
||||||
.setWithoutTypeParameters(true)
|
|
||||||
.setParameterNameRenderingPolicy(ParameterNameRenderingPolicy.NONE)
|
|
||||||
.setReceiverAfterName(true)
|
|
||||||
.setRenderCompanionObjectName(true)
|
|
||||||
.setWithoutSuperTypes(true)
|
|
||||||
.setStartFromName(true).build();
|
|
||||||
|
|
||||||
DescriptorRenderer FQ_NAMES_IN_TYPES = new DescriptorRendererBuilder().build();
|
|
||||||
|
|
||||||
DescriptorRenderer SHORT_NAMES_IN_TYPES = new DescriptorRendererBuilder()
|
|
||||||
.setNameShortness(NameShortness.SHORT)
|
|
||||||
.setParameterNameRenderingPolicy(ParameterNameRenderingPolicy.ONLY_NON_SYNTHESIZED)
|
|
||||||
.build();
|
|
||||||
|
|
||||||
DescriptorRenderer DEBUG_TEXT = new DescriptorRendererBuilder()
|
|
||||||
.setDebugMode(true)
|
|
||||||
.setNameShortness(NameShortness.FULLY_QUALIFIED)
|
|
||||||
.build();
|
|
||||||
|
|
||||||
DescriptorRenderer FLEXIBLE_TYPES_FOR_CODE = new DescriptorRendererBuilder()
|
|
||||||
.setFlexibleTypesForCode(true)
|
|
||||||
.build();
|
|
||||||
|
|
||||||
DescriptorRenderer HTML_COMPACT_WITH_MODIFIERS = new DescriptorRendererBuilder()
|
|
||||||
.setWithDefinedIn(false)
|
|
||||||
.setTextFormat(TextFormat.HTML).build();
|
|
||||||
|
|
||||||
DescriptorRenderer HTML_NAMES_WITH_SHORT_TYPES = new DescriptorRendererBuilder()
|
|
||||||
.setWithDefinedIn(false)
|
|
||||||
.setNameShortness(NameShortness.SHORT)
|
|
||||||
.setRenderCompanionObjectName(true)
|
|
||||||
.setTextFormat(TextFormat.HTML).build();
|
|
||||||
|
|
||||||
DescriptorRenderer HTML = new DescriptorRendererBuilder().setTextFormat(TextFormat.HTML).build();
|
|
||||||
|
|
||||||
DescriptorRenderer HTML_FOR_UNINFERRED_TYPE_PARAMS = new DescriptorRendererBuilder()
|
|
||||||
.setUninferredTypeParameterAsName(true)
|
|
||||||
.setModifiers()
|
|
||||||
.setNameShortness(NameShortness.SHORT)
|
|
||||||
.setTextFormat(TextFormat.HTML).build();
|
|
||||||
|
|
||||||
DescriptorRenderer DEPRECATION = new DescriptorRendererBuilder()
|
|
||||||
.setWithDefinedIn(false)
|
|
||||||
.setModifiers()
|
|
||||||
.setNameShortness(NameShortness.SHORT)
|
|
||||||
.setWithoutTypeParameters(false)
|
|
||||||
.setParameterNameRenderingPolicy(ParameterNameRenderingPolicy.NONE)
|
|
||||||
.setReceiverAfterName(false)
|
|
||||||
.setRenderCompanionObjectName(true)
|
|
||||||
.setRenderAccessors(true)
|
|
||||||
.setWithoutSuperTypes(true)
|
|
||||||
.setRenderDefaultValues(false)
|
|
||||||
.setStartFromName(true).build();
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
String renderType(@NotNull JetType type);
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
String renderTypeArguments(@NotNull List<TypeProjection> typeArguments);
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
String renderClassifierName(@NotNull ClassifierDescriptor klass);
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
String renderAnnotation(@NotNull AnnotationDescriptor annotation);
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
@Override
|
|
||||||
String render(@NotNull DeclarationDescriptor declarationDescriptor);
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
String renderFunctionParameters(@NotNull FunctionDescriptor functionDescriptor);
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
String renderName(@NotNull Name name);
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
String renderFqName(@NotNull FqNameBase fqName);
|
|
||||||
|
|
||||||
enum TextFormat {
|
|
||||||
PLAIN, HTML
|
|
||||||
}
|
|
||||||
|
|
||||||
enum OverrideRenderingPolicy {
|
|
||||||
RENDER_OVERRIDE, RENDER_OPEN, RENDER_OPEN_OVERRIDE
|
|
||||||
}
|
|
||||||
|
|
||||||
enum ParameterNameRenderingPolicy {
|
|
||||||
ALL, ONLY_NON_SYNTHESIZED, NONE
|
|
||||||
}
|
|
||||||
|
|
||||||
enum Modifier {
|
|
||||||
VISIBILITY, MODALITY, OVERRIDE, ANNOTATIONS, INNER, MEMBER_KIND
|
|
||||||
}
|
|
||||||
|
|
||||||
/** @see DefaultValueParameterHandler */
|
|
||||||
interface ValueParametersHandler {
|
|
||||||
void appendBeforeValueParameters(@NotNull FunctionDescriptor function, @NotNull StringBuilder stringBuilder);
|
|
||||||
void appendAfterValueParameters(@NotNull FunctionDescriptor function, @NotNull StringBuilder stringBuilder);
|
|
||||||
|
|
||||||
void appendBeforeValueParameter(@NotNull ValueParameterDescriptor parameter, @NotNull StringBuilder stringBuilder);
|
|
||||||
void appendAfterValueParameter(@NotNull ValueParameterDescriptor parameter, @NotNull StringBuilder stringBuilder);
|
|
||||||
}
|
|
||||||
|
|
||||||
class DefaultValueParameterHandler implements ValueParametersHandler {
|
|
||||||
@Override
|
|
||||||
public void appendBeforeValueParameters(@NotNull FunctionDescriptor function, @NotNull StringBuilder stringBuilder) {
|
|
||||||
stringBuilder.append("(");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void appendAfterValueParameters(@NotNull FunctionDescriptor function, @NotNull StringBuilder stringBuilder) {
|
|
||||||
stringBuilder.append(")");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void appendBeforeValueParameter(@NotNull ValueParameterDescriptor parameter, @NotNull StringBuilder stringBuilder) {
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void appendAfterValueParameter(@NotNull ValueParameterDescriptor parameter, @NotNull StringBuilder stringBuilder) {
|
|
||||||
FunctionDescriptor function = (FunctionDescriptor) parameter.getContainingDeclaration();
|
|
||||||
if (parameter.getIndex() != function.getValueParameters().size() - 1) {
|
|
||||||
stringBuilder.append(", ");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,190 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2015 JetBrains s.r.o.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.renderer
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.descriptors.ClassifierDescriptor
|
||||||
|
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
|
||||||
|
import org.jetbrains.kotlin.descriptors.FunctionDescriptor
|
||||||
|
import org.jetbrains.kotlin.descriptors.ValueParameterDescriptor
|
||||||
|
import org.jetbrains.kotlin.descriptors.annotations.AnnotationDescriptor
|
||||||
|
import org.jetbrains.kotlin.name.FqNameBase
|
||||||
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
import org.jetbrains.kotlin.types.JetType
|
||||||
|
import org.jetbrains.kotlin.types.TypeProjection
|
||||||
|
|
||||||
|
public interface DescriptorRenderer : Renderer<DeclarationDescriptor> {
|
||||||
|
|
||||||
|
public fun renderType(type: JetType): String
|
||||||
|
|
||||||
|
public fun renderTypeArguments(typeArguments: List<TypeProjection>): String
|
||||||
|
|
||||||
|
public fun renderClassifierName(klass: ClassifierDescriptor): String
|
||||||
|
|
||||||
|
public fun renderAnnotation(annotation: AnnotationDescriptor): String
|
||||||
|
|
||||||
|
override fun render(declarationDescriptor: DeclarationDescriptor): String
|
||||||
|
|
||||||
|
public fun renderFunctionParameters(functionDescriptor: FunctionDescriptor): String
|
||||||
|
|
||||||
|
public fun renderName(name: Name): String
|
||||||
|
|
||||||
|
public fun renderFqName(fqName: FqNameBase): String
|
||||||
|
|
||||||
|
public enum class TextFormat {
|
||||||
|
PLAIN,
|
||||||
|
HTML
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum class OverrideRenderingPolicy {
|
||||||
|
RENDER_OVERRIDE,
|
||||||
|
RENDER_OPEN,
|
||||||
|
RENDER_OPEN_OVERRIDE
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum class ParameterNameRenderingPolicy {
|
||||||
|
ALL,
|
||||||
|
ONLY_NON_SYNTHESIZED,
|
||||||
|
NONE
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum class Modifier {
|
||||||
|
VISIBILITY,
|
||||||
|
MODALITY,
|
||||||
|
OVERRIDE,
|
||||||
|
ANNOTATIONS,
|
||||||
|
INNER,
|
||||||
|
MEMBER_KIND
|
||||||
|
}
|
||||||
|
|
||||||
|
/** @see DefaultValueParameterHandler
|
||||||
|
*/
|
||||||
|
public interface ValueParametersHandler {
|
||||||
|
public fun appendBeforeValueParameters(function: FunctionDescriptor, stringBuilder: StringBuilder)
|
||||||
|
public fun appendAfterValueParameters(function: FunctionDescriptor, stringBuilder: StringBuilder)
|
||||||
|
|
||||||
|
public fun appendBeforeValueParameter(parameter: ValueParameterDescriptor, stringBuilder: StringBuilder)
|
||||||
|
public fun appendAfterValueParameter(parameter: ValueParameterDescriptor, stringBuilder: StringBuilder)
|
||||||
|
}
|
||||||
|
|
||||||
|
public class DefaultValueParameterHandler : ValueParametersHandler {
|
||||||
|
override fun appendBeforeValueParameters(function: FunctionDescriptor, stringBuilder: StringBuilder) {
|
||||||
|
stringBuilder.append("(")
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun appendAfterValueParameters(function: FunctionDescriptor, stringBuilder: StringBuilder) {
|
||||||
|
stringBuilder.append(")")
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun appendBeforeValueParameter(parameter: ValueParameterDescriptor, stringBuilder: StringBuilder) {
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun appendAfterValueParameter(parameter: ValueParameterDescriptor, stringBuilder: StringBuilder) {
|
||||||
|
val function = parameter.getContainingDeclaration() as FunctionDescriptor
|
||||||
|
if (parameter.getIndex() != function.getValueParameters().size() - 1) {
|
||||||
|
stringBuilder.append(", ")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
|
public val COMPACT_WITH_MODIFIERS: DescriptorRenderer = DescriptorRendererBuilder()
|
||||||
|
.setWithDefinedIn(false)
|
||||||
|
.build()
|
||||||
|
|
||||||
|
public val COMPACT: DescriptorRenderer = DescriptorRendererBuilder()
|
||||||
|
.setWithDefinedIn(false)
|
||||||
|
.setModifiers()
|
||||||
|
.build()
|
||||||
|
|
||||||
|
public val COMPACT_WITH_SHORT_TYPES: DescriptorRenderer = DescriptorRendererBuilder()
|
||||||
|
.setModifiers()
|
||||||
|
.setNameShortness(NameShortness.SHORT)
|
||||||
|
.setParameterNameRenderingPolicy(ParameterNameRenderingPolicy.ONLY_NON_SYNTHESIZED)
|
||||||
|
.build()
|
||||||
|
|
||||||
|
public val STARTS_FROM_NAME: DescriptorRenderer = DescriptorRendererBuilder()
|
||||||
|
.setWithDefinedIn(false)
|
||||||
|
.setModifiers()
|
||||||
|
.setStartFromName(true)
|
||||||
|
.build()
|
||||||
|
|
||||||
|
public val ONLY_NAMES_WITH_SHORT_TYPES: DescriptorRenderer = DescriptorRendererBuilder()
|
||||||
|
.setWithDefinedIn(false)
|
||||||
|
.setModifiers()
|
||||||
|
.setNameShortness(NameShortness.SHORT)
|
||||||
|
.setWithoutTypeParameters(true)
|
||||||
|
.setParameterNameRenderingPolicy(ParameterNameRenderingPolicy.NONE)
|
||||||
|
.setReceiverAfterName(true)
|
||||||
|
.setRenderCompanionObjectName(true)
|
||||||
|
.setWithoutSuperTypes(true)
|
||||||
|
.setStartFromName(true)
|
||||||
|
.build()
|
||||||
|
|
||||||
|
public val FQ_NAMES_IN_TYPES: DescriptorRenderer = DescriptorRendererBuilder().build()
|
||||||
|
|
||||||
|
public val SHORT_NAMES_IN_TYPES: DescriptorRenderer = DescriptorRendererBuilder()
|
||||||
|
.setNameShortness(NameShortness.SHORT)
|
||||||
|
.setParameterNameRenderingPolicy(ParameterNameRenderingPolicy.ONLY_NON_SYNTHESIZED)
|
||||||
|
.build()
|
||||||
|
|
||||||
|
public val DEBUG_TEXT: DescriptorRenderer = DescriptorRendererBuilder()
|
||||||
|
.setDebugMode(true)
|
||||||
|
.setNameShortness(NameShortness.FULLY_QUALIFIED)
|
||||||
|
.build()
|
||||||
|
|
||||||
|
public val FLEXIBLE_TYPES_FOR_CODE: DescriptorRenderer = DescriptorRendererBuilder()
|
||||||
|
.setFlexibleTypesForCode(true)
|
||||||
|
.build()
|
||||||
|
|
||||||
|
public val HTML_COMPACT_WITH_MODIFIERS: DescriptorRenderer = DescriptorRendererBuilder()
|
||||||
|
.setWithDefinedIn(false)
|
||||||
|
.setTextFormat(TextFormat.HTML)
|
||||||
|
.build()
|
||||||
|
|
||||||
|
public val HTML_NAMES_WITH_SHORT_TYPES: DescriptorRenderer = DescriptorRendererBuilder()
|
||||||
|
.setWithDefinedIn(false)
|
||||||
|
.setNameShortness(NameShortness.SHORT)
|
||||||
|
.setRenderCompanionObjectName(true)
|
||||||
|
.setTextFormat(TextFormat.HTML)
|
||||||
|
.build()
|
||||||
|
|
||||||
|
public val HTML: DescriptorRenderer = DescriptorRendererBuilder()
|
||||||
|
.setTextFormat(TextFormat.HTML)
|
||||||
|
.build()
|
||||||
|
|
||||||
|
public val HTML_FOR_UNINFERRED_TYPE_PARAMS: DescriptorRenderer = DescriptorRendererBuilder()
|
||||||
|
.setUninferredTypeParameterAsName(true)
|
||||||
|
.setModifiers()
|
||||||
|
.setNameShortness(NameShortness.SHORT)
|
||||||
|
.setTextFormat(TextFormat.HTML)
|
||||||
|
.build()
|
||||||
|
|
||||||
|
public val DEPRECATION: DescriptorRenderer = DescriptorRendererBuilder()
|
||||||
|
.setWithDefinedIn(false)
|
||||||
|
.setModifiers()
|
||||||
|
.setNameShortness(NameShortness.SHORT)
|
||||||
|
.setWithoutTypeParameters(false)
|
||||||
|
.setParameterNameRenderingPolicy(ParameterNameRenderingPolicy.NONE)
|
||||||
|
.setReceiverAfterName(false)
|
||||||
|
.setRenderCompanionObjectName(true)
|
||||||
|
.setRenderAccessors(true)
|
||||||
|
.setWithoutSuperTypes(true)
|
||||||
|
.setRenderDefaultValues(false)
|
||||||
|
.setStartFromName(true)
|
||||||
|
.build()
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,260 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2010-2015 JetBrains s.r.o.
|
|
||||||
*
|
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
* you may not use this file except in compliance with the License.
|
|
||||||
* You may obtain a copy of the License at
|
|
||||||
*
|
|
||||||
* http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
*
|
|
||||||
* Unless required by applicable law or agreed to in writing, software
|
|
||||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
* See the License for the specific language governing permissions and
|
|
||||||
* limitations under the License.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.jetbrains.kotlin.renderer;
|
|
||||||
|
|
||||||
import kotlin.KotlinPackage;
|
|
||||||
import kotlin.jvm.functions.Function1;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
import org.jetbrains.kotlin.name.FqName;
|
|
||||||
import org.jetbrains.kotlin.types.JetType;
|
|
||||||
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.EnumSet;
|
|
||||||
import java.util.Set;
|
|
||||||
|
|
||||||
public class DescriptorRendererBuilder {
|
|
||||||
private NameShortness nameShortness = NameShortness.SOURCE_CODE_QUALIFIED;
|
|
||||||
private boolean withDefinedIn = true;
|
|
||||||
private Set<DescriptorRenderer.Modifier> modifiers = EnumSet.allOf(DescriptorRenderer.Modifier.class);
|
|
||||||
private boolean startFromName = false;
|
|
||||||
private boolean debugMode = false;
|
|
||||||
private boolean classWithPrimaryConstructor = false;
|
|
||||||
private boolean verbose = false;
|
|
||||||
private boolean unitReturnType = true;
|
|
||||||
private boolean normalizedVisibilities = false;
|
|
||||||
private boolean showInternalKeyword = true;
|
|
||||||
private boolean prettyFunctionTypes = true;
|
|
||||||
private boolean uninferredTypeParameterAsName = false;
|
|
||||||
private boolean includePropertyConstant = false;
|
|
||||||
private boolean withoutTypeParameters = false;
|
|
||||||
private boolean withoutSuperTypes = false;
|
|
||||||
private Function1<JetType, JetType> typeNormalizer = new Function1<JetType, JetType>() {
|
|
||||||
@Override
|
|
||||||
public JetType invoke(JetType type) {
|
|
||||||
return type;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
private boolean renderDefaultValues = true;
|
|
||||||
private boolean flexibleTypesForCode = false;
|
|
||||||
private boolean secondaryConstructorsAsPrimary = true;
|
|
||||||
private DescriptorRenderer.OverrideRenderingPolicy overrideRenderingPolicy = DescriptorRenderer.OverrideRenderingPolicy.RENDER_OPEN;
|
|
||||||
private DescriptorRenderer.ValueParametersHandler valueParametersHandler = new DescriptorRenderer.DefaultValueParameterHandler();
|
|
||||||
private DescriptorRenderer.TextFormat textFormat = DescriptorRenderer.TextFormat.PLAIN;
|
|
||||||
private DescriptorRenderer.ParameterNameRenderingPolicy parameterNameRenderingPolicy = DescriptorRenderer.ParameterNameRenderingPolicy.ALL;
|
|
||||||
private Collection<FqName> excludedAnnotationClasses = Collections.emptyList();
|
|
||||||
private boolean receiverAfterName = false;
|
|
||||||
private boolean renderCompanionObjectName = false;
|
|
||||||
private boolean renderAccessors = false;
|
|
||||||
|
|
||||||
// See JvmAnnotationNames#ANNOTATIONS_COPIED_TO_TYPES
|
|
||||||
private Collection<FqName> excludedTypeAnnotationClasses = KotlinPackage.setOf(
|
|
||||||
new FqName("org.jetbrains.annotations.ReadOnly"),
|
|
||||||
new FqName("org.jetbrains.annotations.Mutable"),
|
|
||||||
new FqName("org.jetbrains.annotations.NotNull"),
|
|
||||||
new FqName("org.jetbrains.annotations.Nullable")
|
|
||||||
);
|
|
||||||
|
|
||||||
public DescriptorRendererBuilder() {
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public DescriptorRendererBuilder setNameShortness(NameShortness shortness) {
|
|
||||||
this.nameShortness = shortness;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public DescriptorRendererBuilder setWithDefinedIn(boolean withDefinedIn) {
|
|
||||||
this.withDefinedIn = withDefinedIn;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public DescriptorRendererBuilder setModifiers(Set<DescriptorRenderer.Modifier> modifiers) {
|
|
||||||
this.modifiers = modifiers;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public DescriptorRendererBuilder setModifiers(DescriptorRenderer.Modifier... modifiers) {
|
|
||||||
return setModifiers(KotlinPackage.setOf(modifiers));
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public DescriptorRendererBuilder setStartFromName(boolean startFromName) {
|
|
||||||
this.startFromName = startFromName;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public DescriptorRendererBuilder setDebugMode(boolean debugMode) {
|
|
||||||
this.debugMode = debugMode;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public DescriptorRendererBuilder setClassWithPrimaryConstructor(boolean classWithPrimaryConstructor) {
|
|
||||||
this.classWithPrimaryConstructor = classWithPrimaryConstructor;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public DescriptorRendererBuilder setVerbose(boolean verbose) {
|
|
||||||
this.verbose = verbose;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public DescriptorRendererBuilder setUnitReturnType(boolean unitReturnType) {
|
|
||||||
this.unitReturnType = unitReturnType;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public DescriptorRendererBuilder setNormalizedVisibilities(boolean normalizedVisibilities) {
|
|
||||||
this.normalizedVisibilities = normalizedVisibilities;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public DescriptorRendererBuilder setShowInternalKeyword(boolean showInternalKeyword) {
|
|
||||||
this.showInternalKeyword = showInternalKeyword;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public DescriptorRendererBuilder setOverrideRenderingPolicy(@NotNull DescriptorRenderer.OverrideRenderingPolicy overrideRenderingPolicy) {
|
|
||||||
this.overrideRenderingPolicy = overrideRenderingPolicy;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public DescriptorRendererBuilder setValueParametersHandler(@NotNull DescriptorRenderer.ValueParametersHandler valueParametersHandler) {
|
|
||||||
this.valueParametersHandler = valueParametersHandler;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public DescriptorRendererBuilder setTextFormat(@NotNull DescriptorRenderer.TextFormat textFormat) {
|
|
||||||
this.textFormat = textFormat;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public DescriptorRendererBuilder setExcludedAnnotationClasses(@NotNull Collection<FqName> excludedAnnotationClasses) {
|
|
||||||
this.excludedAnnotationClasses = excludedAnnotationClasses;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public DescriptorRendererBuilder setExcludedTypeAnnotationClasses(@NotNull Collection<FqName> excludedTypeAnnotationClasses) {
|
|
||||||
this.excludedTypeAnnotationClasses = excludedTypeAnnotationClasses;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public DescriptorRendererBuilder setPrettyFunctionTypes(boolean prettyFunctionTypes) {
|
|
||||||
this.prettyFunctionTypes = prettyFunctionTypes;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public DescriptorRendererBuilder setUninferredTypeParameterAsName(boolean uninferredTypeParameterAsName) {
|
|
||||||
this.uninferredTypeParameterAsName = uninferredTypeParameterAsName;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public DescriptorRendererBuilder setIncludePropertyConstant(boolean includePropertyConstant) {
|
|
||||||
this.includePropertyConstant = includePropertyConstant;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public DescriptorRendererBuilder setParameterNameRenderingPolicy(@NotNull DescriptorRenderer.ParameterNameRenderingPolicy parameterNameRenderingPolicy) {
|
|
||||||
this.parameterNameRenderingPolicy = parameterNameRenderingPolicy;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public DescriptorRendererBuilder setWithoutTypeParameters(boolean withoutTypeParameters) {
|
|
||||||
this.withoutTypeParameters = withoutTypeParameters;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public DescriptorRendererBuilder setReceiverAfterName(boolean receiverAfterName) {
|
|
||||||
this.receiverAfterName = receiverAfterName;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public DescriptorRendererBuilder setRenderCompanionObjectName(boolean renderCompanionObjectName) {
|
|
||||||
this.renderCompanionObjectName = renderCompanionObjectName;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public DescriptorRendererBuilder setWithoutSuperTypes(boolean withoutSuperTypes) {
|
|
||||||
this.withoutSuperTypes = withoutSuperTypes;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public DescriptorRendererBuilder setRenderDefaultValues(boolean renderDefaultValues) {
|
|
||||||
this.renderDefaultValues = renderDefaultValues;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public DescriptorRendererBuilder setTypeNormalizer(@NotNull Function1<JetType, JetType> typeNormalizer) {
|
|
||||||
this.typeNormalizer = typeNormalizer;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public DescriptorRendererBuilder setFlexibleTypesForCode(boolean flexibleTypesForCode) {
|
|
||||||
this.flexibleTypesForCode = flexibleTypesForCode;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public DescriptorRendererBuilder setSecondaryConstructorsAsPrimary(boolean secondaryConstructorsAsPrimary) {
|
|
||||||
this.secondaryConstructorsAsPrimary = secondaryConstructorsAsPrimary;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public DescriptorRendererBuilder setRenderAccessors(boolean renderAccessors) {
|
|
||||||
this.renderAccessors = renderAccessors;
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
|
|
||||||
@NotNull
|
|
||||||
public DescriptorRenderer build() {
|
|
||||||
return new DescriptorRendererImpl(
|
|
||||||
nameShortness, withDefinedIn, modifiers, startFromName, debugMode, classWithPrimaryConstructor, verbose, unitReturnType,
|
|
||||||
normalizedVisibilities, showInternalKeyword, prettyFunctionTypes, uninferredTypeParameterAsName,
|
|
||||||
overrideRenderingPolicy, valueParametersHandler, textFormat, excludedAnnotationClasses, excludedTypeAnnotationClasses,
|
|
||||||
includePropertyConstant, parameterNameRenderingPolicy, withoutTypeParameters, receiverAfterName, renderCompanionObjectName,
|
|
||||||
withoutSuperTypes, typeNormalizer, renderDefaultValues, flexibleTypesForCode, secondaryConstructorsAsPrimary,
|
|
||||||
renderAccessors
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,212 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2015 JetBrains s.r.o.
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.renderer
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.name.FqName
|
||||||
|
import org.jetbrains.kotlin.types.JetType
|
||||||
|
import java.util.Collections
|
||||||
|
import java.util.EnumSet
|
||||||
|
|
||||||
|
public class DescriptorRendererBuilder {
|
||||||
|
private var nameShortness = NameShortness.SOURCE_CODE_QUALIFIED
|
||||||
|
private var withDefinedIn = true
|
||||||
|
private var modifiers: Set<DescriptorRenderer.Modifier> = EnumSet.allOf(javaClass<DescriptorRenderer.Modifier>())
|
||||||
|
private var startFromName = false
|
||||||
|
private var debugMode = false
|
||||||
|
private var classWithPrimaryConstructor = false
|
||||||
|
private var verbose = false
|
||||||
|
private var unitReturnType = true
|
||||||
|
private var normalizedVisibilities = false
|
||||||
|
private var showInternalKeyword = true
|
||||||
|
private var prettyFunctionTypes = true
|
||||||
|
private var uninferredTypeParameterAsName = false
|
||||||
|
private var includePropertyConstant = false
|
||||||
|
private var withoutTypeParameters = false
|
||||||
|
private var withoutSuperTypes = false
|
||||||
|
private var typeNormalizer: Function1<JetType, JetType> = object : Function1<JetType, JetType> {
|
||||||
|
override fun invoke(type: JetType): JetType {
|
||||||
|
return type
|
||||||
|
}
|
||||||
|
}
|
||||||
|
private var renderDefaultValues = true
|
||||||
|
private var flexibleTypesForCode = false
|
||||||
|
private var secondaryConstructorsAsPrimary = true
|
||||||
|
private var overrideRenderingPolicy: DescriptorRenderer.OverrideRenderingPolicy = DescriptorRenderer.OverrideRenderingPolicy.RENDER_OPEN
|
||||||
|
private var valueParametersHandler: DescriptorRenderer.ValueParametersHandler = DescriptorRenderer.DefaultValueParameterHandler()
|
||||||
|
private var textFormat: DescriptorRenderer.TextFormat = DescriptorRenderer.TextFormat.PLAIN
|
||||||
|
private var parameterNameRenderingPolicy: DescriptorRenderer.ParameterNameRenderingPolicy = DescriptorRenderer.ParameterNameRenderingPolicy.ALL
|
||||||
|
private var excludedAnnotationClasses: Collection<FqName> = emptyList()
|
||||||
|
private var receiverAfterName = false
|
||||||
|
private var renderCompanionObjectName = false
|
||||||
|
private var renderAccessors = false
|
||||||
|
|
||||||
|
// See JvmAnnotationNames#ANNOTATIONS_COPIED_TO_TYPES
|
||||||
|
private var excludedTypeAnnotationClasses: Collection<FqName> = setOf(
|
||||||
|
FqName("org.jetbrains.annotations.ReadOnly"),
|
||||||
|
FqName("org.jetbrains.annotations.Mutable"),
|
||||||
|
FqName("org.jetbrains.annotations.NotNull"),
|
||||||
|
FqName("org.jetbrains.annotations.Nullable"))
|
||||||
|
|
||||||
|
public fun setNameShortness(shortness: NameShortness): DescriptorRendererBuilder {
|
||||||
|
this.nameShortness = shortness
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun setWithDefinedIn(withDefinedIn: Boolean): DescriptorRendererBuilder {
|
||||||
|
this.withDefinedIn = withDefinedIn
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun setModifiers(modifiers: Set<DescriptorRenderer.Modifier>): DescriptorRendererBuilder {
|
||||||
|
this.modifiers = modifiers
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun setModifiers(vararg modifiers: DescriptorRenderer.Modifier): DescriptorRendererBuilder {
|
||||||
|
return setModifiers(setOf(*modifiers))
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun setStartFromName(startFromName: Boolean): DescriptorRendererBuilder {
|
||||||
|
this.startFromName = startFromName
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun setDebugMode(debugMode: Boolean): DescriptorRendererBuilder {
|
||||||
|
this.debugMode = debugMode
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun setClassWithPrimaryConstructor(classWithPrimaryConstructor: Boolean): DescriptorRendererBuilder {
|
||||||
|
this.classWithPrimaryConstructor = classWithPrimaryConstructor
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun setVerbose(verbose: Boolean): DescriptorRendererBuilder {
|
||||||
|
this.verbose = verbose
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun setUnitReturnType(unitReturnType: Boolean): DescriptorRendererBuilder {
|
||||||
|
this.unitReturnType = unitReturnType
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun setNormalizedVisibilities(normalizedVisibilities: Boolean): DescriptorRendererBuilder {
|
||||||
|
this.normalizedVisibilities = normalizedVisibilities
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun setShowInternalKeyword(showInternalKeyword: Boolean): DescriptorRendererBuilder {
|
||||||
|
this.showInternalKeyword = showInternalKeyword
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun setOverrideRenderingPolicy(overrideRenderingPolicy: DescriptorRenderer.OverrideRenderingPolicy): DescriptorRendererBuilder {
|
||||||
|
this.overrideRenderingPolicy = overrideRenderingPolicy
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun setValueParametersHandler(valueParametersHandler: DescriptorRenderer.ValueParametersHandler): DescriptorRendererBuilder {
|
||||||
|
this.valueParametersHandler = valueParametersHandler
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun setTextFormat(textFormat: DescriptorRenderer.TextFormat): DescriptorRendererBuilder {
|
||||||
|
this.textFormat = textFormat
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun setExcludedAnnotationClasses(excludedAnnotationClasses: Collection<FqName>): DescriptorRendererBuilder {
|
||||||
|
this.excludedAnnotationClasses = excludedAnnotationClasses
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun setExcludedTypeAnnotationClasses(excludedTypeAnnotationClasses: Collection<FqName>): DescriptorRendererBuilder {
|
||||||
|
this.excludedTypeAnnotationClasses = excludedTypeAnnotationClasses
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun setPrettyFunctionTypes(prettyFunctionTypes: Boolean): DescriptorRendererBuilder {
|
||||||
|
this.prettyFunctionTypes = prettyFunctionTypes
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun setUninferredTypeParameterAsName(uninferredTypeParameterAsName: Boolean): DescriptorRendererBuilder {
|
||||||
|
this.uninferredTypeParameterAsName = uninferredTypeParameterAsName
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun setIncludePropertyConstant(includePropertyConstant: Boolean): DescriptorRendererBuilder {
|
||||||
|
this.includePropertyConstant = includePropertyConstant
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun setParameterNameRenderingPolicy(parameterNameRenderingPolicy: DescriptorRenderer.ParameterNameRenderingPolicy): DescriptorRendererBuilder {
|
||||||
|
this.parameterNameRenderingPolicy = parameterNameRenderingPolicy
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun setWithoutTypeParameters(withoutTypeParameters: Boolean): DescriptorRendererBuilder {
|
||||||
|
this.withoutTypeParameters = withoutTypeParameters
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun setReceiverAfterName(receiverAfterName: Boolean): DescriptorRendererBuilder {
|
||||||
|
this.receiverAfterName = receiverAfterName
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun setRenderCompanionObjectName(renderCompanionObjectName: Boolean): DescriptorRendererBuilder {
|
||||||
|
this.renderCompanionObjectName = renderCompanionObjectName
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun setWithoutSuperTypes(withoutSuperTypes: Boolean): DescriptorRendererBuilder {
|
||||||
|
this.withoutSuperTypes = withoutSuperTypes
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun setRenderDefaultValues(renderDefaultValues: Boolean): DescriptorRendererBuilder {
|
||||||
|
this.renderDefaultValues = renderDefaultValues
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun setTypeNormalizer(typeNormalizer: Function1<JetType, JetType>): DescriptorRendererBuilder {
|
||||||
|
this.typeNormalizer = typeNormalizer
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun setFlexibleTypesForCode(flexibleTypesForCode: Boolean): DescriptorRendererBuilder {
|
||||||
|
this.flexibleTypesForCode = flexibleTypesForCode
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun setSecondaryConstructorsAsPrimary(secondaryConstructorsAsPrimary: Boolean): DescriptorRendererBuilder {
|
||||||
|
this.secondaryConstructorsAsPrimary = secondaryConstructorsAsPrimary
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun setRenderAccessors(renderAccessors: Boolean): DescriptorRendererBuilder {
|
||||||
|
this.renderAccessors = renderAccessors
|
||||||
|
return this
|
||||||
|
}
|
||||||
|
|
||||||
|
public fun build(): DescriptorRenderer {
|
||||||
|
return DescriptorRendererImpl(nameShortness, withDefinedIn, modifiers, startFromName, debugMode, classWithPrimaryConstructor, verbose, unitReturnType, normalizedVisibilities, showInternalKeyword, prettyFunctionTypes, uninferredTypeParameterAsName, overrideRenderingPolicy, valueParametersHandler, textFormat, excludedAnnotationClasses, excludedTypeAnnotationClasses, includePropertyConstant, parameterNameRenderingPolicy, withoutTypeParameters, receiverAfterName, renderCompanionObjectName, withoutSuperTypes, typeNormalizer, renderDefaultValues, flexibleTypesForCode, secondaryConstructorsAsPrimary, renderAccessors)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user