From 704726793745d213a126dc91beb1bfc6785bae71 Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Thu, 13 Dec 2012 21:28:30 +0400 Subject: [PATCH] Got rid of all subclasses of DescriptorRenderer but HTML. --- .../jet/renderer/DescriptorRendererImpl.java | 115 +++++++----------- .../AddKotlinSignatureAnnotation.java | 12 +- .../HtmlTabledDescriptorRenderer.java | 12 +- 3 files changed, 49 insertions(+), 90 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java b/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java index fe6a5ae7482..e7a4a2d4d27 100644 --- a/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java +++ b/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java @@ -47,49 +47,13 @@ public class DescriptorRendererImpl implements Renderer { } } - public static final DescriptorRendererImpl COMPACT_WITH_MODIFIERS = new DescriptorRendererImpl(false, null) { - @Override - protected boolean shouldRenderDefinedIn() { - return false; - } - }; - public static final DescriptorRendererImpl COMPACT = new DescriptorRendererImpl(false, null) { - @Override - protected boolean shouldRenderDefinedIn() { - return false; - } - - @Override - protected boolean shouldRenderModifiers() { - return false; - } - }; - public static final DescriptorRendererImpl STARTS_FROM_NAME = new DescriptorRendererImpl(false, null) { - @Override - protected boolean shouldRenderDefinedIn() { - return false; - } - - @Override - protected boolean shouldRenderModifiers() { - return false; - } - - @Override - protected boolean shouldStartsFromName() { - return true; - } - }; - public static final DescriptorRendererImpl TEXT = new DescriptorRendererImpl(false, null); - public static final DescriptorRendererImpl SHORT_NAMES_IN_TYPES = new DescriptorRendererImpl(true, null); - public static final DescriptorRendererImpl DEBUG_TEXT = new DescriptorRendererImpl(false, null) { - @Override - protected boolean hasDefaultValue(ValueParameterDescriptor descriptor) { - // hasDefaultValue() has effects - return descriptor.declaresDefaultValue(); - } - }; - public static final DescriptorRendererImpl HTML = new HtmlDescriptorRendererImpl(false, null); + public static final DescriptorRendererImpl COMPACT_WITH_MODIFIERS = new DescriptorRendererImpl(false, false, true, false, false, null); + public static final DescriptorRendererImpl COMPACT = new DescriptorRendererImpl(false, false, false, false, false, null); + public static final DescriptorRendererImpl STARTS_FROM_NAME = new DescriptorRendererImpl(false, false, false, true, false, null); + public static final DescriptorRendererImpl TEXT = new DescriptorRendererImpl(false, true, true, false, false, null); + public static final DescriptorRendererImpl SHORT_NAMES_IN_TYPES = new DescriptorRendererImpl(true, true, true, false, false, null); + public static final DescriptorRendererImpl DEBUG_TEXT = new DescriptorRendererImpl(false, true, true, false, true, null); + public static final DescriptorRendererImpl HTML = new HtmlDescriptorRendererImpl(false, true, true, false, null); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// protected final DeclarationDescriptorVisitor subVisitor = new RenderDeclarationDescriptorVisitor() { @Override @@ -110,16 +74,37 @@ public class DescriptorRendererImpl implements Renderer { private final RenderDeclarationDescriptorVisitor rootVisitor = new RenderDeclarationDescriptorVisitor(); private final boolean shortNames; + private final boolean withDefinedIn; + private final boolean modifiers; + private final boolean startFromName; + private final boolean debugMode; @Nullable private final ValueParametersHandler handler; - public DescriptorRendererImpl(boolean shortNames, @Nullable ValueParametersHandler handler) { + public DescriptorRendererImpl( + boolean shortNames, + boolean withDefinedIn, + boolean modifiers, + boolean startFromName, + boolean debugMode, + @Nullable ValueParametersHandler handler + ) { this.shortNames = shortNames; + this.withDefinedIn = withDefinedIn; + this.modifiers = modifiers; + this.startFromName = startFromName; this.handler = handler; + this.debugMode = debugMode; } - protected boolean hasDefaultValue(ValueParameterDescriptor descriptor) { - return descriptor.hasDefaultValue(); + private boolean hasDefaultValue(ValueParameterDescriptor descriptor) { + if (debugMode) { + // hasDefaultValue() has effects + return descriptor.declaresDefaultValue(); + } + else { + return descriptor.hasDefaultValue(); + } } protected String renderKeyword(String keyword) { @@ -258,7 +243,7 @@ public class DescriptorRendererImpl implements Renderer { StringBuilder stringBuilder = new StringBuilder(); declarationDescriptor.accept(rootVisitor, stringBuilder); - if (shouldRenderDefinedIn()) { + if (withDefinedIn) { appendDefinedIn(declarationDescriptor, stringBuilder); } return stringBuilder.toString(); @@ -270,18 +255,6 @@ public class DescriptorRendererImpl implements Renderer { return stringBuilder.toString(); } - protected boolean shouldRenderDefinedIn() { - return true; - } - - protected boolean shouldRenderModifiers() { - return true; - } - - protected boolean shouldStartsFromName() { - return false; - } - private void appendDefinedIn(DeclarationDescriptor declarationDescriptor, StringBuilder stringBuilder) { if (declarationDescriptor instanceof ModuleDescriptor) { stringBuilder.append(" is a module"); @@ -323,8 +296,14 @@ public class DescriptorRendererImpl implements Renderer { } public static class HtmlDescriptorRendererImpl extends DescriptorRendererImpl { - public HtmlDescriptorRendererImpl(boolean shortNames, @Nullable ValueParametersHandler handler) { - super(shortNames, handler); + public HtmlDescriptorRendererImpl( + boolean shortNames, + boolean withDefinedIn, + boolean modifiers, + boolean startFromName, + @Nullable ValueParametersHandler handler + ) { + super(shortNames, withDefinedIn, modifiers, startFromName, false, handler); } @Override @@ -390,7 +369,7 @@ public class DescriptorRendererImpl implements Renderer { ) { String typeString = lt() + "no type>"; if (outType != null) { - if (isVar != null && !shouldStartsFromName()) { + if (isVar != null && !startFromName) { builder.append(renderKeyword(isVar ? "var" : "val")).append(" "); } typeString = renderType(outType); @@ -407,7 +386,7 @@ public class DescriptorRendererImpl implements Renderer { @Override public Void visitPropertyDescriptor(PropertyDescriptor descriptor, StringBuilder builder) { - if (!shouldStartsFromName()) { + if (!startFromName) { renderVisibility(descriptor.getVisibility(), builder); renderModality(descriptor.getModality(), builder); } @@ -423,7 +402,7 @@ public class DescriptorRendererImpl implements Renderer { } private void renderVisibility(Visibility visibility, StringBuilder builder) { - if (!shouldRenderModifiers()) return; + if (!modifiers) return; if ("package".equals(visibility.toString())) { builder.append("public/*package*/ "); } @@ -433,7 +412,7 @@ public class DescriptorRendererImpl implements Renderer { } private void renderModality(Modality modality, StringBuilder builder) { - if (!shouldRenderModifiers()) return; + if (!modifiers) return; String keyword = ""; switch (modality) { case FINAL: @@ -451,7 +430,7 @@ public class DescriptorRendererImpl implements Renderer { @Override public Void visitFunctionDescriptor(FunctionDescriptor descriptor, StringBuilder builder) { - if (!shouldStartsFromName()) { + if (!startFromName) { renderVisibility(descriptor.getVisibility(), builder); renderModality(descriptor.getModality(), builder); builder.append(renderKeyword("fun")).append(" "); @@ -594,7 +573,7 @@ public class DescriptorRendererImpl implements Renderer { public void renderClassDescriptor(ClassDescriptor descriptor, StringBuilder builder, String keyword) { boolean isNotClassObject = descriptor.getKind() != ClassKind.CLASS_OBJECT; - if (!shouldStartsFromName()) { + if (!startFromName) { if (isNotClassObject) { renderVisibility(descriptor.getVisibility(), builder); if (descriptor.getKind() != ClassKind.TRAIT && descriptor.getKind() != ClassKind.OBJECT) { @@ -627,7 +606,7 @@ public class DescriptorRendererImpl implements Renderer { } } - protected void renderName(DeclarationDescriptor descriptor, StringBuilder stringBuilder) { + private void renderName(DeclarationDescriptor descriptor, StringBuilder stringBuilder) { stringBuilder.append(escape(DescriptorRendererImpl.this.renderName(descriptor.getName()))); } diff --git a/idea/src/org/jetbrains/jet/plugin/codeInsight/ktSignature/AddKotlinSignatureAnnotation.java b/idea/src/org/jetbrains/jet/plugin/codeInsight/ktSignature/AddKotlinSignatureAnnotation.java index 05612a56f43..906b678a7d8 100644 --- a/idea/src/org/jetbrains/jet/plugin/codeInsight/ktSignature/AddKotlinSignatureAnnotation.java +++ b/idea/src/org/jetbrains/jet/plugin/codeInsight/ktSignature/AddKotlinSignatureAnnotation.java @@ -52,17 +52,7 @@ import static org.jetbrains.jet.plugin.codeInsight.ktSignature.KotlinSignatureUt * @since 16 Aug 2012 */ public class AddKotlinSignatureAnnotation extends BaseIntentionAction implements Iconable { - private static final DescriptorRendererImpl RENDERER = new DescriptorRendererImpl(true, null) { - @Override - protected boolean shouldRenderDefinedIn() { - return false; - } - - @Override - protected boolean shouldRenderModifiers() { - return false; - } - }; + private static final DescriptorRendererImpl RENDERER = new DescriptorRendererImpl(true, false, false, false, false, null); public AddKotlinSignatureAnnotation() { setText(JetBundle.message("add.kotlin.signature.action.text")); diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/HtmlTabledDescriptorRenderer.java b/idea/src/org/jetbrains/jet/plugin/highlighter/HtmlTabledDescriptorRenderer.java index c26d3f42584..e9c4b133913 100644 --- a/idea/src/org/jetbrains/jet/plugin/highlighter/HtmlTabledDescriptorRenderer.java +++ b/idea/src/org/jetbrains/jet/plugin/highlighter/HtmlTabledDescriptorRenderer.java @@ -187,17 +187,7 @@ public class HtmlTabledDescriptorRenderer extends TabledDescriptorRenderer { }; public static final DescriptorRendererImpl DESCRIPTOR_IN_TABLE = - new DescriptorRendererImpl.HtmlDescriptorRendererImpl(false, RENDERER_HANDLER) { - @Override - protected boolean shouldRenderDefinedIn() { - return false; - } - - @Override - protected boolean shouldRenderModifiers() { - return false; - } - }; + new DescriptorRendererImpl.HtmlDescriptorRendererImpl(false, false, false, false, RENDERER_HANDLER); private static void td(StringBuilder builder, String text) { builder.append("
").append(text).append("
");