allow to return PsiFile from StubbedSpine

This commit is contained in:
peter
2017-09-27 08:24:29 +02:00
parent fdc8925947
commit a8be8ea938
4 changed files with 12 additions and 9 deletions
@@ -396,9 +396,11 @@ public abstract class PsiAnchor {
if (throwIfNull) throw new AssertionError("Null file");
return null;
}
if (index == 0) return fileImpl;
StubbedSpine spine = fileImpl.getStubbedSpine();
StubBasedPsiElement psi = spine.getStubPsi(index);
StubBasedPsiElement psi = (StubBasedPsiElement)spine.getStubPsi(index);
if (psi == null) {
if (throwIfNull) throw new AssertionError("Too large index: " + index + ">=" + spine.getStubCount());
return null;
@@ -15,7 +15,7 @@
*/
package com.intellij.psi.impl.source;
import com.intellij.psi.StubBasedPsiElement;
import com.intellij.psi.PsiElement;
import com.intellij.psi.tree.IElementType;
import org.jetbrains.annotations.Nullable;
@@ -29,7 +29,7 @@ public interface StubbedSpine {
/** @return the stubbed PSI element at the given index or null if index is greater than the spine size */
@Nullable
StubBasedPsiElement getStubPsi(int index);
PsiElement getStubPsi(int index);
/**
* @return the stubbed PSI element's type at the given index or null if index is greater than the spine size.
@@ -15,6 +15,7 @@
*/
package com.intellij.psi.impl.source.tree;
import com.intellij.psi.PsiElement;
import com.intellij.psi.StubBasedPsiElement;
import com.intellij.psi.impl.source.StubbedSpine;
import com.intellij.psi.tree.IElementType;
@@ -42,8 +43,8 @@ public class AstSpine implements StubbedSpine {
@Nullable
@Override
public StubBasedPsiElement getStubPsi(int index) {
return index >= myNodes.size() ? null : (StubBasedPsiElement)myNodes.get(index).getPsi();
public PsiElement getStubPsi(int index) {
return index >= myNodes.size() ? null : myNodes.get(index).getPsi();
}
public int getStubIndex(@NotNull StubBasedPsiElement psi) {
@@ -15,7 +15,7 @@
*/
package com.intellij.psi.stubs;
import com.intellij.psi.StubBasedPsiElement;
import com.intellij.psi.PsiElement;
import com.intellij.psi.impl.source.StubbedSpine;
import com.intellij.psi.tree.IElementType;
import org.jetbrains.annotations.NotNull;
@@ -40,9 +40,9 @@ class StubSpine implements StubbedSpine {
@Nullable
@Override
public StubBasedPsiElement getStubPsi(int index) {
public PsiElement getStubPsi(int index) {
List<StubElement<?>> stubs = myTree.getPlainList();
return index >= stubs.size() ? null : (StubBasedPsiElement)stubs.get(index).getPsi();
return index >= stubs.size() ? null : stubs.get(index).getPsi();
}
@Nullable