diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/ForceResolveUtil.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/ForceResolveUtil.java index c2ee69a0ebe..36d706da72e 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/ForceResolveUtil.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/ForceResolveUtil.java @@ -18,6 +18,7 @@ package org.jetbrains.jet.lang.resolve.lazy; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; +import org.jetbrains.jet.lang.descriptors.annotations.Annotations; import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.lang.types.TypeConstructor; @@ -38,8 +39,16 @@ public class ForceResolveUtil { } public static void forceResolveAllContents(@NotNull TypeConstructor typeConstructor) { - if (typeConstructor instanceof LazyEntity) { - LazyEntity lazyConstructor = (LazyEntity) typeConstructor; + doForceResolveAllContents(typeConstructor); + } + + public static void forceResolveAllContents(@NotNull Annotations annotations) { + doForceResolveAllContents(annotations); + } + + private static void doForceResolveAllContents(Object object) { + if (object instanceof LazyEntity) { + LazyEntity lazyConstructor = (LazyEntity) object; lazyConstructor.forceResolveAllContents(); } } 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 55ff4757354..748e74d4455 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 @@ -319,7 +319,7 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements LazyEnti @Override public void forceResolveAllContents() { - getAnnotations(); + ForceResolveUtil.forceResolveAllContents(getAnnotations()); getClassObjectDescriptor(); getClassObjectType(); getConstructors(); @@ -460,7 +460,7 @@ public class LazyClassDescriptor extends ClassDescriptorBase implements LazyEnti @Override public void forceResolveAllContents() { - getAnnotations(); + ForceResolveUtil.forceResolveAllContents(getAnnotations()); getSupertypes(); getParameters(); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyTypeParameterDescriptor.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyTypeParameterDescriptor.java index 54af3a89c63..11d8e66b4b4 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyTypeParameterDescriptor.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyTypeParameterDescriptor.java @@ -23,6 +23,7 @@ import org.jetbrains.jet.lang.descriptors.TypeParameterDescriptor; import org.jetbrains.jet.lang.descriptors.impl.AbstractLazyTypeParameterDescriptor; import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.resolve.BindingContext; +import org.jetbrains.jet.lang.resolve.lazy.ForceResolveUtil; import org.jetbrains.jet.lang.resolve.lazy.LazyEntity; import org.jetbrains.jet.lang.resolve.lazy.ResolveSession; import org.jetbrains.jet.lang.resolve.lazy.ResolveSessionUtils; @@ -113,7 +114,7 @@ public class LazyTypeParameterDescriptor extends AbstractLazyTypeParameterDescri @Override public void forceResolveAllContents() { - getAnnotations(); + ForceResolveUtil.forceResolveAllContents(getAnnotations()); getClassObjectType(); getContainingDeclaration(); getDefaultType(); diff --git a/idea/src/org/jetbrains/jet/plugin/project/ResolveElementCache.java b/idea/src/org/jetbrains/jet/plugin/project/ResolveElementCache.java index f780005a906..442a8d8d33c 100644 --- a/idea/src/org/jetbrains/jet/plugin/project/ResolveElementCache.java +++ b/idea/src/org/jetbrains/jet/plugin/project/ResolveElementCache.java @@ -29,23 +29,19 @@ import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.di.InjectorForBodyResolve; import org.jetbrains.jet.lang.descriptors.*; import org.jetbrains.jet.lang.descriptors.annotations.Annotated; -import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor; import org.jetbrains.jet.lang.descriptors.impl.MutableClassDescriptor; import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.resolve.*; import org.jetbrains.jet.lang.resolve.calls.autocasts.DataFlowInfo; -import org.jetbrains.jet.lang.resolve.lazy.KotlinCodeAnalyzer; -import org.jetbrains.jet.lang.resolve.lazy.LazyDescriptor; -import org.jetbrains.jet.lang.resolve.lazy.ResolveSession; -import org.jetbrains.jet.lang.resolve.lazy.ScopeProvider; +import org.jetbrains.jet.lang.resolve.lazy.*; import org.jetbrains.jet.lang.resolve.lazy.descriptors.LazyClassDescriptor; import org.jetbrains.jet.lang.resolve.lazy.descriptors.LazyPackageDescriptor; -import org.jetbrains.jet.storage.LazyResolveStorageManager; import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.lang.resolve.scopes.WritableScope; import org.jetbrains.jet.lang.types.TypeConstructor; +import org.jetbrains.jet.storage.LazyResolveStorageManager; import org.jetbrains.jet.storage.MemoizedFunctionToNotNull; import java.util.Collection; @@ -206,8 +202,8 @@ public class ResolveElementCache { TypeConstructor constructor = ((ClassDescriptor) descriptor).getTypeConstructor(); for (TypeParameterDescriptor parameterDescriptor : constructor.getParameters()) { - LazyDescriptor lazyDescriptor = (LazyDescriptor) parameterDescriptor; - lazyDescriptor.forceResolveAllContents(); + LazyEntity lazyEntity = (LazyEntity) parameterDescriptor; + lazyEntity.forceResolveAllContents(); } } @@ -216,18 +212,15 @@ public class ResolveElementCache { if (declaration != null) { Annotated descriptor = analyzer.resolveToDescriptor(declaration); - // Activate annotation resolving - for (AnnotationDescriptor annotationDescriptor : descriptor.getAnnotations()) { - // do nothing, all we need is iteration - } + ForceResolveUtil.forceResolveAllContents(descriptor.getAnnotations()); } } private static void typeParameterAdditionalResolve(KotlinCodeAnalyzer analyzer, JetTypeParameter typeParameter) { DeclarationDescriptor descriptor = analyzer.resolveToDescriptor(typeParameter); - assert descriptor instanceof LazyDescriptor; + assert descriptor instanceof LazyEntity; - LazyDescriptor parameterDescriptor = (LazyDescriptor) descriptor; + LazyEntity parameterDescriptor = (LazyEntity) descriptor; parameterDescriptor.forceResolveAllContents(); }