From 909e02898de3628d4509cd3de7bc29516a8007e6 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Thu, 10 May 2012 15:54:41 +0400 Subject: [PATCH] Remove an effect from DeclarationDescriptorImpl.toString() --- .../descriptors/DeclarationDescriptorImpl.java | 2 +- .../jetbrains/jet/resolve/DescriptorRenderer.java | 14 +++++++++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/DeclarationDescriptorImpl.java b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/DeclarationDescriptorImpl.java index b54d9e306da..28703dc5a2f 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/DeclarationDescriptorImpl.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/DeclarationDescriptorImpl.java @@ -68,7 +68,7 @@ public abstract class DeclarationDescriptorImpl extends AnnotatedImpl implements @Override public String toString() { try { - return DescriptorRenderer.TEXT.render(this) + "[" + getClass().getSimpleName() + "@" + Integer.toHexString(System.identityHashCode(this)) + "]"; + return DescriptorRenderer.DEBUG_TEXT.render(this) + "[" + getClass().getSimpleName() + "@" + Integer.toHexString(System.identityHashCode(this)) + "]"; } catch (Throwable e) { // DescriptionRenderer may throw if this is not yet completely initialized // It is very inconvenient while debugging diff --git a/compiler/frontend/src/org/jetbrains/jet/resolve/DescriptorRenderer.java b/compiler/frontend/src/org/jetbrains/jet/resolve/DescriptorRenderer.java index 98283823254..55389a43d94 100644 --- a/compiler/frontend/src/org/jetbrains/jet/resolve/DescriptorRenderer.java +++ b/compiler/frontend/src/org/jetbrains/jet/resolve/DescriptorRenderer.java @@ -46,6 +46,14 @@ public class DescriptorRenderer implements Renderer { public static final DescriptorRenderer TEXT = new DescriptorRenderer(); + public static final DescriptorRenderer DEBUG_TEXT = new DescriptorRenderer() { + @Override + protected boolean hasDefaultValue(ValueParameterDescriptor descriptor) { + // hasDefaultValue() has effects + return descriptor.declaresDefaultValue(); + } + }; + public static final DescriptorRenderer HTML = new DescriptorRenderer() { @Override @@ -79,7 +87,7 @@ public class DescriptorRenderer implements Renderer { @Override public Void visitValueParameterDescriptor(ValueParameterDescriptor descriptor, StringBuilder builder) { super.visitVariableDescriptor(descriptor, builder, true); - if (descriptor.hasDefaultValue()) { + if (hasDefaultValue(descriptor)) { builder.append(" = ..."); } return null; @@ -89,6 +97,10 @@ public class DescriptorRenderer implements Renderer { private DescriptorRenderer() { } + protected boolean hasDefaultValue(ValueParameterDescriptor descriptor) { + return descriptor.hasDefaultValue(); + } + protected String renderKeyword(String keyword) { return keyword; }