Assert that resolve is not performed in dispatch thread

This commit is contained in:
Nikolay Krasko
2012-08-22 17:59:41 +04:00
parent f18166871d
commit b277f2a7f4
2 changed files with 9 additions and 13 deletions
@@ -19,6 +19,7 @@ package org.jetbrains.jet.plugin.project;
import com.google.common.base.Predicate; import com.google.common.base.Predicate;
import com.google.common.base.Predicates; import com.google.common.base.Predicates;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import com.intellij.openapi.application.ex.ApplicationManagerEx;
import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.progress.ProcessCanceledException; import com.intellij.openapi.progress.ProcessCanceledException;
import com.intellij.openapi.project.Project; import com.intellij.openapi.project.Project;
@@ -54,7 +55,10 @@ import org.jetbrains.jet.lang.resolve.name.Name;
import org.jetbrains.jet.lang.resolve.scopes.WritableScope; import org.jetbrains.jet.lang.resolve.scopes.WritableScope;
import org.jetbrains.jet.lang.types.lang.JetStandardLibrary; import org.jetbrains.jet.lang.types.lang.JetStandardLibrary;
import java.util.*; import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
/** /**
* @author Pavel Talanov * @author Pavel Talanov
@@ -98,6 +102,8 @@ public final class AnalyzerFacadeWithCache {
@Override @Override
public Result<AnalyzeExhaust> compute() { public Result<AnalyzeExhaust> compute() {
try { try {
ApplicationManagerEx.getApplicationEx().assertTimeConsuming();
// Collect context for headers first // Collect context for headers first
AnalyzeExhaust analyzeExhaustHeaders = analyzeHeadersWithCacheOnFile(file, declarationProvider); AnalyzeExhaust analyzeExhaustHeaders = analyzeHeadersWithCacheOnFile(file, declarationProvider);
@@ -189,6 +195,8 @@ public final class AnalyzerFacadeWithCache {
CachedValuesManager.getManager(file.getProject()).createCachedValue(new CachedValueProvider<ResolveSession>() { CachedValuesManager.getManager(file.getProject()).createCachedValue(new CachedValueProvider<ResolveSession>() {
@Override @Override
public Result<ResolveSession> compute() { public Result<ResolveSession> compute() {
ApplicationManagerEx.getApplicationEx().assertTimeConsuming();
ModuleDescriptor javaModule = new ModuleDescriptor(Name.special("<java module>")); ModuleDescriptor javaModule = new ModuleDescriptor(Name.special("<java module>"));
InjectorForJavaDescriptorResolver injector = new InjectorForJavaDescriptorResolver( InjectorForJavaDescriptorResolver injector = new InjectorForJavaDescriptorResolver(
@@ -17,13 +17,9 @@
package org.jetbrains.jet.plugin.project; package org.jetbrains.jet.plugin.project;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.analyzer.AnalyzeExhaust; import org.jetbrains.jet.analyzer.AnalyzeExhaust;
import org.jetbrains.jet.lang.psi.JetExpression;
import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.psi.JetFile;
import org.jetbrains.jet.lang.resolve.BindingContext;
import org.jetbrains.jet.lang.resolve.java.JetFilesProvider; import org.jetbrains.jet.lang.resolve.java.JetFilesProvider;
import org.jetbrains.jet.lang.resolve.lazy.ResolveSessionUtils;
import org.jetbrains.jet.lang.resolve.lazy.ResolveSession; import org.jetbrains.jet.lang.resolve.lazy.ResolveSession;
/** /**
@@ -43,12 +39,4 @@ public final class WholeProjectAnalyzerFacade {
public static ResolveSession getLazyResolveSessionForFile(@NotNull JetFile file) { public static ResolveSession getLazyResolveSessionForFile(@NotNull JetFile file) {
return AnalyzerFacadeWithCache.getLazyResolveSession(file); return AnalyzerFacadeWithCache.getLazyResolveSession(file);
} }
@NotNull
public static BindingContext getLazyResolveContext(@NotNull JetFile file, @Nullable JetExpression expression) {
ResolveSession resolveSession = getLazyResolveSessionForFile(file);
return expression != null ?
ResolveSessionUtils.getExpressionBindingContext(resolveSession, expression) :
resolveSession.getBindingContext();
}
} }