Special factory method for local analysis

- No need to pass the same flags all the time
- No need to check for local mode when in LAZY mode
This commit is contained in:
Andrey Breslav
2014-04-02 14:33:45 +04:00
parent b02195e9ae
commit 3184b9ddba
6 changed files with 18 additions and 13 deletions
@@ -103,12 +103,10 @@ public class ReplInterpreter {
Project project = jetCoreEnvironment.getProject(); Project project = jetCoreEnvironment.getProject();
trace = new BindingTraceContext(); trace = new BindingTraceContext();
module = AnalyzerFacadeForJVM.createJavaModule("<repl>"); module = AnalyzerFacadeForJVM.createJavaModule("<repl>");
TopDownAnalysisParameters topDownAnalysisParameters = TopDownAnalysisParameters.create( TopDownAnalysisParameters topDownAnalysisParameters = TopDownAnalysisParameters.createForLocalDeclarations(
new LockBasedStorageManager(), new LockBasedStorageManager(),
new ExceptionTracker(), // dummy new ExceptionTracker(), // dummy
Predicates.<PsiFile>alwaysTrue(), Predicates.<PsiFile>alwaysTrue()
false,
true
); );
injector = new InjectorForTopDownAnalyzerForJvm(project, topDownAnalysisParameters, trace, module, MemberFilter.ALWAYS_TRUE); injector = new InjectorForTopDownAnalyzerForJvm(project, topDownAnalysisParameters, trace, module, MemberFilter.ALWAYS_TRUE);
topDownAnalysisContext = new TopDownAnalysisContext(topDownAnalysisParameters); topDownAnalysisContext = new TopDownAnalysisContext(topDownAnalysisParameters);
@@ -590,7 +590,7 @@ public class BodyResolver {
JetScope declaringScope = c.getDeclaringScopes().apply(declaration); JetScope declaringScope = c.getDeclaringScopes().apply(declaration);
assert declaringScope != null; assert declaringScope != null;
if (!c.getTopDownAnalysisParameters().isLazyTopDownAnalysis() || c.getTopDownAnalysisParameters().isDeclaredLocally()) { if (!c.getTopDownAnalysisParameters().isLazyTopDownAnalysis()) {
resolveAnnotationArguments(declaringScope, declaration); resolveAnnotationArguments(declaringScope, declaration);
} }
resolveFunctionBody(c, trace, declaration, descriptor, declaringScope); resolveFunctionBody(c, trace, declaration, descriptor, declaringScope);
@@ -59,7 +59,7 @@ public class ScriptBodyResolver {
JetScript declaration = e.getKey(); JetScript declaration = e.getKey();
ScriptDescriptor descriptor = e.getValue(); ScriptDescriptor descriptor = e.getValue();
if (c.getTopDownAnalysisParameters().isLazyTopDownAnalysis() && !c.getTopDownAnalysisParameters().isDeclaredLocally()) { if (c.getTopDownAnalysisParameters().isLazyTopDownAnalysis()) {
ForceResolveUtil.forceResolveAllContents(descriptor); ForceResolveUtil.forceResolveAllContents(descriptor);
continue; continue;
} }
@@ -45,6 +45,15 @@ public class TopDownAnalysisParameters implements GlobalContext {
declaredLocally, LAZY); declaredLocally, LAZY);
} }
@NotNull
public static TopDownAnalysisParameters createForLocalDeclarations(
@NotNull StorageManager storageManager,
@NotNull ExceptionTracker exceptionTracker,
@NotNull Predicate<PsiFile> analyzeCompletely
) {
return new TopDownAnalysisParameters(storageManager, exceptionTracker, analyzeCompletely, false, true, false);
}
@NotNull @NotNull
private final StorageManager storageManager; private final StorageManager storageManager;
@NotNull @NotNull
@@ -129,7 +129,7 @@ public class TopDownAnalyzer {
// c.enableDebugOutput(); // c.enableDebugOutput();
c.debug("Enter"); c.debug("Enter");
if (c.getTopDownAnalysisParameters().isLazyTopDownAnalysis() && !c.getTopDownAnalysisParameters().isDeclaredLocally()) { if (c.getTopDownAnalysisParameters().isLazyTopDownAnalysis()) {
final ResolveSession resolveSession = new InjectorForLazyResolve( final ResolveSession resolveSession = new InjectorForLazyResolve(
project, project,
new GlobalContextImpl((LockBasedStorageManager) c.getStorageManager(), c.getExceptionTracker()), // TODO new GlobalContextImpl((LockBasedStorageManager) c.getStorageManager(), c.getExceptionTracker()), // TODO
@@ -356,12 +356,10 @@ public class TopDownAnalyzer {
PlatformToKotlinClassMap.EMPTY); PlatformToKotlinClassMap.EMPTY);
TopDownAnalysisParameters topDownAnalysisParameters = TopDownAnalysisParameters topDownAnalysisParameters =
TopDownAnalysisParameters.create( TopDownAnalysisParameters.createForLocalDeclarations(
globalContext.getStorageManager(), globalContext.getStorageManager(),
globalContext.getExceptionTracker(), globalContext.getExceptionTracker(),
Predicates.equalTo(object.getContainingFile()), Predicates.equalTo(object.getContainingFile())
false,
true
); );
InjectorForTopDownAnalyzerBasic injector = new InjectorForTopDownAnalyzerBasic( InjectorForTopDownAnalyzerBasic injector = new InjectorForTopDownAnalyzerBasic(
@@ -333,9 +333,9 @@ public class ResolveElementCache {
} }
private static TopDownAnalysisParameters createParameters(@NotNull ResolveSession resolveSession) { private static TopDownAnalysisParameters createParameters(@NotNull ResolveSession resolveSession) {
return TopDownAnalysisParameters.create( return TopDownAnalysisParameters.createForLocalDeclarations(
resolveSession.getStorageManager(), resolveSession.getExceptionTracker(), resolveSession.getStorageManager(), resolveSession.getExceptionTracker(),
Predicates.<PsiFile>alwaysTrue(), false, true); Predicates.<PsiFile>alwaysTrue());
} }
@NotNull @NotNull