diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassDescriptor.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassDescriptor.java index a792f154fc0..af108c803ce 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassDescriptor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassDescriptor.java @@ -77,7 +77,7 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements LazyEnti private final boolean isInner; private final NotNullLazyValue annotations; - private final NullableLazyValue classObjectDescriptor; + private final NullableLazyValue classObjectDescriptor; private final LazyClassMemberScope unsubstitutedMemberScope; @@ -130,9 +130,9 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements LazyEnti return resolveAnnotations(); } }); - this.classObjectDescriptor = storageManager.createNullableLazyValue(new Function0() { + this.classObjectDescriptor = storageManager.createNullableLazyValue(new Function0() { @Override - public ClassDescriptor invoke() { + public ClassDescriptorWithResolutionScopes invoke() { return computeClassObjectDescriptor(); } }); @@ -271,12 +271,12 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements LazyEnti } @Override - public ClassDescriptor getClassObjectDescriptor() { + public ClassDescriptorWithResolutionScopes getClassObjectDescriptor() { return classObjectDescriptor.invoke(); } @Nullable - private ClassDescriptor computeClassObjectDescriptor() { + private ClassDescriptorWithResolutionScopes computeClassObjectDescriptor() { JetClassObject classObject = declarationProvider.getOwnerInfo().getClassObject(); JetClassLikeInfo classObjectInfo = getClassObjectInfo(classObject); diff --git a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/ClassDescriptorWithResolutionScopes.java b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/ClassDescriptorWithResolutionScopes.java index 1a4e561a699..a89d159bb6e 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/ClassDescriptorWithResolutionScopes.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/ClassDescriptorWithResolutionScopes.java @@ -17,6 +17,7 @@ package org.jetbrains.jet.lang.descriptors; import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.ReadOnly; import org.jetbrains.jet.lang.resolve.scopes.JetScope; @@ -32,6 +33,10 @@ public interface ClassDescriptorWithResolutionScopes extends ClassDescriptor { @NotNull JetScope getScopeForInitializerResolution(); + @Nullable + @Override + ClassDescriptorWithResolutionScopes getClassObjectDescriptor(); + @NotNull @ReadOnly Collection getDeclaredCallableMembers(); diff --git a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/MutableClassDescriptor.java b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/MutableClassDescriptor.java index 68dfd20c657..738906a7127 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/MutableClassDescriptor.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/MutableClassDescriptor.java @@ -61,7 +61,12 @@ public class MutableClassDescriptor extends MutableClassDescriptorLite implement scopeForMemberResolution.addLabeledDeclaration(this); } -//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// + @Nullable + @Override + public MutableClassDescriptor getClassObjectDescriptor() { + return (MutableClassDescriptor) super.getClassObjectDescriptor(); + } + //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// public void setPrimaryConstructor(@NotNull ConstructorDescriptor constructorDescriptor) {