diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/MutableClassDescriptor.java b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/MutableClassDescriptor.java index d9a993b4155..3e500172016 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/MutableClassDescriptor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/descriptors/MutableClassDescriptor.java @@ -61,6 +61,9 @@ public class MutableClassDescriptor extends MutableDeclarationDescriptor impleme @Override public ClassObjectStatus setClassObjectDescriptor(@NotNull MutableClassDescriptor classObjectDescriptor) { if (this.classObjectDescriptor != null) return ClassObjectStatus.DUPLICATE; + if (!(this.getContainingDeclaration() instanceof NamespaceDescriptor)) { + return ClassObjectStatus.NOT_ALLOWED; + } assert classObjectDescriptor.getKind() == ClassKind.OBJECT; this.classObjectDescriptor = classObjectDescriptor; return ClassObjectStatus.OK; diff --git a/compiler/testData/checkerWithErrorTypes/quick/InnerClassClassObject.jet b/compiler/testData/checkerWithErrorTypes/quick/InnerClassClassObject.jet new file mode 100644 index 00000000000..0d8f5da30f2 --- /dev/null +++ b/compiler/testData/checkerWithErrorTypes/quick/InnerClassClassObject.jet @@ -0,0 +1,7 @@ +// http://youtrack.jetbrains.net/issue/KT-449 + +class A { + class B { + class object { } + } +}