From d5d2e117b82e372446f72c962bf3ea3a10268143 Mon Sep 17 00:00:00 2001 From: "Gregory.Shrago" Date: Mon, 20 Mar 2017 15:47:12 +0300 Subject: [PATCH] extract nextTokenIsSlow() --- .../com/intellij/lang/parser/GeneratedParserUtilBase.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/lang/parser/GeneratedParserUtilBase.java b/platform/lang-impl/src/com/intellij/lang/parser/GeneratedParserUtilBase.java index 3833113b8e10..19e05c9199e6 100644 --- a/platform/lang-impl/src/com/intellij/lang/parser/GeneratedParserUtilBase.java +++ b/platform/lang-impl/src/com/intellij/lang/parser/GeneratedParserUtilBase.java @@ -317,7 +317,11 @@ public class GeneratedParserUtilBase { ErrorState state = ErrorState.get(builder); if (state.completionState != null) return true; boolean track = !state.suppressErrors && state.predicateCount < 2 && state.predicateSign; - if (!track) return nextTokenIsFast(builder, tokens); + return !track ? nextTokenIsFast(builder, tokens) : nextTokenIsSlow(builder, frameName, tokens); + } + + public static boolean nextTokenIsSlow(PsiBuilder builder, String frameName, IElementType... tokens) { + ErrorState state = ErrorState.get(builder); IElementType tokenType = builder.getTokenType(); if (isNotEmpty(frameName)) { addVariantInner(state, builder.rawTokenIndex(), frameName); @@ -419,7 +423,7 @@ public class GeneratedParserUtilBase { int offset = builder.getCurrentOffset(); if (!builder.eof() && offset == builder.rawTokenTypeStart(1)) return; // suppress for zero-length tokens String text = completionState.convertItem(o); - int length = text == null? 0 : text.length(); + int length = text == null ? 0 : text.length(); boolean add = length != 0 && completionState.prefixMatches(builder, text); add = add && length > 1 && !(text.charAt(0) == '<' && text.charAt(length - 1) == '>') && !(text.charAt(0) == '\'' && text.charAt(length - 1) == '\'' && length < 5);