JS tests: create JetFiles by JetPsiFactory instead of by PsiManager to avoid to access to PsiManager after it disposed.
That fixed js tests after changes in DiagnosticsWithSuppression.
This commit is contained in:
@@ -138,14 +138,19 @@ public class LibrarySourcesConfig extends Config {
|
||||
return result;
|
||||
}
|
||||
|
||||
private static JetFile getJetFileByVirtualFile(VirtualFile file, String moduleName, PsiManager psiManager) {
|
||||
protected JetFile getJetFileByVirtualFile(VirtualFile file, String moduleName, PsiManager psiManager) {
|
||||
PsiFile psiFile = psiManager.findFile(file);
|
||||
assert psiFile != null;
|
||||
psiFile.putUserData(EXTERNAL_MODULE_NAME, moduleName);
|
||||
|
||||
setupPsiFile(psiFile, moduleName);
|
||||
return (JetFile) psiFile;
|
||||
}
|
||||
|
||||
private static class JetFileCollector extends VirtualFileVisitor {
|
||||
protected static void setupPsiFile(PsiFile psiFile, String moduleName) {
|
||||
psiFile.putUserData(EXTERNAL_MODULE_NAME, moduleName);
|
||||
}
|
||||
|
||||
private class JetFileCollector extends VirtualFileVisitor {
|
||||
private final List<JetFile> jetFiles;
|
||||
private final String moduleName;
|
||||
private final PsiManager psiManager;
|
||||
|
||||
@@ -18,12 +18,15 @@ package org.jetbrains.k2js.test.config;
|
||||
|
||||
import com.google.common.base.Predicates;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiManager;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.analyzer.AnalyzeExhaust;
|
||||
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
||||
import org.jetbrains.jet.lang.psi.JetFile;
|
||||
import org.jetbrains.jet.lang.psi.JetPsiFactory;
|
||||
import org.jetbrains.jet.lang.resolve.BindingContext;
|
||||
import org.jetbrains.jet.utils.PathUtil;
|
||||
import org.jetbrains.k2js.analyze.TopDownAnalyzerFacadeForJS;
|
||||
@@ -31,6 +34,7 @@ import org.jetbrains.k2js.config.Config;
|
||||
import org.jetbrains.k2js.config.EcmaVersion;
|
||||
import org.jetbrains.k2js.config.LibrarySourcesConfig;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
@@ -98,6 +102,22 @@ public class LibrarySourcesConfigWithCaching extends LibrarySourcesConfig {
|
||||
return isUnitTestConfig;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected JetFile getJetFileByVirtualFile(VirtualFile file, String moduleName, PsiManager psiManager) {
|
||||
JetFile jetFile;
|
||||
try {
|
||||
String text = new String(file.contentsToByteArray(false), file.getCharset());
|
||||
jetFile = new JetPsiFactory(getProject()).createPhysicalFile(file.getName(), text);
|
||||
}
|
||||
catch (IOException e) {
|
||||
JetFile jetFileByVirtualFile = super.getJetFileByVirtualFile(file, moduleName, psiManager);
|
||||
jetFile = new JetPsiFactory(getProject()).createPhysicalFile(file.getPath(), jetFileByVirtualFile.getText());
|
||||
}
|
||||
|
||||
setupPsiFile(jetFile, moduleName);
|
||||
return jetFile;
|
||||
}
|
||||
|
||||
private AnalyzeExhaust getExhaust() {
|
||||
if (exhaust == null) {
|
||||
//noinspection AssignmentToStaticFieldFromInstanceMethod
|
||||
|
||||
Reference in New Issue
Block a user