Skip to content

Commit 2414a4b

Browse files
committed
GPUB: grammar.kit.gpub.max.level system property
1 parent 1a8c8ac commit 2414a4b

File tree

1 file changed

+7
-5
lines changed

1 file changed

+7
-5
lines changed

support/org/intellij/grammar/parser/GeneratedParserUtilBase.java

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ public class GeneratedParserUtilBase {
5353

5454
private static final Logger LOG = Logger.getInstance("org.intellij.grammar.parser.GeneratedParserUtilBase");
5555

56-
private static final int MAX_RECURSION_LEVEL = 1000;
56+
private static final int MAX_RECURSION_LEVEL = StringUtil.parseInt(System.getProperty("grammar.kit.gpub.max.level"), 1000);
5757
private static final int MAX_VARIANTS_SIZE = 10000;
5858
private static final int MAX_VARIANTS_TO_DISPLAY = 50;
5959

@@ -127,7 +127,7 @@ public static boolean leftMarkerIs(PsiBuilder builder, IElementType type) {
127127

128128
private static boolean consumeTokens(PsiBuilder builder, boolean smart, int pin, IElementType... tokens) {
129129
ErrorState state = ErrorState.get(builder);
130-
if (state.completionState != null && state.predicateCount == 0) {
130+
if (state.completionState != null && state.predicateSign) {
131131
addCompletionVariant(builder, state.completionState, tokens);
132132
}
133133
// suppress single token completion
@@ -298,7 +298,7 @@ else if (nextOffset == endOffset) {
298298
private static void addCompletionVariantSmart(PsiBuilder builder, Object token) {
299299
ErrorState state = ErrorState.get(builder);
300300
CompletionState completionState = state.completionState;
301-
if (completionState != null && state.predicateCount == 0) {
301+
if (completionState != null && state.predicateSign) {
302302
addCompletionVariant(builder, completionState, token);
303303
}
304304
}
@@ -767,23 +767,25 @@ public static class ErrorState {
767767
MyList<Variant> unexpected = new MyList<Variant>(INITIAL_VARIANTS_SIZE / 10);
768768

769769
final LimitedPool<Variant> VARIANTS = new LimitedPool<Variant>(VARIANTS_POOL_SIZE, new LimitedPool.ObjectFactory<Variant>() {
770+
@NotNull
770771
@Override
771772
public Variant create() {
772773
return new Variant();
773774
}
774775

775776
@Override
776-
public void cleanup(final Variant o) {
777+
public void cleanup(Variant o) {
777778
}
778779
});
779780
final LimitedPool<Frame> FRAMES = new LimitedPool<Frame>(FRAMES_POOL_SIZE, new LimitedPool.ObjectFactory<Frame>() {
781+
@NotNull
780782
@Override
781783
public Frame create() {
782784
return new Frame();
783785
}
784786

785787
@Override
786-
public void cleanup(final Frame o) {
788+
public void cleanup(Frame o) {
787789
}
788790
});
789791

0 commit comments

Comments
 (0)