summaryrefslogtreecommitdiff
path: root/tool-testsuite
diff options
context:
space:
mode:
authorEmmanuel Bourg <ebourg@apache.org>2016-03-22 17:34:37 +0100
committerEmmanuel Bourg <ebourg@apache.org>2016-03-22 17:34:37 +0100
commit1a7b7906cbb3c334e0e8fe1dfdb68f16fefa8555 (patch)
tree2f2cb19f44478cc382321aa59914c1b60a295792 /tool-testsuite
parent5cd489db342e6cd6968fafc552c5dd2d850d7c3c (diff)
Imported Upstream version 4.5.2
Diffstat (limited to 'tool-testsuite')
-rw-r--r--tool-testsuite/pom.xml3
-rw-r--r--tool-testsuite/test/org/antlr/v4/test/tool/JavaLR.g4 (renamed from tool-testsuite/test/org/antlr/v4/test/tool/Java-LR.g4)2
-rw-r--r--tool-testsuite/test/org/antlr/v4/test/tool/TestATNSerialization.java2
-rw-r--r--tool-testsuite/test/org/antlr/v4/test/tool/TestPerformance.java19
-rw-r--r--tool-testsuite/test/org/antlr/v4/test/tool/TestSymbolIssues.java54
-rw-r--r--tool-testsuite/test/org/antlr/v4/test/tool/TestToolSyntaxErrors.java27
6 files changed, 95 insertions, 12 deletions
diff --git a/tool-testsuite/pom.xml b/tool-testsuite/pom.xml
index e21d6f8..81b4525 100644
--- a/tool-testsuite/pom.xml
+++ b/tool-testsuite/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>org.antlr</groupId>
<artifactId>antlr4-master</artifactId>
- <version>4.5.1</version>
+ <version>4.5.2-1</version>
</parent>
<artifactId>antlr4-tool-testsuite</artifactId>
<name>ANTLR 4 Tool Tests</name>
@@ -76,6 +76,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
+ <version>2.12.4</version>
<configuration>
<systemPropertyVariables>
<antlr-python2-runtime>../../antlr4-python2/src</antlr-python2-runtime>
diff --git a/tool-testsuite/test/org/antlr/v4/test/tool/Java-LR.g4 b/tool-testsuite/test/org/antlr/v4/test/tool/JavaLR.g4
index 9d38d02..049e283 100644
--- a/tool-testsuite/test/org/antlr/v4/test/tool/Java-LR.g4
+++ b/tool-testsuite/test/org/antlr/v4/test/tool/JavaLR.g4
@@ -168,7 +168,7 @@
* letter-or-digit is a character for which the method
* Character.isJavaIdentifierPart(int) returns true."
*/
-grammar Java;
+grammar JavaLR;
// starting point for parsing a java file
/* The annotations are separated out to make parsing faster, but must be associated with
diff --git a/tool-testsuite/test/org/antlr/v4/test/tool/TestATNSerialization.java b/tool-testsuite/test/org/antlr/v4/test/tool/TestATNSerialization.java
index 5aaede3..2c1a2b0 100644
--- a/tool-testsuite/test/org/antlr/v4/test/tool/TestATNSerialization.java
+++ b/tool-testsuite/test/org/antlr/v4/test/tool/TestATNSerialization.java
@@ -632,7 +632,7 @@ public class TestATNSerialization extends BaseTest {
"lexer grammar L;\n"+
"A : 'a'\n ;\n" +
"B : 'b';\n" +
- "mode A;\n" +
+ "mode M;\n" +
"C : 'c';\n"+
"D : 'd';\n");
String expecting =
diff --git a/tool-testsuite/test/org/antlr/v4/test/tool/TestPerformance.java b/tool-testsuite/test/org/antlr/v4/test/tool/TestPerformance.java
index 63a9c40..990cac6 100644
--- a/tool-testsuite/test/org/antlr/v4/test/tool/TestPerformance.java
+++ b/tool-testsuite/test/org/antlr/v4/test/tool/TestPerformance.java
@@ -153,7 +153,7 @@ public class TestPerformance extends BaseTest {
/**
* {@code true} to use the Java grammar with expressions in the v4
- * left-recursive syntax (Java-LR.g4). {@code false} to use the standard
+ * left-recursive syntax (JavaLR.g4). {@code false} to use the standard
* grammar (Java.g4). In either case, the grammar is renamed in the
* temporary directory to Java.g4 before compiling.
*/
@@ -415,10 +415,10 @@ public class TestPerformance extends BaseTest {
assertTrue("The JDK_SOURCE_ROOT environment variable must be set for performance testing.", jdkSourceRoot != null && !jdkSourceRoot.isEmpty());
compileJavaParser(USE_LR_GRAMMAR);
- final String lexerName = "JavaLexer";
- final String parserName = "JavaParser";
- final String listenerName = "JavaBaseListener";
- final String entryPoint = "compilationUnit";
+ final String lexerName = USE_LR_GRAMMAR ? "JavaLRLexer" : "JavaLexer";
+ final String parserName = USE_LR_GRAMMAR ? "JavaLRParser" : "JavaParser";
+ final String listenerName = USE_LR_GRAMMAR ? "JavaLRBaseListener" : "JavaBaseListener";
+ final String entryPoint = "compilationUnit";
final ParserFactory factory = getParserFactory(lexerName, parserName, listenerName, entryPoint);
if (!TOP_PACKAGE.isEmpty()) {
@@ -1108,9 +1108,10 @@ public class TestPerformance extends BaseTest {
}
protected void compileJavaParser(boolean leftRecursive) throws IOException {
- String grammarFileName = "Java.g4";
- String sourceName = leftRecursive ? "Java-LR.g4" : "Java.g4";
- String body = load(sourceName, null);
+ String grammarFileName = leftRecursive ? "JavaLR.g4" : "Java.g4";
+ String parserName = leftRecursive ? "JavaLRParser" : "JavaParser";
+ String lexerName = leftRecursive ? "JavaLRLexer" : "JavaLexer";
+ String body = load(grammarFileName, null);
List<String> extraOptions = new ArrayList<String>();
extraOptions.add("-Werror");
if (FORCE_ATN) {
@@ -1127,7 +1128,7 @@ public class TestPerformance extends BaseTest {
}
extraOptions.add("-visitor");
String[] extraOptionsArray = extraOptions.toArray(new String[extraOptions.size()]);
- boolean success = rawGenerateAndBuildRecognizer(grammarFileName, body, "JavaParser", "JavaLexer", true, extraOptionsArray);
+ boolean success = rawGenerateAndBuildRecognizer(grammarFileName, body, parserName, lexerName, true, extraOptionsArray);
assertTrue(success);
}
diff --git a/tool-testsuite/test/org/antlr/v4/test/tool/TestSymbolIssues.java b/tool-testsuite/test/org/antlr/v4/test/tool/TestSymbolIssues.java
index 6934f2c..1c68ba3 100644
--- a/tool-testsuite/test/org/antlr/v4/test/tool/TestSymbolIssues.java
+++ b/tool-testsuite/test/org/antlr/v4/test/tool/TestSymbolIssues.java
@@ -116,10 +116,25 @@ public class TestSymbolIssues extends BaseTest {
"warning(" + ErrorType.TOKEN_NAME_REASSIGNMENT.code + "): E.g4:3:4: token name A is already defined\n"
};
+ static String[] F = {
+ // INPUT
+ "lexer grammar F;\n" +
+ "A: 'a';\n" +
+ "mode M1;\n" +
+ "A1: 'a';\n" +
+ "mode M2;\n" +
+ "A2: 'a';\n" +
+ "M1: 'b';\n",
+
+ // YIELDS
+ "error(" + ErrorType.MODE_CONFLICTS_WITH_TOKEN.code + "): F.g4:3:0: mode M1 conflicts with token with same name\n"
+ };
+
@Test public void testA() { super.testErrors(A, false); }
@Test public void testB() { super.testErrors(B, false); }
@Test public void testD() { super.testErrors(D, false); }
@Test public void testE() { super.testErrors(E, false); }
+ @Test public void testF() { super.testErrors(F, false); }
@Test public void testStringLiteralRedefs() throws Exception {
String grammar =
@@ -169,4 +184,43 @@ public class TestSymbolIssues extends BaseTest {
testErrors(test, false);
}
+
+ @Test public void testTokensModesChannelsDeclarationConflictsWithReserved() throws Exception {
+ String[] test = {
+ "lexer grammar L;\n" +
+ "channels { SKIP, HIDDEN, channel0 }\n" +
+ "A: 'a';\n" +
+ "mode MAX_CHAR_VALUE;\n" +
+ "MIN_CHAR_VALUE: 'a';\n" +
+ "mode DEFAULT_MODE;\n" +
+ "B: 'b';\n" +
+ "mode M;\n" +
+ "C: 'c';",
+
+ "error(" + ErrorType.RESERVED_RULE_NAME.code + "): L.g4:5:0: cannot declare a rule with reserved name MIN_CHAR_VALUE\n" +
+ "error(" + ErrorType.MODE_CONFLICTS_WITH_COMMON_CONSTANTS.code + "): L.g4:4:0: cannot use or declare mode with reserved name MAX_CHAR_VALUE\n" +
+ "error(" + ErrorType.CHANNEL_CONFLICTS_WITH_COMMON_CONSTANTS.code + "): L.g4:2:11: cannot use or declare channel with reserved name SKIP\n" +
+ "error(" + ErrorType.CHANNEL_CONFLICTS_WITH_COMMON_CONSTANTS.code + "): L.g4:2:17: cannot use or declare channel with reserved name HIDDEN\n"
+ };
+
+ testErrors(test, false);
+ }
+
+ @Test public void testTokensModesChannelsUsingConflictsWithReserved() throws Exception {
+ String[] test = {
+ "lexer grammar L;\n" +
+ "A: 'a' -> channel(SKIP);\n" +
+ "B: 'b' -> type(MORE);\n" +
+ "C: 'c' -> mode(SKIP);\n" +
+ "D: 'd' -> channel(HIDDEN);\n" +
+ "E: 'e' -> type(EOF);\n" +
+ "F: 'f' -> pushMode(DEFAULT_MODE);",
+
+ "error(" + ErrorType.CHANNEL_CONFLICTS_WITH_COMMON_CONSTANTS.code + "): L.g4:2:18: cannot use or declare channel with reserved name SKIP\n" +
+ "error(" + ErrorType.TOKEN_CONFLICTS_WITH_COMMON_CONSTANTS.code + "): L.g4:3:15: cannot use or declare token with reserved name MORE\n" +
+ "error(" + ErrorType.MODE_CONFLICTS_WITH_COMMON_CONSTANTS.code + "): L.g4:4:15: cannot use or declare mode with reserved name SKIP\n"
+ };
+
+ testErrors(test, false);
+ }
}
diff --git a/tool-testsuite/test/org/antlr/v4/test/tool/TestToolSyntaxErrors.java b/tool-testsuite/test/org/antlr/v4/test/tool/TestToolSyntaxErrors.java
index ceaa570..c411434 100644
--- a/tool-testsuite/test/org/antlr/v4/test/tool/TestToolSyntaxErrors.java
+++ b/tool-testsuite/test/org/antlr/v4/test/tool/TestToolSyntaxErrors.java
@@ -455,6 +455,33 @@ public class TestToolSyntaxErrors extends BaseTest {
}
/**
+ * This is a regression test for antlr/antlr4#959 "NullPointerException".
+ * https://github.com/antlr/antlr4/issues/959
+ */
+ @Test public void testNotAllowedEmptyStrings() {
+ String grammar =
+ "lexer grammar T;\n" +
+ "Error0: '''test''';\n" +
+ "Error1: '' 'test';\n" +
+ "Error2: 'test' '';\n" +
+ "Error3: '';\n" +
+ "NotError: ' ';";
+ String expected =
+ "error(" + ErrorType.EMPTY_STRINGS_NOT_ALLOWED.code + "): T.g4:2:8: string literals cannot be empty\n" +
+ "error(" + ErrorType.EMPTY_STRINGS_NOT_ALLOWED.code + "): T.g4:2:16: string literals cannot be empty\n" +
+ "error(" + ErrorType.EMPTY_STRINGS_NOT_ALLOWED.code + "): T.g4:3:8: string literals cannot be empty\n" +
+ "error(" + ErrorType.EMPTY_STRINGS_NOT_ALLOWED.code + "): T.g4:4:15: string literals cannot be empty\n" +
+ "error(" + ErrorType.EMPTY_STRINGS_NOT_ALLOWED.code + "): T.g4:5:8: string literals cannot be empty\n";
+
+ String[] pair = new String[] {
+ grammar,
+ expected
+ };
+
+ super.testErrors(pair, true);
+ }
+
+ /**
* This test ensures the {@link ErrorType#UNRECOGNIZED_ASSOC_OPTION} warning
* is produced as described in the documentation.
*/