Create new trace before each resolve (to avoid writing to a trace already filled in by previous analysis)

This commit is contained in:
Andrey Breslav
2012-12-28 20:10:41 +04:00
parent e46e77f0d3
commit 4b4a9eb6c9
3 changed files with 12 additions and 1 deletions
@@ -74,7 +74,7 @@ public class CliLightClassGenerationSupport extends LightClassGenerationSupport
return trace;
}
public void clearBindingTrace() {
public void newBindingTrace() {
assert ApplicationManager.getApplication().isUnitTestMode() : "Mutating project service's state shouldn't happen other than in tests";
trace = null;
}
@@ -33,6 +33,7 @@ import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.TestOnly;
import org.jetbrains.jet.analyzer.AnalyzeExhaust;
import org.jetbrains.jet.cli.jvm.compiler.CliLightClassGenerationSupport;
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
import org.jetbrains.jet.codegen.forTestCompile.ForTestCompileRuntime;
import org.jetbrains.jet.codegen.forTestCompile.ForTestPackJdkAnnotations;
@@ -333,6 +334,11 @@ public class JetTestUtils {
return configuration;
}
public static void newTrace(@NotNull JetCoreEnvironment environment) {
// let the next analysis use another trace
CliLightClassGenerationSupport.getInstanceForCli(environment.getProject()).newBindingTrace();
}
public interface TestFileFactory<F> {
F create(String fileName, String text);
}
@@ -22,6 +22,7 @@ import com.google.common.collect.Sets;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiFile;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.JetTestUtils;
import org.jetbrains.jet.cli.jvm.compiler.CliLightClassGenerationSupport;
import org.jetbrains.jet.cli.jvm.compiler.JetCoreEnvironment;
import org.jetbrains.jet.di.InjectorForJavaDescriptorResolver;
@@ -63,6 +64,8 @@ public class LazyResolveTestUtil {
}
public static InjectorForTopDownAnalyzer createInjectorForTDA(ModuleDescriptor module, JetCoreEnvironment environment) {
JetTestUtils.newTrace(environment);
TopDownAnalysisParameters params = new TopDownAnalysisParameters(
Predicates.<PsiFile>alwaysTrue(), false, false, Collections.<AnalyzerScriptParameter>emptyList());
BindingTrace sharedTrace = CliLightClassGenerationSupport.getInstanceForCli(environment.getProject()).getTrace();
@@ -77,6 +80,8 @@ public class LazyResolveTestUtil {
}
public static ModuleDescriptor resolveLazily(List<JetFile> files, JetCoreEnvironment environment) {
JetTestUtils.newTrace(environment);
ModuleDescriptor javaModule = new ModuleDescriptor(Name.special("<java module>"));
final Project project = environment.getProject();