From a8be8ea93888e45b5420a4439dbcb7ed2a6f8e8e Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 27 Sep 2017 08:09:26 +0200 Subject: [PATCH] allow to return PsiFile from StubbedSpine --- platform/core-impl/src/com/intellij/psi/PsiAnchor.java | 6 ++++-- .../src/com/intellij/psi/impl/source/StubbedSpine.java | 4 ++-- .../src/com/intellij/psi/impl/source/tree/AstSpine.java | 5 +++-- .../core-impl/src/com/intellij/psi/stubs/StubSpine.java | 6 +++--- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/platform/core-impl/src/com/intellij/psi/PsiAnchor.java b/platform/core-impl/src/com/intellij/psi/PsiAnchor.java index 8e6a6a4622c5..1f2cca67b2f2 100644 --- a/platform/core-impl/src/com/intellij/psi/PsiAnchor.java +++ b/platform/core-impl/src/com/intellij/psi/PsiAnchor.java @@ -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; diff --git a/platform/core-impl/src/com/intellij/psi/impl/source/StubbedSpine.java b/platform/core-impl/src/com/intellij/psi/impl/source/StubbedSpine.java index 0be5b73b54c8..adcbbde63e80 100644 --- a/platform/core-impl/src/com/intellij/psi/impl/source/StubbedSpine.java +++ b/platform/core-impl/src/com/intellij/psi/impl/source/StubbedSpine.java @@ -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. diff --git a/platform/core-impl/src/com/intellij/psi/impl/source/tree/AstSpine.java b/platform/core-impl/src/com/intellij/psi/impl/source/tree/AstSpine.java index 1ca5ddf18706..c93d08e4e92f 100644 --- a/platform/core-impl/src/com/intellij/psi/impl/source/tree/AstSpine.java +++ b/platform/core-impl/src/com/intellij/psi/impl/source/tree/AstSpine.java @@ -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) { diff --git a/platform/core-impl/src/com/intellij/psi/stubs/StubSpine.java b/platform/core-impl/src/com/intellij/psi/stubs/StubSpine.java index ce9d5ee219a3..e35b41554fef 100644 --- a/platform/core-impl/src/com/intellij/psi/stubs/StubSpine.java +++ b/platform/core-impl/src/com/intellij/psi/stubs/StubSpine.java @@ -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> stubs = myTree.getPlainList(); - return index >= stubs.size() ? null : (StubBasedPsiElement)stubs.get(index).getPsi(); + return index >= stubs.size() ? null : stubs.get(index).getPsi(); } @Nullable