diff --git a/platform/testFramework/src/com/intellij/testFramework/LexerTestCase.java b/platform/testFramework/src/com/intellij/testFramework/LexerTestCase.java index fbac6befe19b..599d31ed09e1 100644 --- a/platform/testFramework/src/com/intellij/testFramework/LexerTestCase.java +++ b/platform/testFramework/src/com/intellij/testFramework/LexerTestCase.java @@ -21,6 +21,7 @@ import com.intellij.openapi.application.PathManager; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.tree.IElementType; +import com.intellij.psi.tree.TokenSet; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -52,6 +53,22 @@ public abstract class LexerTestCase extends UsefulTestCase { } } + protected void checkZeroState(String text, TokenSet tokenTypes) { + Lexer lexer = createLexer(); + lexer.start(text); + + while (true) { + IElementType type = lexer.getTokenType(); + if (type == null) { + break; + } + if (tokenTypes.contains(type) && lexer.getState() != 0) { + fail("Non-zero lexer state on token \"" + lexer.getTokenText() + "\" (" + type + ") at " + lexer.getTokenStart()); + } + lexer.advance(); + } + } + protected void checkCorrectRestart(String text) { Lexer mainLexer = createLexer(); String allTokens = printTokens(text, 0, mainLexer);