IJPL-212853 FlexAdapter: store buffer end position in the LexerPosition

GitOrigin-RevId: 3c7f192c2649b868581b9628ad822a48ccbf887c
This commit is contained in:
Piotr Tomiak
2025-11-12 18:23:31 +00:00
committed by intellij-monorepo-bot
parent 37a5a154ee
commit 3839bc027a
@@ -84,13 +84,13 @@ public class FlexAdapter extends LexerBase {
@Override
public @NotNull LexerPosition getCurrentPosition() {
locateToken();
return new FlexAdapterPosition(myTokenType, myTokenStart, myTokenEnd, myState, myFlex.yystate());
return new FlexAdapterPosition(myTokenType, myTokenStart, myTokenEnd, myState, myFlex.yystate(), myBufferEnd);
}
@Override
public void restore(@NotNull LexerPosition position) {
FlexAdapterPosition flexAdapterPosition = (FlexAdapterPosition)position;
myFlex.reset(myText, flexAdapterPosition.tokenEnd, getBufferEnd(), flexAdapterPosition.flexState);
myFlex.reset(myText, flexAdapterPosition.tokenEnd, flexAdapterPosition.bufferEnd, flexAdapterPosition.flexState);
myTokenStart = flexAdapterPosition.tokenStart;
myTokenEnd = flexAdapterPosition.tokenEnd;
myTokenType = flexAdapterPosition.currentToken;
@@ -130,13 +130,15 @@ public class FlexAdapter extends LexerBase {
private final int tokenEnd;
private final int state;
private final int flexState;
private final int bufferEnd;
private FlexAdapterPosition(IElementType currentToken, int tokenStart, int tokenEnd, int state, int flexState) {
private FlexAdapterPosition(IElementType currentToken, int tokenStart, int tokenEnd, int state, int flexState, int bufferEnd) {
this.currentToken = currentToken;
this.tokenStart = tokenStart;
this.tokenEnd = tokenEnd;
this.state = state;
this.flexState = flexState;
this.bufferEnd = bufferEnd;
}
@Override