diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/MutableClassDescriptorLite.java b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/MutableClassDescriptorLite.java index 61df63aa3fd..08b98c5d1af 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/MutableClassDescriptorLite.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/MutableClassDescriptorLite.java @@ -91,23 +91,6 @@ public abstract class MutableClassDescriptorLite extends ClassDescriptorBase { return this; } - private static boolean isStatic(ClassDescriptor declarationClassDescriptor) { - if (declarationClassDescriptor.getKind() == ClassKind.ENUM_CLASS) { - return true; - } - DeclarationDescriptor containingDescriptor = declarationClassDescriptor.getContainingDeclaration(); - if (containingDescriptor instanceof NamespaceDescriptor) { - return true; - } - else if (containingDescriptor instanceof ClassDescriptor) { - ClassDescriptor containingClassDescriptor = (ClassDescriptor) containingDescriptor; - return containingClassDescriptor.getKind().isObject(); - } - else { - return false; - } - } - @NotNull @Override public TypeConstructor getTypeConstructor() { @@ -294,7 +277,7 @@ public abstract class MutableClassDescriptorLite extends ClassDescriptorBase { @Override public ClassObjectStatus setClassObjectDescriptor(@NotNull MutableClassDescriptorLite classObjectDescriptor) { - if (getKind().isObject()) { + if (getKind().isObject() || isInner()) { return ClassObjectStatus.NOT_ALLOWED; } @@ -302,10 +285,6 @@ public abstract class MutableClassDescriptorLite extends ClassDescriptorBase { return ClassObjectStatus.DUPLICATE; } - if (!isStatic(MutableClassDescriptorLite.this)) { - return ClassObjectStatus.NOT_ALLOWED; - } - assert classObjectDescriptor.getKind() == ClassKind.CLASS_OBJECT; MutableClassDescriptorLite.this.classObjectDescriptor = classObjectDescriptor; diff --git a/compiler/testData/diagnostics/tests/InnerClassClassObject.kt b/compiler/testData/diagnostics/tests/InnerClassClassObject.kt index 39ff4413733..e6c057f600d 100644 --- a/compiler/testData/diagnostics/tests/InnerClassClassObject.kt +++ b/compiler/testData/diagnostics/tests/InnerClassClassObject.kt @@ -1,7 +1,7 @@ // http://youtrack.jetbrains.net/issue/KT-449 class A { - class B { + inner class B { class object { } } } @@ -18,3 +18,8 @@ class B { } } +class C { + class D { + class object { } + } +}