From ed79be6d2df598849d6531d27a1103807b015e27 Mon Sep 17 00:00:00 2001 From: Andrey Breslav Date: Tue, 22 Apr 2014 17:41:22 +0400 Subject: [PATCH] AnalyzerFacade.Setup introduced --- .../resolve/java/AnalyzerFacadeForJVM.java | 6 ++--- .../jet/analyzer/AnalyzerFacade.java | 22 ++++++++++++++++++- .../resolve/DeclarationsCacheProvider.java | 4 +++- .../caches/resolve/KotlinResolveCache.kt | 2 +- .../project/AnalyzerFacadeWithCache.java | 4 +++- .../project/JSAnalyzerFacadeForIDEA.java | 5 ++--- .../run/JetRunConfigurationProducer.java | 4 ++-- 7 files changed, 34 insertions(+), 13 deletions(-) diff --git a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/AnalyzerFacadeForJVM.java b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/AnalyzerFacadeForJVM.java index 8cd03e8d485..12815b10d32 100644 --- a/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/AnalyzerFacadeForJVM.java +++ b/compiler/frontend.java/src/org/jetbrains/jet/lang/resolve/java/AnalyzerFacadeForJVM.java @@ -24,7 +24,6 @@ import com.intellij.psi.PsiFile; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.analyzer.AnalyzeExhaust; import org.jetbrains.jet.analyzer.AnalyzerFacade; -import org.jetbrains.jet.analyzer.AnalyzerFacadeForEverything; import org.jetbrains.jet.context.ContextPackage; import org.jetbrains.jet.context.GlobalContext; import org.jetbrains.jet.context.GlobalContextImpl; @@ -32,7 +31,6 @@ import org.jetbrains.jet.descriptors.serialization.descriptors.MemberFilter; import org.jetbrains.jet.di.InjectorForLazyResolveWithJava; import org.jetbrains.jet.di.InjectorForTopDownAnalyzerForJvm; import org.jetbrains.jet.lang.descriptors.DependencyKind; -import org.jetbrains.jet.lang.descriptors.ModuleDescriptor; import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl; import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.resolve.*; @@ -61,8 +59,8 @@ public enum AnalyzerFacadeForJVM implements AnalyzerFacade { @NotNull @Override - public ResolveSession getLazyResolveSession(@NotNull Project fileProject, @NotNull Collection files) { - return createLazyResolveSession(fileProject, files, new BindingTraceContext(), true); + public Setup createSetup(@NotNull Project fileProject, @NotNull Collection files) { + return new BasicSetup(createLazyResolveSession(fileProject, files, new BindingTraceContext(), true)); } @NotNull diff --git a/compiler/frontend/src/org/jetbrains/jet/analyzer/AnalyzerFacade.java b/compiler/frontend/src/org/jetbrains/jet/analyzer/AnalyzerFacade.java index cc928c8526b..d184bd94b21 100644 --- a/compiler/frontend/src/org/jetbrains/jet/analyzer/AnalyzerFacade.java +++ b/compiler/frontend/src/org/jetbrains/jet/analyzer/AnalyzerFacade.java @@ -25,8 +25,28 @@ import java.util.Collection; public interface AnalyzerFacade { + interface Setup { + @NotNull + ResolveSession getLazyResolveSession(); + } + + class BasicSetup implements Setup { + + private final ResolveSession resolveSession; + + public BasicSetup(@NotNull ResolveSession session) { + resolveSession = session; + } + + @NotNull + @Override + public ResolveSession getLazyResolveSession() { + return resolveSession; + } + } + @NotNull - ResolveSession getLazyResolveSession( + Setup createSetup( @NotNull Project project, @NotNull Collection files ); diff --git a/idea/src/org/jetbrains/jet/plugin/caches/resolve/DeclarationsCacheProvider.java b/idea/src/org/jetbrains/jet/plugin/caches/resolve/DeclarationsCacheProvider.java index 782db5161a8..9eb38ef1b5d 100644 --- a/idea/src/org/jetbrains/jet/plugin/caches/resolve/DeclarationsCacheProvider.java +++ b/idea/src/org/jetbrains/jet/plugin/caches/resolve/DeclarationsCacheProvider.java @@ -24,6 +24,7 @@ import com.intellij.psi.util.CachedValuesManager; import com.intellij.psi.util.PsiModificationTracker; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.jet.analyzer.AnalyzerFacade; import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.resolve.java.JetFilesProvider; import org.jetbrains.jet.lang.resolve.lazy.ResolveSession; @@ -71,7 +72,8 @@ public abstract class DeclarationsCacheProvider { @Override public synchronized Result compute() { Collection files = JetFilesProvider.getInstance(project).allInScope(GlobalSearchScope.allScope(project)); - ResolveSession resolveSession = AnalyzerFacadeProvider.getAnalyzerFacade(platform).getLazyResolveSession(project, files); + AnalyzerFacade facade = AnalyzerFacadeProvider.getAnalyzerFacade(platform); + ResolveSession resolveSession = facade.createSetup(project, files).getLazyResolveSession(); return Result.create(new ResolveSessionForBodies(project, resolveSession), PsiModificationTracker.OUT_OF_CODE_BLOCK_MODIFICATION_COUNT); } } diff --git a/idea/src/org/jetbrains/jet/plugin/caches/resolve/KotlinResolveCache.kt b/idea/src/org/jetbrains/jet/plugin/caches/resolve/KotlinResolveCache.kt index 18af6e85f25..db762938365 100644 --- a/idea/src/org/jetbrains/jet/plugin/caches/resolve/KotlinResolveCache.kt +++ b/idea/src/org/jetbrains/jet/plugin/caches/resolve/KotlinResolveCache.kt @@ -84,7 +84,7 @@ class KotlinCacheService(val project: Project) { val allFiles = JetFilesProvider.getInstance(project).allInScope(GlobalSearchScope.allScope(project)) val files = if (syntheticFile == null) allFiles else collectFilesForSyntheticFile(allFiles, syntheticFile) - val resolveSession = AnalyzerFacadeProvider.getAnalyzerFacade(platform).getLazyResolveSession(project, files) + val resolveSession = AnalyzerFacadeProvider.getAnalyzerFacade(platform).createSetup(project, files).getLazyResolveSession() CachedValueProvider.Result.create(ResolveSessionForBodies(project, resolveSession), PsiModificationTracker.OUT_OF_CODE_BLOCK_MODIFICATION_COUNT) } diff --git a/idea/src/org/jetbrains/jet/plugin/project/AnalyzerFacadeWithCache.java b/idea/src/org/jetbrains/jet/plugin/project/AnalyzerFacadeWithCache.java index 9d84874c021..216b6603a56 100644 --- a/idea/src/org/jetbrains/jet/plugin/project/AnalyzerFacadeWithCache.java +++ b/idea/src/org/jetbrains/jet/plugin/project/AnalyzerFacadeWithCache.java @@ -26,6 +26,7 @@ import com.intellij.util.containers.SLRUCache; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.analyzer.AnalyzeExhaust; +import org.jetbrains.jet.analyzer.AnalyzerFacade; import org.jetbrains.jet.lang.psi.JetElement; import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.resolve.BindingContext; @@ -103,7 +104,8 @@ public final class AnalyzerFacadeWithCache { files.remove(file.getOriginalFile()); } - ResolveSession resolveSession = AnalyzerFacadeProvider.getAnalyzerFacadeForFile(file).getLazyResolveSession(fileProject, files); + AnalyzerFacade facade = AnalyzerFacadeProvider.getAnalyzerFacadeForFile(file); + ResolveSession resolveSession = facade.createSetup(fileProject, files).getLazyResolveSession(); return Result.create(new ResolveSessionForBodies(file, resolveSession), PsiModificationTracker.OUT_OF_CODE_BLOCK_MODIFICATION_COUNT); } }, diff --git a/idea/src/org/jetbrains/jet/plugin/project/JSAnalyzerFacadeForIDEA.java b/idea/src/org/jetbrains/jet/plugin/project/JSAnalyzerFacadeForIDEA.java index fcb08975611..2bd66f2cb20 100644 --- a/idea/src/org/jetbrains/jet/plugin/project/JSAnalyzerFacadeForIDEA.java +++ b/idea/src/org/jetbrains/jet/plugin/project/JSAnalyzerFacadeForIDEA.java @@ -20,7 +20,6 @@ import com.intellij.openapi.project.Project; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.analyzer.AnalyzerFacade; import org.jetbrains.jet.lang.psi.JetFile; -import org.jetbrains.jet.lang.resolve.lazy.ResolveSession; import org.jetbrains.k2js.analyze.AnalyzerFacadeForJS; import java.util.Collection; @@ -34,7 +33,7 @@ public enum JSAnalyzerFacadeForIDEA implements AnalyzerFacade { @NotNull @Override - public ResolveSession getLazyResolveSession(@NotNull Project project, @NotNull Collection files) { - return AnalyzerFacadeForJS.getLazyResolveSession(files, new IDEAConfig(project)); + public Setup createSetup(@NotNull Project project, @NotNull Collection files) { + return new BasicSetup(AnalyzerFacadeForJS.getLazyResolveSession(files, new IDEAConfig(project))); } } diff --git a/idea/src/org/jetbrains/jet/plugin/run/JetRunConfigurationProducer.java b/idea/src/org/jetbrains/jet/plugin/run/JetRunConfigurationProducer.java index 698cb3c467d..3f574b8d199 100644 --- a/idea/src/org/jetbrains/jet/plugin/run/JetRunConfigurationProducer.java +++ b/idea/src/org/jetbrains/jet/plugin/run/JetRunConfigurationProducer.java @@ -82,8 +82,8 @@ public class JetRunConfigurationProducer extends RuntimeConfigurationProducer im PsiFile psiFile = location.getPsiElement().getContainingFile(); if (psiFile instanceof JetFile) { JetFile jetFile = (JetFile) psiFile; - AnalyzerFacade analyzerFacade = AnalyzerFacadeProvider.getAnalyzerFacadeForFile(jetFile); - ResolveSession resolveSession = analyzerFacade.getLazyResolveSession(jetFile.getProject(), Collections.singleton(jetFile)); + AnalyzerFacade facade = AnalyzerFacadeProvider.getAnalyzerFacadeForFile(jetFile); + ResolveSession resolveSession = facade.createSetup(jetFile.getProject(), Collections.singleton(jetFile)).getLazyResolveSession(); MainFunctionDetector mainFunctionDetector = new MainFunctionDetector(resolveSession); if (mainFunctionDetector.hasMain(jetFile.getDeclarations())) { return jetFile;