From 9f0fc00beff94a74d5f0d2130e1f5a03c42e19aa Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 26 Aug 2015 19:16:36 +0200 Subject: [PATCH] test that freemarker lexer is restartable at every directive --- .../intellij/testFramework/LexerTestCase.java | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) 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);