Deserialized types rely on storage manager
This commit is contained in:
committed by
Alexander Udalov
parent
d8e2034c71
commit
113c5994e8
+10
-8
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user