Declaration providers and resolve session are protected by a storage manager

This commit is contained in:
Andrey Breslav
2013-01-28 21:37:33 +04:00
parent 222c237cbc
commit c2822fdad7
12 changed files with 147 additions and 108 deletions
@@ -40,6 +40,7 @@ import org.jetbrains.jet.lang.descriptors.CallableDescriptor;
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
import org.jetbrains.jet.lang.psi.*;
import org.jetbrains.jet.lang.resolve.lazy.FileBasedDeclarationProviderFactory;
import org.jetbrains.jet.lang.resolve.lazy.LockBasedStorageManager;
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
import org.jetbrains.jet.lang.resolve.name.FqName;
import org.jetbrains.jet.lang.resolve.name.Name;
@@ -198,7 +199,8 @@ public class JetSourceNavigationHelper {
}
Project project = decompiledDeclaration.getProject();
FileBasedDeclarationProviderFactory providerFactory = new FileBasedDeclarationProviderFactory(getContainingFiles(candidates),
LockBasedStorageManager storageManager = new LockBasedStorageManager();
FileBasedDeclarationProviderFactory providerFactory = new FileBasedDeclarationProviderFactory(storageManager, getContainingFiles(candidates),
new Predicate<FqName>() {
@Override
public boolean apply(@Nullable FqName fqName) {
@@ -207,6 +209,7 @@ public class JetSourceNavigationHelper {
});
ResolveSession resolveSession = new ResolveSession(
project,
storageManager,
new ModuleDescriptor(Name.special("<library module>")),
DefaultModuleConfiguration.createStandardConfiguration(project),
providerFactory);
@@ -19,10 +19,7 @@ package org.jetbrains.jet.plugin.stubindex.resolve;
import com.intellij.openapi.project.Project;
import com.intellij.psi.search.GlobalSearchScope;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.lang.resolve.lazy.ClassMemberDeclarationProvider;
import org.jetbrains.jet.lang.resolve.lazy.DeclarationProviderFactory;
import org.jetbrains.jet.lang.resolve.lazy.PackageMemberDeclarationProvider;
import org.jetbrains.jet.lang.resolve.lazy.PsiBasedClassMemberDeclarationProvider;
import org.jetbrains.jet.lang.resolve.lazy.*;
import org.jetbrains.jet.lang.resolve.lazy.data.JetClassLikeInfo;
import org.jetbrains.jet.lang.resolve.name.FqName;
@@ -30,16 +27,18 @@ public class StubDeclarationProviderFactory implements DeclarationProviderFactor
private final Project project;
private final GlobalSearchScope searchScope;
private final StorageManager storageManager;
public StubDeclarationProviderFactory(@NotNull Project project, @NotNull GlobalSearchScope scope) {
public StubDeclarationProviderFactory(@NotNull Project project, @NotNull GlobalSearchScope scope, @NotNull StorageManager manager) {
this.project = project;
searchScope = scope;
storageManager = manager;
}
@NotNull
@Override
public ClassMemberDeclarationProvider getClassMemberDeclarationProvider(@NotNull JetClassLikeInfo classLikeInfo) {
return new PsiBasedClassMemberDeclarationProvider(classLikeInfo);
return new PsiBasedClassMemberDeclarationProvider(storageManager, classLikeInfo);
}
@Override