diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassMemberScope.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassMemberScope.java index 4527c3fed4c..2923182f5a3 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassMemberScope.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/lazy/descriptors/LazyClassMemberScope.java @@ -34,7 +34,6 @@ import org.jetbrains.jet.lang.resolve.scopes.JetScope; import org.jetbrains.jet.lang.types.DeferredType; import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; -import org.jetbrains.jet.storage.NotNullLazyValueImpl; import org.jetbrains.jet.storage.NullableLazyValue; import java.util.Collection; @@ -378,13 +377,14 @@ public class LazyClassMemberScope extends AbstractLazyMemberScope() { - @NotNull - @Override - protected JetType doCompute() { - return thisDescriptor.getDefaultType(); - } - })); + descriptor.setReturnType(DeferredType.create(resolveSession.getTrace(), resolveSession.getStorageManager().createLazyValue( + new Computable() { + @Override + public JetType compute() { + return thisDescriptor.getDefaultType(); + } + }) + )); } @Override diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/DeferredType.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/DeferredType.java index 026d1493348..3417597526a 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/DeferredType.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/DeferredType.java @@ -20,9 +20,9 @@ import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor; import org.jetbrains.jet.lang.resolve.BindingTrace; import org.jetbrains.jet.lang.resolve.scopes.JetScope; -import org.jetbrains.jet.storage.NotNullLazyValueImpl; -import org.jetbrains.jet.util.Box; +import org.jetbrains.jet.storage.NotNullLazyValue; import org.jetbrains.jet.storage.ReenteringLazyValueComputationException; +import org.jetbrains.jet.util.Box; import java.util.List; @@ -30,15 +30,15 @@ import static org.jetbrains.jet.lang.resolve.BindingContext.DEFERRED_TYPE; public class DeferredType implements JetType { - public static DeferredType create(BindingTrace trace, NotNullLazyValueImpl lazyValue) { + public static DeferredType create(BindingTrace trace, NotNullLazyValue lazyValue) { DeferredType deferredType = new DeferredType(lazyValue); trace.record(DEFERRED_TYPE, new Box(deferredType)); return deferredType; } - private final NotNullLazyValueImpl lazyValue; + private final NotNullLazyValue lazyValue; - private DeferredType(NotNullLazyValueImpl lazyValue) { + private DeferredType(NotNullLazyValue lazyValue) { this.lazyValue = lazyValue; } diff --git a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/AbstractLazyTypeParameterDescriptor.java b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/AbstractLazyTypeParameterDescriptor.java index 6a71a32c070..b4fdb6d0c44 100644 --- a/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/AbstractLazyTypeParameterDescriptor.java +++ b/core/descriptors/src/org/jetbrains/jet/lang/descriptors/impl/AbstractLazyTypeParameterDescriptor.java @@ -31,7 +31,6 @@ import org.jetbrains.jet.lang.types.checker.JetTypeChecker; import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns; import org.jetbrains.jet.renderer.DescriptorRenderer; import org.jetbrains.jet.storage.NotNullLazyValue; -import org.jetbrains.jet.storage.NotNullLazyValueImpl; import org.jetbrains.jet.storage.StorageManager; import java.util.Collection; @@ -53,7 +52,7 @@ public abstract class AbstractLazyTypeParameterDescriptor implements TypeParamet private final NotNullLazyValue upperBoundsAsType; public AbstractLazyTypeParameterDescriptor( - @NotNull StorageManager storageManager, + @NotNull final StorageManager storageManager, @NotNull DeclarationDescriptor containingDeclaration, @NotNull Name name, @NotNull Variance variance, @@ -75,7 +74,7 @@ public abstract class AbstractLazyTypeParameterDescriptor implements TypeParamet this.defaultType = storageManager.createLazyValue(new Computable() { @Override public JetType compute() { - return createDefaultType(); + return createDefaultType(storageManager); } }); this.upperBounds = storageManager.createLazyValue(new Computable>() { @@ -197,14 +196,15 @@ public abstract class AbstractLazyTypeParameterDescriptor implements TypeParamet } @NotNull - private JetType createDefaultType() { - return new JetTypeImpl(getTypeConstructor(), new LazyScopeAdapter(new NotNullLazyValueImpl() { - @NotNull - @Override - protected JetScope doCompute() { - return getUpperBoundsAsType().getMemberScope(); - } - })); + private JetType createDefaultType(@NotNull StorageManager storageManager) { + return new JetTypeImpl(getTypeConstructor(), new LazyScopeAdapter(storageManager.createLazyValue( + new Computable() { + @Override + public JetScope compute() { + return getUpperBoundsAsType().getMemberScope(); + } + } + ))); } @Override