Deserialized types rely on storage manager

This commit is contained in:
Andrey Breslav
2013-06-19 16:07:06 +04:00
committed by Alexander Udalov
parent d8e2034c71
commit 113c5994e8
@@ -16,6 +16,7 @@
package org.jetbrains.jet.descriptors.serialization; package org.jetbrains.jet.descriptors.serialization;
import com.intellij.openapi.util.Computable;
import com.intellij.util.Function; import com.intellij.util.Function;
import gnu.trove.TIntObjectHashMap; import gnu.trove.TIntObjectHashMap;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@@ -62,6 +63,8 @@ public class TypeDeserializer {
private final String debugName; private final String debugName;
private final StorageManager storageManager;
public TypeDeserializer( public TypeDeserializer(
@NotNull StorageManager storageManager, @NotNull StorageManager storageManager,
@NotNull TypeDeserializer parent, @NotNull TypeDeserializer parent,
@@ -79,6 +82,7 @@ public class TypeDeserializer {
@NotNull String debugName, @NotNull String debugName,
@NotNull TypeParameterResolver typeParameterResolver @NotNull TypeParameterResolver typeParameterResolver
) { ) {
this.storageManager = storageManager;
this.parent = parent; this.parent = parent;
this.nameResolver = nameResolver; this.nameResolver = nameResolver;
this.classResolver = classResolver; this.classResolver = classResolver;
@@ -205,20 +209,18 @@ public class TypeDeserializer {
this.typeProto = proto; this.typeProto = proto;
this.arguments = typeArguments(proto.getArgumentsList()); this.arguments = typeArguments(proto.getArgumentsList());
this.constructor = new NotNullLazyValueImpl<TypeConstructor>() { this.constructor = storageManager.createLazyValue(new Computable<TypeConstructor>() {
@NotNull
@Override @Override
protected TypeConstructor doCompute() { public TypeConstructor compute() {
return typeConstructor(typeProto); return typeConstructor(typeProto);
} }
}; });
this.memberScope = new NotNullLazyValueImpl<JetScope>() { this.memberScope = storageManager.createLazyValue(new Computable<JetScope>() {
@NotNull
@Override @Override
protected JetScope doCompute() { public JetScope compute() {
return computeMemberScope(); return computeMemberScope();
} }
}; });
} }
@NotNull @NotNull