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;
|
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);
|
PsiFile psiFile = psiManager.findFile(file);
|
||||||
assert psiFile != null;
|
assert psiFile != null;
|
||||||
psiFile.putUserData(EXTERNAL_MODULE_NAME, moduleName);
|
|
||||||
|
setupPsiFile(psiFile, moduleName);
|
||||||
return (JetFile) psiFile;
|
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 List<JetFile> jetFiles;
|
||||||
private final String moduleName;
|
private final String moduleName;
|
||||||
private final PsiManager psiManager;
|
private final PsiManager psiManager;
|
||||||
|
|||||||
@@ -18,12 +18,15 @@ package org.jetbrains.k2js.test.config;
|
|||||||
|
|
||||||
import com.google.common.base.Predicates;
|
import com.google.common.base.Predicates;
|
||||||
import com.intellij.openapi.project.Project;
|
import com.intellij.openapi.project.Project;
|
||||||
|
import com.intellij.openapi.vfs.VirtualFile;
|
||||||
import com.intellij.psi.PsiFile;
|
import com.intellij.psi.PsiFile;
|
||||||
|
import com.intellij.psi.PsiManager;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.analyzer.AnalyzeExhaust;
|
import org.jetbrains.jet.analyzer.AnalyzeExhaust;
|
||||||
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
import org.jetbrains.jet.lang.descriptors.ModuleDescriptor;
|
||||||
import org.jetbrains.jet.lang.psi.JetFile;
|
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.lang.resolve.BindingContext;
|
||||||
import org.jetbrains.jet.utils.PathUtil;
|
import org.jetbrains.jet.utils.PathUtil;
|
||||||
import org.jetbrains.k2js.analyze.TopDownAnalyzerFacadeForJS;
|
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.EcmaVersion;
|
||||||
import org.jetbrains.k2js.config.LibrarySourcesConfig;
|
import org.jetbrains.k2js.config.LibrarySourcesConfig;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@@ -98,6 +102,22 @@ public class LibrarySourcesConfigWithCaching extends LibrarySourcesConfig {
|
|||||||
return isUnitTestConfig;
|
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() {
|
private AnalyzeExhaust getExhaust() {
|
||||||
if (exhaust == null) {
|
if (exhaust == null) {
|
||||||
//noinspection AssignmentToStaticFieldFromInstanceMethod
|
//noinspection AssignmentToStaticFieldFromInstanceMethod
|
||||||
|
|||||||
Reference in New Issue
Block a user