From 8f5d469a0cf5e8c04ce58ed3af3c0d72a663afe6 Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Wed, 7 Mar 2012 18:12:48 +0400 Subject: [PATCH] Replaced short names with fully qualified in DescriptorRenderer. --- .../src/org/jetbrains/jet/codegen/NamespaceCodegen.java | 5 +++-- .../org/jetbrains/jet/lang/resolve/DescriptorUtils.java | 4 +++- .../src/org/jetbrains/jet/resolve/DescriptorRenderer.java | 7 +++++-- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/compiler/backend/src/org/jetbrains/jet/codegen/NamespaceCodegen.java b/compiler/backend/src/org/jetbrains/jet/codegen/NamespaceCodegen.java index 6f1c1c255c1..a08afa84ef6 100644 --- a/compiler/backend/src/org/jetbrains/jet/codegen/NamespaceCodegen.java +++ b/compiler/backend/src/org/jetbrains/jet/codegen/NamespaceCodegen.java @@ -21,6 +21,7 @@ import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor; import org.jetbrains.jet.lang.descriptors.PropertyDescriptor; import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.resolve.BindingContext; +import org.jetbrains.jet.lang.resolve.java.JavaDescriptorResolver; import org.jetbrains.jet.lang.resolve.java.JvmAbi; import org.objectweb.asm.MethodVisitor; import org.objectweb.asm.Type; @@ -142,8 +143,8 @@ public class NamespaceCodegen { } String name = fqName.replace('.', '/'); - if(name.startsWith("")) { - name = name.substring("".length() + 1, name.length()); + if (name.startsWith(JavaDescriptorResolver.JAVA_ROOT)) { + name = name.substring(JavaDescriptorResolver.JAVA_ROOT.length() + 1, name.length()); } if (namespace) { name += "/" + JvmAbi.PACKAGE_CLASS; diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java index d4293240231..c426abea885 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java @@ -180,7 +180,9 @@ public class DescriptorUtils { public static String getFQName(DeclarationDescriptor descriptor) { DeclarationDescriptor container = descriptor.getContainingDeclaration(); - if (container != null && !(container instanceof ModuleDescriptor)) { + if (container != null && !(container instanceof ModuleDescriptor) + && !("".equals(container.getName()))) { + // TODO JavaNamespaceDescriptors should be refactored String baseName = getFQName(container); if (!baseName.isEmpty()) return baseName + "." + descriptor.getName(); } diff --git a/compiler/frontend/src/org/jetbrains/jet/resolve/DescriptorRenderer.java b/compiler/frontend/src/org/jetbrains/jet/resolve/DescriptorRenderer.java index b4374517a68..4408ebf311d 100644 --- a/compiler/frontend/src/org/jetbrains/jet/resolve/DescriptorRenderer.java +++ b/compiler/frontend/src/org/jetbrains/jet/resolve/DescriptorRenderer.java @@ -20,11 +20,12 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.diagnostics.Renderer; +import org.jetbrains.jet.lang.resolve.DescriptorUtils; import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverDescriptor; -import org.jetbrains.jet.lang.types.lang.JetStandardClasses; import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.lang.types.TypeProjection; import org.jetbrains.jet.lang.types.Variance; +import org.jetbrains.jet.lang.types.lang.JetStandardClasses; import org.jetbrains.jet.lexer.JetTokens; import java.util.Collection; @@ -109,7 +110,9 @@ public class DescriptorRenderer implements Renderer { private String renderDefaultType(JetType type) { StringBuilder sb = new StringBuilder(); - sb.append(type.getConstructor()); + ClassifierDescriptor cd = type.getConstructor().getDeclarationDescriptor(); + sb.append(cd == null || cd instanceof TypeParameterDescriptor + ? type.getConstructor() : DescriptorUtils.getFQName(cd)); if (!type.getArguments().isEmpty()) { sb.append("<"); appendTypeProjections(sb, type.getArguments());