mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-16 14:23:28 +07:00
[fleet] lift missing members to PsiBuilder.Marker interface to reduce the number of downcasts to PsiBuilderImpl
It is needed for fleet-parser-collection to be more compatible with platform code, as it has its own PsiBuilder implementation. Updates the api dump, however, according to api watcher no harm done. GitOrigin-RevId: edbbc42a48e406fc8e22295f7b78eadd523b5cf2
This commit is contained in:
committed by
intellij-monorepo-bot
parent
9b5b7f47f4
commit
9d0a07d90c
@@ -399,7 +399,7 @@ public class GeneratedParserUtilBase {
|
||||
}
|
||||
|
||||
public static boolean isWhitespaceOrComment(@NotNull PsiBuilder builder, @Nullable IElementType type) {
|
||||
return ((PsiBuilderImpl)((Builder)builder).getDelegate()).whitespaceOrComment(type);
|
||||
return builder.isWhitespaceOrComment(type);
|
||||
}
|
||||
|
||||
private static boolean wasAutoSkipped(@NotNull PsiBuilder builder, int steps) {
|
||||
@@ -550,7 +550,7 @@ public class GeneratedParserUtilBase {
|
||||
final boolean eatMoreFlagOnce = !builder.eof() && eatMore.parse(builder, frame.level + 1);
|
||||
boolean eatMoreFlag = eatMoreFlagOnce || !result && frame.position == initialPos && lastErrorPos > frame.position;
|
||||
|
||||
PsiBuilderImpl.ProductionMarker latestDoneMarker =
|
||||
PsiBuilder.Marker latestDoneMarker =
|
||||
(pinned || result) && (state.altMode || elementType != null) &&
|
||||
eatMoreFlagOnce ? getLatestExtensibleDoneMarker(builder) : null;
|
||||
// advance to the last error pos
|
||||
@@ -638,7 +638,7 @@ public class GeneratedParserUtilBase {
|
||||
if (elementType != null && marker != null) {
|
||||
if (result || pinned) {
|
||||
if ((frame.modifiers & _COLLAPSE_) != 0) {
|
||||
PsiBuilderImpl.ProductionMarker last = (PsiBuilderImpl.ProductionMarker)builder.getLatestDoneMarker();
|
||||
PsiBuilder.Marker last = (PsiBuilder.Marker)builder.getLatestDoneMarker();
|
||||
if (last != null &&
|
||||
last.getStartIndex() == frame.position &&
|
||||
state.typeExtends(last.getTokenType(), elementType) &&
|
||||
@@ -685,9 +685,9 @@ public class GeneratedParserUtilBase {
|
||||
|
||||
private static void extend_marker_impl(PsiBuilder.Marker marker) {
|
||||
PsiBuilder.Marker precede = marker.precede();
|
||||
IElementType elementType = ((LighterASTNode)marker).getTokenType();
|
||||
IElementType elementType = marker.getTokenType();
|
||||
if (elementType == TokenType.ERROR_ELEMENT) {
|
||||
precede.error(notNullize(PsiBuilderImpl.getErrorMessage((LighterASTNode)marker)));
|
||||
precede.error(notNullize(marker.getErrorMessage()));
|
||||
}
|
||||
else {
|
||||
precede.done(elementType);
|
||||
@@ -707,7 +707,7 @@ public class GeneratedParserUtilBase {
|
||||
}
|
||||
else {
|
||||
if (frame != null) {
|
||||
int position = ((PsiBuilderImpl.ProductionMarker)marker).getStartIndex();
|
||||
int position = marker.getStartIndex();
|
||||
if (frame.errorReportedAt > position) {
|
||||
frame.errorReportedAt = frame.parentFrame == null ? -1 : frame.parentFrame.errorReportedAt;
|
||||
}
|
||||
@@ -748,11 +748,10 @@ public class GeneratedParserUtilBase {
|
||||
}
|
||||
}
|
||||
|
||||
private static @Nullable PsiBuilderImpl.ProductionMarker getLatestExtensibleDoneMarker(@NotNull PsiBuilder builder) {
|
||||
Builder b = (Builder)builder;
|
||||
PsiBuilderImpl.ProductionMarker marker = ContainerUtil.getLastItem(b.getProductions());
|
||||
if (marker == null || ((PsiBuilderImpl)b.getDelegate()).isCollapsed(marker)) return null;
|
||||
return marker.getTokenType() != null && marker instanceof PsiBuilder.Marker ? marker : null;
|
||||
private static @Nullable PsiBuilder.Marker getLatestExtensibleDoneMarker(@NotNull PsiBuilder builder) {
|
||||
SyntaxTreeBuilder.Production marker = ContainerUtil.getLastItem(builder.getProductions());
|
||||
if (marker == null || marker.isCollapsed()) return null;
|
||||
return marker.getTokenType() != null && marker instanceof PsiBuilder.Marker ? (PsiBuilder.Marker)marker : null;
|
||||
}
|
||||
|
||||
private static boolean reportError(PsiBuilder builder,
|
||||
@@ -788,7 +787,7 @@ public class GeneratedParserUtilBase {
|
||||
mark.error(message);
|
||||
}
|
||||
else if (inner) {
|
||||
PsiBuilderImpl.ProductionMarker latestDoneMarker = getLatestExtensibleDoneMarker(builder);
|
||||
PsiBuilder.Marker latestDoneMarker = getLatestExtensibleDoneMarker(builder);
|
||||
builder.error(message);
|
||||
if (latestDoneMarker != null &&
|
||||
frame.position >= latestDoneMarker.getStartIndex() &&
|
||||
@@ -810,8 +809,8 @@ public class GeneratedParserUtilBase {
|
||||
int pos = builder.rawTokenIndex();
|
||||
if (frame.errorReportedAt > pos) {
|
||||
// report error for previous unsuccessful frame
|
||||
LighterASTNode marker = builder.getLatestDoneMarker();
|
||||
int endOffset = marker != null ? ((PsiBuilderImpl.ProductionMarker)marker).getEndIndex() : pos + 1;
|
||||
PsiBuilder.Marker marker = (PsiBuilder.Marker)builder.getLatestDoneMarker();
|
||||
int endOffset = marker != null ? marker.getEndIndex() : pos + 1;
|
||||
while (endOffset <= pos && isWhitespaceOrComment(builder, builder.rawLookup(endOffset - pos))) endOffset ++;
|
||||
boolean inner = endOffset == pos;
|
||||
builder.eof();
|
||||
@@ -897,6 +896,7 @@ public class GeneratedParserUtilBase {
|
||||
return ((PsiBuilderImpl)myDelegate).getLexer();
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull List<PsiBuilderImpl.ProductionMarker> getProductions() {
|
||||
return ((PsiBuilderImpl)myDelegate).getProductions();
|
||||
}
|
||||
|
||||
@@ -680,6 +680,7 @@ com.intellij.lang.SyntaxTreeBuilder
|
||||
- a:getCurrentOffset():I
|
||||
- a:getLatestDoneMarker():com.intellij.lang.LighterASTNode
|
||||
- a:getOriginalText():java.lang.CharSequence
|
||||
- getProductions():java.util.List
|
||||
- a:getTokenText():java.lang.String
|
||||
- a:getTokenType():com.intellij.psi.tree.IElementType
|
||||
- isWhitespaceOrComment(com.intellij.psi.tree.IElementType):Z
|
||||
@@ -694,6 +695,7 @@ com.intellij.lang.SyntaxTreeBuilder
|
||||
- a:setTokenTypeRemapper(com.intellij.lang.ITokenTypeRemapper):V
|
||||
- a:setWhitespaceSkippedCallback(com.intellij.lang.WhitespaceSkippedCallback):V
|
||||
com.intellij.lang.SyntaxTreeBuilder$Marker
|
||||
- com.intellij.lang.SyntaxTreeBuilder$Production
|
||||
- a:collapse(com.intellij.psi.tree.IElementType):V
|
||||
- a:done(com.intellij.psi.tree.IElementType):V
|
||||
- a:doneBefore(com.intellij.psi.tree.IElementType,com.intellij.lang.SyntaxTreeBuilder$Marker):V
|
||||
@@ -704,6 +706,15 @@ com.intellij.lang.SyntaxTreeBuilder$Marker
|
||||
- a:precede():com.intellij.lang.SyntaxTreeBuilder$Marker
|
||||
- a:rollbackTo():V
|
||||
- a:setCustomEdgeTokenBinders(com.intellij.lang.WhitespacesAndCommentsBinder,com.intellij.lang.WhitespacesAndCommentsBinder):V
|
||||
com.intellij.lang.SyntaxTreeBuilder$Production
|
||||
- com.intellij.lang.LighterASTNode
|
||||
- getEndIndex():I
|
||||
- getEndOffset():I
|
||||
- getErrorMessage():java.lang.String
|
||||
- getStartIndex():I
|
||||
- getStartOffset():I
|
||||
- getTokenType():com.intellij.psi.tree.IElementType
|
||||
- isCollapsed():Z
|
||||
com.intellij.lang.TokenSeparatorGenerator
|
||||
- a:generateWhitespaceBetweenTokens(com.intellij.lang.ASTNode,com.intellij.lang.ASTNode):com.intellij.lang.ASTNode
|
||||
c:com.intellij.lang.TreeBackedLighterAST
|
||||
|
||||
@@ -8,6 +8,8 @@ import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public interface SyntaxTreeBuilder {
|
||||
/**
|
||||
* Returns the complete text being parsed.
|
||||
@@ -161,19 +163,56 @@ public interface SyntaxTreeBuilder {
|
||||
/**
|
||||
* @return latest left done node for context dependent parsing.
|
||||
*/
|
||||
@Nullable
|
||||
LighterASTNode getLatestDoneMarker();
|
||||
@Nullable LighterASTNode getLatestDoneMarker();
|
||||
|
||||
@NotNull default List<? extends Production> getProductions() {
|
||||
throw new UnsupportedOperationException("not implemented for this kind of Builder");
|
||||
}
|
||||
|
||||
default boolean isWhitespaceOrComment(@NotNull IElementType elementType) {
|
||||
return false;
|
||||
}
|
||||
|
||||
interface Production extends LighterASTNode {
|
||||
@Override
|
||||
default IElementType getTokenType() {
|
||||
throw new UnsupportedOperationException("not implemented for this kind of markers");
|
||||
}
|
||||
|
||||
@Override
|
||||
default int getStartOffset() {
|
||||
throw new UnsupportedOperationException("not implemented for this kind of markers");
|
||||
}
|
||||
|
||||
@Override
|
||||
default int getEndOffset() {
|
||||
throw new UnsupportedOperationException("not implemented for this kind of markers");
|
||||
}
|
||||
|
||||
default int getStartIndex() {
|
||||
throw new UnsupportedOperationException("not implemented for this kind of markers");
|
||||
};
|
||||
|
||||
default int getEndIndex() {
|
||||
throw new UnsupportedOperationException("not implemented for this kind of markers");
|
||||
}
|
||||
|
||||
@NlsContexts.DetailedDescription
|
||||
@Nullable default String getErrorMessage() {
|
||||
return null;
|
||||
};
|
||||
|
||||
default boolean isCollapsed() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* A marker defines a range in the document text which becomes a node in the AST
|
||||
* tree. The ranges defined by markers within the text range of the current marker
|
||||
* become child nodes of the node defined by the current marker.
|
||||
*/
|
||||
interface Marker {
|
||||
interface Marker extends Production {
|
||||
/**
|
||||
* Creates and returns a new marker starting immediately before the start of
|
||||
* this marker and extending after its end. Can be called on a completed or
|
||||
|
||||
@@ -759,7 +759,7 @@ f:com.intellij.lang.WhitespacesBinders
|
||||
f:com.intellij.lang.folding.NamedFoldingDescriptor
|
||||
- com.intellij.lang.folding.FoldingDescriptor
|
||||
- <init>(com.intellij.lang.ASTNode,com.intellij.openapi.util.TextRange,com.intellij.openapi.editor.FoldingGroup,java.lang.String):V
|
||||
a:com.intellij.lang.impl.DelegateMarker
|
||||
c:com.intellij.lang.impl.DelegateMarker
|
||||
- com.intellij.lang.PsiBuilder$Marker
|
||||
- <init>(com.intellij.lang.PsiBuilder$Marker):V
|
||||
- collapse(com.intellij.psi.tree.IElementType):V
|
||||
@@ -770,6 +770,13 @@ a:com.intellij.lang.impl.DelegateMarker
|
||||
- error(java.lang.String):V
|
||||
- errorBefore(java.lang.String,com.intellij.lang.PsiBuilder$Marker):V
|
||||
- getDelegate():com.intellij.lang.PsiBuilder$Marker
|
||||
- getEndIndex():I
|
||||
- getEndOffset():I
|
||||
- getErrorMessage():java.lang.String
|
||||
- getStartIndex():I
|
||||
- getStartOffset():I
|
||||
- getTokenType():com.intellij.psi.tree.IElementType
|
||||
- isCollapsed():Z
|
||||
- precede():com.intellij.lang.PsiBuilder$Marker
|
||||
- rollbackTo():V
|
||||
- setCustomEdgeTokenBinders(com.intellij.lang.WhitespacesAndCommentsBinder,com.intellij.lang.WhitespacesAndCommentsBinder):V
|
||||
@@ -786,16 +793,19 @@ c:com.intellij.lang.impl.PsiBuilderAdapter
|
||||
- getLatestDoneMarker():com.intellij.lang.LighterASTNode
|
||||
- getLightTree():com.intellij.util.diff.FlyweightCapableTreeStructure
|
||||
- getOriginalText():java.lang.CharSequence
|
||||
- getProductions():java.util.List
|
||||
- getProject():com.intellij.openapi.project.Project
|
||||
- getTokenText():java.lang.String
|
||||
- getTokenType():com.intellij.psi.tree.IElementType
|
||||
- getTreeBuilt():com.intellij.lang.ASTNode
|
||||
- getUserData(com.intellij.openapi.util.Key):java.lang.Object
|
||||
- getUserDataUnprotected(com.intellij.openapi.util.Key):java.lang.Object
|
||||
- isWhitespaceOrComment(com.intellij.psi.tree.IElementType):Z
|
||||
- lookAhead(I):com.intellij.psi.tree.IElementType
|
||||
- mark():com.intellij.lang.PsiBuilder$Marker
|
||||
- putUserData(com.intellij.openapi.util.Key,java.lang.Object):V
|
||||
- putUserDataUnprotected(com.intellij.openapi.util.Key,java.lang.Object):V
|
||||
- rawAdvanceLexer(I):V
|
||||
- rawLookup(I):com.intellij.psi.tree.IElementType
|
||||
- rawTokenIndex():I
|
||||
- rawTokenTypeStart(I):I
|
||||
@@ -859,6 +869,7 @@ c:com.intellij.lang.impl.PsiBuilderImpl
|
||||
- whitespaceOrComment(com.intellij.psi.tree.IElementType):Z
|
||||
a:com.intellij.lang.impl.PsiBuilderImpl$ProductionMarker
|
||||
- com.intellij.lang.LighterASTNode
|
||||
- com.intellij.lang.SyntaxTreeBuilder$Production
|
||||
- pf:myBuilder:com.intellij.lang.impl.PsiBuilderImpl
|
||||
- p:myLexemeIndex:I
|
||||
- p:myNext:com.intellij.lang.impl.PsiBuilderImpl$ProductionMarker
|
||||
@@ -866,6 +877,7 @@ a:com.intellij.lang.impl.PsiBuilderImpl$ProductionMarker
|
||||
- getEndIndex():I
|
||||
- getStartIndex():I
|
||||
- getStartOffset():I
|
||||
- isCollapsed():Z
|
||||
- remapTokenType(com.intellij.psi.tree.IElementType):V
|
||||
- a:tokenTextMatches(java.lang.CharSequence):Z
|
||||
*c:com.intellij.lang.impl.TokenSequence
|
||||
|
||||
@@ -8,7 +8,7 @@ import com.intellij.psi.tree.IElementType;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
public abstract class DelegateMarker implements PsiBuilder.Marker {
|
||||
public class DelegateMarker implements PsiBuilder.Marker {
|
||||
private final @NotNull PsiBuilder.Marker myDelegate;
|
||||
|
||||
public DelegateMarker(@NotNull PsiBuilder.Marker delegate) {
|
||||
@@ -68,4 +68,39 @@ public abstract class DelegateMarker implements PsiBuilder.Marker {
|
||||
public void setCustomEdgeTokenBinders(@Nullable WhitespacesAndCommentsBinder left, @Nullable WhitespacesAndCommentsBinder right) {
|
||||
myDelegate.setCustomEdgeTokenBinders(left, right);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getStartIndex() {
|
||||
return myDelegate.getStartIndex();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEndIndex() {
|
||||
return myDelegate.getEndIndex();
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable String getErrorMessage() {
|
||||
return myDelegate.getErrorMessage();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCollapsed() {
|
||||
return myDelegate.isCollapsed();
|
||||
}
|
||||
|
||||
@Override
|
||||
public IElementType getTokenType() {
|
||||
return myDelegate.getTokenType();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getStartOffset() {
|
||||
return myDelegate.getStartOffset();
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEndOffset() {
|
||||
return myDelegate.getEndOffset();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,6 +11,8 @@ import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class PsiBuilderAdapter implements PsiBuilder {
|
||||
protected final PsiBuilder myDelegate;
|
||||
|
||||
@@ -112,6 +114,16 @@ public class PsiBuilderAdapter implements PsiBuilder {
|
||||
return myDelegate.getLightTree();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isWhitespaceOrComment(@NotNull IElementType token) {
|
||||
return myDelegate.isWhitespaceOrComment(token);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void rawAdvanceLexer(int steps) {
|
||||
myDelegate.rawAdvanceLexer(steps);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setDebugMode(final boolean dbgMode) {
|
||||
myDelegate.setDebugMode(dbgMode);
|
||||
@@ -127,6 +139,11 @@ public class PsiBuilderAdapter implements PsiBuilder {
|
||||
return myDelegate.getLatestDoneMarker();
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull List<? extends Production> getProductions() {
|
||||
return myDelegate.getProductions();
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable <T> T getUserData(final @NotNull Key<T> key) {
|
||||
return myDelegate.getUserData(key);
|
||||
|
||||
@@ -225,6 +225,7 @@ public class PsiBuilderImpl extends UnprotectedUserDataHolder implements PsiBuil
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull List<ProductionMarker> getProductions() {
|
||||
return new AbstractList<ProductionMarker>() {
|
||||
@Override
|
||||
@@ -243,7 +244,7 @@ public class PsiBuilderImpl extends UnprotectedUserDataHolder implements PsiBuil
|
||||
boolean tokenTextMatches(@NotNull CharSequence chars);
|
||||
}
|
||||
|
||||
public abstract static class ProductionMarker implements Node {
|
||||
public abstract static class ProductionMarker implements Node, Production {
|
||||
final int markerId;
|
||||
protected final PsiBuilderImpl myBuilder;
|
||||
protected int myLexemeIndex = -1;
|
||||
@@ -265,14 +266,21 @@ public class PsiBuilderImpl extends UnprotectedUserDataHolder implements PsiBuil
|
||||
return myBuilder.myLexStarts[myLexemeIndex] + myBuilder.myOffset;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isCollapsed() {
|
||||
return myBuilder.myOptionalData.isCollapsed(markerId);
|
||||
}
|
||||
|
||||
public void remapTokenType(@NotNull IElementType type) {
|
||||
throw new UnsupportedOperationException("Shall not be called on this kind of markers");
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getStartIndex() {
|
||||
return myLexemeIndex;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getEndIndex() {
|
||||
throw new UnsupportedOperationException("Shall not be called on this kind of markers");
|
||||
}
|
||||
@@ -320,6 +328,11 @@ public class PsiBuilderImpl extends UnprotectedUserDataHolder implements PsiBuil
|
||||
return myDoneLexeme;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable String getErrorMessage() {
|
||||
return myType == TokenType.ERROR_ELEMENT ? myBuilder.myOptionalData.getDoneError(markerId) : null;
|
||||
}
|
||||
|
||||
@Override
|
||||
void setLexemeIndex(int lexemeIndex, boolean done) {
|
||||
if (done) myDoneLexeme = lexemeIndex;
|
||||
@@ -664,6 +677,11 @@ public class PsiBuilderImpl extends UnprotectedUserDataHolder implements PsiBuil
|
||||
return getStartIndex();
|
||||
}
|
||||
|
||||
@Override
|
||||
public @Nullable String getErrorMessage() {
|
||||
return myMessage;
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull IElementType getTokenType() {
|
||||
return TokenType.ERROR_ELEMENT;
|
||||
@@ -738,7 +756,7 @@ public class PsiBuilderImpl extends UnprotectedUserDataHolder implements PsiBuil
|
||||
}
|
||||
|
||||
private int shiftOverWhitespaceForward(int lexIndex) {
|
||||
while (lexIndex < myLexemeCount && whitespaceOrComment(myLexTypes[lexIndex])) {
|
||||
while (lexIndex < myLexemeCount && isWhitespaceOrComment(myLexTypes[lexIndex])) {
|
||||
lexIndex++;
|
||||
}
|
||||
return lexIndex;
|
||||
@@ -797,7 +815,7 @@ public class PsiBuilderImpl extends UnprotectedUserDataHolder implements PsiBuil
|
||||
}
|
||||
|
||||
private void skipWhitespace() {
|
||||
while (myCurrentLexeme < myLexemeCount && whitespaceOrComment(remapCurrentToken())) {
|
||||
while (myCurrentLexeme < myLexemeCount && isWhitespaceOrComment(remapCurrentToken())) {
|
||||
onSkip(myLexTypes[myCurrentLexeme], myLexStarts[myCurrentLexeme], myCurrentLexeme + 1 < myLexemeCount ? myLexStarts[myCurrentLexeme + 1] : myText.length());
|
||||
myCurrentLexeme++;
|
||||
clearCachedTokenType();
|
||||
@@ -826,8 +844,9 @@ public class PsiBuilderImpl extends UnprotectedUserDataHolder implements PsiBuil
|
||||
return myText.subSequence(myLexStarts[myCurrentLexeme], myLexStarts[myCurrentLexeme + 1]).toString();
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public boolean whitespaceOrComment(IElementType token) {
|
||||
return myWhitespaces.contains(token) || myComments.contains(token);
|
||||
return isWhitespaceOrComment(token);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -898,7 +917,7 @@ public class PsiBuilderImpl extends UnprotectedUserDataHolder implements PsiBuil
|
||||
private boolean isEmpty(int startIdx, int endIdx) {
|
||||
for (int i = startIdx; i < endIdx; i++) {
|
||||
IElementType token = myLexTypes[i];
|
||||
if (!whitespaceOrComment(token)) return false;
|
||||
if (!isWhitespaceOrComment(token)) return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
@@ -1159,7 +1178,7 @@ public class PsiBuilderImpl extends UnprotectedUserDataHolder implements PsiBuil
|
||||
prevProductionLexIndex = pool.get(Math.abs(prevId)).getLexemeIndex(prevId < 0);
|
||||
}
|
||||
int wsStartIndex = Math.max(lexemeIndex, lastIndex);
|
||||
while (wsStartIndex > prevProductionLexIndex && whitespaceOrComment(myLexTypes[wsStartIndex - 1])) wsStartIndex--;
|
||||
while (wsStartIndex > prevProductionLexIndex && isWhitespaceOrComment(myLexTypes[wsStartIndex - 1])) wsStartIndex--;
|
||||
|
||||
int wsEndIndex = shiftOverWhitespaceForward(lexemeIndex);
|
||||
|
||||
@@ -1250,7 +1269,7 @@ public class PsiBuilderImpl extends UnprotectedUserDataHolder implements PsiBuil
|
||||
item = marker.myNext;
|
||||
itemDone = false;
|
||||
}
|
||||
else if (!isCollapsed(marker)) {
|
||||
else if (!marker.isCollapsed()) {
|
||||
curMarker = marker;
|
||||
|
||||
CompositeElement childNode = createComposite(marker, astFactory);
|
||||
@@ -1279,8 +1298,9 @@ public class PsiBuilderImpl extends UnprotectedUserDataHolder implements PsiBuil
|
||||
}
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public boolean isCollapsed(@NotNull ProductionMarker marker) {
|
||||
return myOptionalData.isCollapsed(marker.markerId);
|
||||
return marker.isCollapsed();
|
||||
}
|
||||
|
||||
private int insertLeaves(int curToken, int lastIdx, @NotNull CompositeElement curNode) {
|
||||
@@ -1353,15 +1373,7 @@ public class PsiBuilderImpl extends UnprotectedUserDataHolder implements PsiBuil
|
||||
}
|
||||
|
||||
public static @Nullable @NlsContexts.DetailedDescription String getErrorMessage(@NotNull LighterASTNode node) {
|
||||
if (node instanceof ErrorItem) return ((ErrorItem)node).myMessage;
|
||||
if (node instanceof StartMarker) {
|
||||
StartMarker marker = (StartMarker)node;
|
||||
if (marker.myType == TokenType.ERROR_ELEMENT) {
|
||||
return marker.myBuilder.myOptionalData.getDoneError(marker.markerId);
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
return node instanceof Production ? ((Production)node).getErrorMessage() : null;
|
||||
}
|
||||
|
||||
private static final class MyComparator implements ShallowNodeComparator<ASTNode, LighterASTNode> {
|
||||
@@ -1574,7 +1586,7 @@ public class PsiBuilderImpl extends UnprotectedUserDataHolder implements PsiBuil
|
||||
while (child != null) {
|
||||
lexIndex = insertLeaves(lexIndex, child.myLexemeIndex, marker.myBuilder, marker);
|
||||
|
||||
if (child instanceof StartMarker && child.myBuilder.isCollapsed(child)) {
|
||||
if (child instanceof StartMarker && child.isCollapsed()) {
|
||||
int lastIndex = child.getEndIndex();
|
||||
insertLeaf(child.getTokenType(), marker.myBuilder, child.myLexemeIndex, lastIndex, true, marker);
|
||||
}
|
||||
|
||||
@@ -241,7 +241,7 @@ public class MasqueradingPsiBuilderAdapter extends PsiBuilderAdapter {
|
||||
}
|
||||
|
||||
private boolean isWhiteSpaceOnPos(int pos) {
|
||||
return myBuilderDelegate.whitespaceOrComment(myShrunkSequence.get(pos).elementType);
|
||||
return myBuilderDelegate.isWhitespaceOrComment(myShrunkSequence.get(pos).elementType);
|
||||
}
|
||||
|
||||
protected void initShrunkSequence() {
|
||||
|
||||
Reference in New Issue
Block a user