mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-154289 PsiClass and view provider can never agree on language
This commit is contained in:
@@ -16,6 +16,8 @@
|
||||
package com.intellij.psi;
|
||||
|
||||
import com.intellij.ide.highlighter.JavaClassFileType;
|
||||
import com.intellij.lang.Language;
|
||||
import com.intellij.lang.java.JavaLanguage;
|
||||
import com.intellij.openapi.components.ServiceManager;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.fileTypes.FileType;
|
||||
@@ -51,6 +53,12 @@ public class ClassFileViewProvider extends SingleRootFileViewProvider {
|
||||
super(manager, file, eventSystemEnabled, JavaClassFileType.INSTANCE);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public Language getBaseLanguage() {
|
||||
return JavaLanguage.INSTANCE;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected PsiFile createFile(@NotNull Project project, @NotNull VirtualFile file, @NotNull FileType fileType) {
|
||||
FileIndexFacade fileIndex = ServiceManager.getService(project, FileIndexFacade.class);
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.intellij.psi;
|
||||
|
||||
import com.intellij.lang.java.JavaLanguage;
|
||||
import com.intellij.openapi.application.ex.PathManagerEx;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.util.io.IoTestUtil;
|
||||
@@ -100,6 +101,12 @@ public class ClsPsiTest extends LightIdeaTestCase {
|
||||
assertFalse(aClass.isDeprecated());
|
||||
}
|
||||
|
||||
public void testViewProviderHasJavaLanguage() {
|
||||
PsiJavaFile file = getFile("MyClass");
|
||||
assertEquals(JavaLanguage.INSTANCE, file.getLanguage());
|
||||
assertEquals(JavaLanguage.INSTANCE, file.getViewProvider().getBaseLanguage());
|
||||
}
|
||||
|
||||
public void testClassMembers() {
|
||||
PsiClass aClass = getFile("MyClass").getClasses()[0];
|
||||
|
||||
|
||||
@@ -293,12 +293,12 @@ public class SingleRootFileViewProvider extends UserDataHolderBase implements Fi
|
||||
}
|
||||
|
||||
public List<PsiFile> getCachedPsiFiles() {
|
||||
return ContainerUtil.createMaybeSingletonList(getCachedPsi(myBaseLanguage));
|
||||
return ContainerUtil.createMaybeSingletonList(getCachedPsi(getBaseLanguage()));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public List<FileElement> getKnownTreeRoots() {
|
||||
PsiFile psiFile = getCachedPsi(myBaseLanguage);
|
||||
PsiFile psiFile = getCachedPsi(getBaseLanguage());
|
||||
if (!(psiFile instanceof PsiFileImpl)) return Collections.emptyList();
|
||||
FileElement element = ((PsiFileImpl)psiFile).getTreeElement();
|
||||
return ContainerUtil.createMaybeSingletonList(element);
|
||||
@@ -457,7 +457,7 @@ public class SingleRootFileViewProvider extends UserDataHolderBase implements Fi
|
||||
@NotNull
|
||||
@Override
|
||||
public SingleRootFileViewProvider createCopy(@NotNull final VirtualFile copy) {
|
||||
return new SingleRootFileViewProvider(getManager(), copy, false, myBaseLanguage);
|
||||
return new SingleRootFileViewProvider(getManager(), copy, false, getBaseLanguage());
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -572,7 +572,7 @@ public class SingleRootFileViewProvider extends UserDataHolderBase implements Fi
|
||||
}
|
||||
|
||||
public void markInvalidated() {
|
||||
PsiFile psiFile = getCachedPsi(myBaseLanguage);
|
||||
PsiFile psiFile = getCachedPsi(getBaseLanguage());
|
||||
if (psiFile instanceof PsiFileEx) {
|
||||
((PsiFileEx)psiFile).markInvalidated();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user