From dda15f75059eb8bdf8f043674eb92806bdf51348 Mon Sep 17 00:00:00 2001 From: Evgeny Gerashchenko Date: Fri, 28 Dec 2012 11:37:02 +0400 Subject: [PATCH] Excluded class object names from FQ name and qualified name. --- .../jetbrains/jet/lang/resolve/DescriptorUtils.java | 6 ++++++ .../jetbrains/jet/renderer/DescriptorRendererImpl.java | 4 +++- .../loadKotlin/class/NamedObjectInClassObject.txt | 2 +- .../testData/loadKotlinCustom/enum/innerEnumBinary.txt | 8 ++++---- .../enum/innerEnumExistingClassObjectBinary.txt | 8 ++++---- .../enum/innerEnumExistingClassObjectSource.txt | 10 +++++----- .../testData/loadKotlinCustom/enum/innerEnumSource.txt | 10 +++++----- compiler/testData/renderer/Enum.kt | 2 +- 8 files changed, 29 insertions(+), 21 deletions(-) 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 61f03018d9d..d3b21b02dfc 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DescriptorUtils.java @@ -127,6 +127,12 @@ public class DescriptorUtils { throw new IllegalStateException("descriptor is not module descriptor and has null containingDeclaration: " + containingDeclaration); } + if (containingDeclaration instanceof ClassDescriptor && ((ClassDescriptor) containingDeclaration).getKind() == ClassKind.CLASS_OBJECT) { + DeclarationDescriptor classOfClassObject = containingDeclaration.getContainingDeclaration(); + assert classOfClassObject != null; + return getFQName(classOfClassObject).child(descriptor.getName()); + } + return getFQName(containingDeclaration).child(descriptor.getName()); } diff --git a/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java b/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java index 30e699c6d96..19f5316dea0 100644 --- a/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java +++ b/compiler/frontend/src/org/jetbrains/jet/renderer/DescriptorRendererImpl.java @@ -176,7 +176,9 @@ public class DescriptorRendererImpl implements DescriptorRenderer { // for nested classes qualified name should be used DeclarationDescriptor current = klass; do { - qualifiedNameElements.add(current.getName()); + if (((ClassDescriptor) current).getKind() != ClassKind.CLASS_OBJECT) { + qualifiedNameElements.add(current.getName()); + } current = current.getContainingDeclaration(); } while (current instanceof ClassDescriptor); diff --git a/compiler/testData/loadKotlin/class/NamedObjectInClassObject.txt b/compiler/testData/loadKotlin/class/NamedObjectInClassObject.txt index 1786af938d6..65625bfd803 100644 --- a/compiler/testData/loadKotlin/class/NamedObjectInClassObject.txt +++ b/compiler/testData/loadKotlin/class/NamedObjectInClassObject.txt @@ -5,7 +5,7 @@ public final class Outer { public class object { /*primary*/ private constructor () - public final val Obj : test.Outer..Obj + public final val Obj : test.Outer.Obj public object Obj { /*primary*/ private constructor Obj() diff --git a/compiler/testData/loadKotlinCustom/enum/innerEnumBinary.txt b/compiler/testData/loadKotlinCustom/enum/innerEnumBinary.txt index acd82082a7f..8bcabe4bd07 100644 --- a/compiler/testData/loadKotlinCustom/enum/innerEnumBinary.txt +++ b/compiler/testData/loadKotlinCustom/enum/innerEnumBinary.txt @@ -6,16 +6,16 @@ internal final class A { internal class object { private constructor () - internal final enum class E : jet.Enum.E> { + internal final enum class E : jet.Enum { private constructor E() public final override /*1*/ /*fake_override*/ fun name() : jet.String public final override /*1*/ /*fake_override*/ fun ordinal() : jet.Int internal class object { private constructor () - public final val ENTRY : test.A..E - public final fun valueOf(/*0*/ value : jet.String) : test.A..E - public final fun values() : jet.Array.E> + public final val ENTRY : test.A.E + public final fun valueOf(/*0*/ value : jet.String) : test.A.E + public final fun values() : jet.Array } } } diff --git a/compiler/testData/loadKotlinCustom/enum/innerEnumExistingClassObjectBinary.txt b/compiler/testData/loadKotlinCustom/enum/innerEnumExistingClassObjectBinary.txt index acd82082a7f..8bcabe4bd07 100644 --- a/compiler/testData/loadKotlinCustom/enum/innerEnumExistingClassObjectBinary.txt +++ b/compiler/testData/loadKotlinCustom/enum/innerEnumExistingClassObjectBinary.txt @@ -6,16 +6,16 @@ internal final class A { internal class object { private constructor () - internal final enum class E : jet.Enum.E> { + internal final enum class E : jet.Enum { private constructor E() public final override /*1*/ /*fake_override*/ fun name() : jet.String public final override /*1*/ /*fake_override*/ fun ordinal() : jet.Int internal class object { private constructor () - public final val ENTRY : test.A..E - public final fun valueOf(/*0*/ value : jet.String) : test.A..E - public final fun values() : jet.Array.E> + public final val ENTRY : test.A.E + public final fun valueOf(/*0*/ value : jet.String) : test.A.E + public final fun values() : jet.Array } } } diff --git a/compiler/testData/loadKotlinCustom/enum/innerEnumExistingClassObjectSource.txt b/compiler/testData/loadKotlinCustom/enum/innerEnumExistingClassObjectSource.txt index 15ce1758c65..93d82e05870 100644 --- a/compiler/testData/loadKotlinCustom/enum/innerEnumExistingClassObjectSource.txt +++ b/compiler/testData/loadKotlinCustom/enum/innerEnumExistingClassObjectSource.txt @@ -6,18 +6,18 @@ internal final class A { internal class object { /*primary*/ private constructor () - internal final enum class E : jet.Enum.E> { + internal final enum class E : jet.Enum { /*primary*/ private constructor E() public final override /*1*/ /*fake_override*/ fun name() : jet.String public final override /*1*/ /*fake_override*/ fun ordinal() : jet.Int internal class object { /*primary*/ private constructor () - public final val ENTRY : test.A..E - public final fun valueOf(/*0*/ value : jet.String) : test.A..E - public final fun values() : jet.Array.E> + public final val ENTRY : test.A.E + public final fun valueOf(/*0*/ value : jet.String) : test.A.E + public final fun values() : jet.Array - private enum entry ENTRY : test.A..E { + private enum entry ENTRY : test.A.E { /*primary*/ private constructor ENTRY() public final override /*1*/ /*fake_override*/ fun name() : jet.String public final override /*1*/ /*fake_override*/ fun ordinal() : jet.Int diff --git a/compiler/testData/loadKotlinCustom/enum/innerEnumSource.txt b/compiler/testData/loadKotlinCustom/enum/innerEnumSource.txt index a867a9be620..d8a30d65096 100644 --- a/compiler/testData/loadKotlinCustom/enum/innerEnumSource.txt +++ b/compiler/testData/loadKotlinCustom/enum/innerEnumSource.txt @@ -6,18 +6,18 @@ internal final class A { public class object { /*primary*/ private constructor () - internal final enum class E : jet.Enum.E> { + internal final enum class E : jet.Enum { /*primary*/ private constructor E() public final override /*1*/ /*fake_override*/ fun name() : jet.String public final override /*1*/ /*fake_override*/ fun ordinal() : jet.Int internal class object { /*primary*/ private constructor () - public final val ENTRY : test.A..E - public final fun valueOf(/*0*/ value : jet.String) : test.A..E - public final fun values() : jet.Array.E> + public final val ENTRY : test.A.E + public final fun valueOf(/*0*/ value : jet.String) : test.A.E + public final fun values() : jet.Array - private enum entry ENTRY : test.A..E { + private enum entry ENTRY : test.A.E { /*primary*/ private constructor ENTRY() public final override /*1*/ /*fake_override*/ fun name() : jet.String public final override /*1*/ /*fake_override*/ fun ordinal() : jet.Int diff --git a/compiler/testData/renderer/Enum.kt b/compiler/testData/renderer/Enum.kt index 54b4e5cda45..8e0bb9daa2e 100644 --- a/compiler/testData/renderer/Enum.kt +++ b/compiler/testData/renderer/Enum.kt @@ -9,5 +9,5 @@ private enum class TheEnum(val rgb : Int) { //private constructor TheEnum(rgb : jet.Int) defined in rendererTest.TheEnum //value-parameter val rgb : jet.Int defined in rendererTest.TheEnum. //private enum entry VAL1 : rendererTest.TheEnum defined in rendererTest.TheEnum. -//private constructor VAL1() defined in rendererTest.TheEnum..VAL1 +//private constructor VAL1() defined in rendererTest.TheEnum.VAL1 //public final val VAL1 : rendererTest.TheEnum defined in rendererTest.TheEnum. \ No newline at end of file