mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
use valid file view provider for post process reformat
This commit is contained in:
@@ -324,7 +324,7 @@ public class IndexTest extends JavaCodeInsightFixtureTestCase {
|
||||
assert JavaPsiFacade.getInstance(project).findClass("pkg.Foo", scope)
|
||||
}
|
||||
|
||||
public void "_test language level change"() {
|
||||
public void "test language level change"() {
|
||||
def psiFile = myFixture.addFileToProject("Foo.java", "class Foo {}")
|
||||
def scope = GlobalSearchScope.allScope(project)
|
||||
|
||||
|
||||
+14
@@ -42,7 +42,9 @@ import com.intellij.pom.tree.events.TreeChangeEvent;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.codeStyle.CodeStyleSettings;
|
||||
import com.intellij.psi.codeStyle.CodeStyleSettingsManager;
|
||||
import com.intellij.psi.impl.PsiManagerEx;
|
||||
import com.intellij.psi.impl.PsiTreeDebugBuilder;
|
||||
import com.intellij.psi.impl.file.impl.FileManager;
|
||||
import com.intellij.psi.impl.source.codeStyle.CodeEditUtil;
|
||||
import com.intellij.psi.impl.source.codeStyle.CodeFormatterFacade;
|
||||
import com.intellij.psi.impl.source.codeStyle.IndentHelperImpl;
|
||||
@@ -314,6 +316,18 @@ public class PostprocessReformattingAspect implements PomModelAspect {
|
||||
final VirtualFile virtualFile = key.getVirtualFile();
|
||||
if (!virtualFile.isValid()) return;
|
||||
|
||||
PsiManager manager = key.getManager();
|
||||
if (manager instanceof PsiManagerEx) {
|
||||
FileManager fileManager = ((PsiManagerEx)manager).getFileManager();
|
||||
FileViewProvider viewProvider = fileManager.findCachedViewProvider(virtualFile);
|
||||
if (viewProvider != key) { // viewProvider was invalidated e.g. due to language level change
|
||||
if (viewProvider == null) viewProvider = fileManager.findViewProvider(virtualFile);
|
||||
if (viewProvider != null) {
|
||||
key = viewProvider;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
final TreeSet<PostprocessFormattingTask> postProcessTasks = new TreeSet<PostprocessFormattingTask>();
|
||||
Collection<Disposable> toDispose = ContainerUtilRt.newArrayList();
|
||||
try {
|
||||
|
||||
Reference in New Issue
Block a user