diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/lang/BuiltinsNamespaceDescriptorImpl.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/lang/BuiltinsNamespaceDescriptorImpl.java index 56f3e17603c..4317f5d8915 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/lang/BuiltinsNamespaceDescriptorImpl.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/lang/BuiltinsNamespaceDescriptorImpl.java @@ -1,5 +1,6 @@ package org.jetbrains.jet.lang.types.lang; +import com.intellij.openapi.util.Computable; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.descriptors.serialization.*; @@ -11,9 +12,7 @@ import org.jetbrains.jet.lang.descriptors.NamespaceDescriptor; import org.jetbrains.jet.lang.descriptors.ReceiverParameterDescriptor; import org.jetbrains.jet.lang.descriptors.annotations.AnnotationDescriptor; import org.jetbrains.jet.lang.descriptors.impl.AbstractNamespaceDescriptorImpl; -import org.jetbrains.jet.lang.resolve.lazy.storage.LockBasedStorageManager; import org.jetbrains.jet.lang.resolve.lazy.storage.NotNullLazyValue; -import org.jetbrains.jet.lang.resolve.lazy.storage.NotNullLazyValueImpl; import org.jetbrains.jet.lang.resolve.lazy.storage.StorageManager; import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.Name; @@ -33,10 +32,9 @@ class BuiltinsNamespaceDescriptorImpl extends AbstractNamespaceDescriptorImpl { private final DeserializedPackageMemberScope members; private final NameResolver nameResolver; - public BuiltinsNamespaceDescriptorImpl(@NotNull NamespaceDescriptor containingDeclaration) { + public BuiltinsNamespaceDescriptorImpl(@NotNull final StorageManager storageManager, @NotNull NamespaceDescriptor containingDeclaration) { super(containingDeclaration, Collections.emptyList(), KotlinBuiltIns.BUILT_INS_PACKAGE_NAME); - StorageManager storageManager = new LockBasedStorageManager(); try { nameResolver = NameSerializationUtil.deserializeNameResolver(getStream(BuiltInsSerializationUtil.getNameTableFilePath(this))); @@ -99,10 +97,9 @@ class BuiltinsNamespaceDescriptorImpl extends AbstractNamespaceDescriptorImpl { DescriptorDeserializer.create(storageManager, this, nameResolver, classResolver, AnnotationDeserializer.UNSUPPORTED), loadCallables(), classResolver ) { - private final NotNullLazyValue> classNames = new NotNullLazyValueImpl>() { - @NotNull + private final NotNullLazyValue> classNames = storageManager.createLazyValue(new Computable>() { @Override - protected Collection doCompute() { + public Collection compute() { InputStream namesStream = getStream(BuiltInsSerializationUtil.getClassNamesFilePath(BuiltinsNamespaceDescriptorImpl.this)); List result = new ArrayList(); @@ -120,7 +117,7 @@ class BuiltinsNamespaceDescriptorImpl extends AbstractNamespaceDescriptorImpl { } return result; } - }; + }); @NotNull @Override diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/lang/KotlinBuiltIns.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/lang/KotlinBuiltIns.java index 3301f5df3e8..21b85be0c39 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/lang/KotlinBuiltIns.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/lang/KotlinBuiltIns.java @@ -19,7 +19,6 @@ package org.jetbrains.jet.lang.types.lang; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Lists; import com.intellij.openapi.application.ApplicationManager; -import com.intellij.openapi.project.Project; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.StandardFileSystems; import com.intellij.util.PathUtil; @@ -35,7 +34,7 @@ import org.jetbrains.jet.lang.descriptors.impl.NamespaceDescriptorImpl; import org.jetbrains.jet.lang.descriptors.impl.ValueParameterDescriptorImpl; import org.jetbrains.jet.lang.psi.JetPsiUtil; import org.jetbrains.jet.lang.resolve.DescriptorUtils; -import org.jetbrains.jet.lang.resolve.lazy.KotlinCodeAnalyzer; +import org.jetbrains.jet.lang.resolve.lazy.storage.LockBasedStorageManager; import org.jetbrains.jet.lang.resolve.name.FqName; import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.resolve.scopes.JetScope; @@ -47,8 +46,6 @@ import org.jetbrains.jet.utils.ExceptionUtils; import java.io.File; import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; import java.net.MalformedURLException; import java.net.URL; import java.util.*; @@ -183,7 +180,7 @@ public class KotlinBuiltIns { module.setRootNamespace(rootNamespace); - rootNamespace.getMemberScope().addNamespace(new BuiltinsNamespaceDescriptorImpl(rootNamespace)); + rootNamespace.getMemberScope().addNamespace(new BuiltinsNamespaceDescriptorImpl(new LockBasedStorageManager(), rootNamespace)); rootNamespace.getMemberScope().changeLockLevel(WritableScope.LockLevel.READING); }