reduce redundancy in syntax error messages
Change-Id: I526c0b24d47ac4ee7b492b34387929627e51affc
Reviewed-on: https://asterix-gerrit.ics.uci.edu/1266
Sonar-Qube: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Integration-Tests: Jenkins <jenkins@fulliautomatix.ics.uci.edu>
Reviewed-by: Yingyi Bu <buyingyi@gmail.com>
diff --git a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/parser/ScopeChecker.java b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/parser/ScopeChecker.java
index 07aa473..767eacb 100644
--- a/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/parser/ScopeChecker.java
+++ b/asterixdb/asterix-lang-common/src/main/java/org/apache/asterix/lang/common/parser/ScopeChecker.java
@@ -199,13 +199,14 @@
}
}
- protected String fixQuotes(String token) {
+ protected static String fixQuotes(String token) {
+ final String stripped = stripQuotes(token);
+ return stripped != null ? "'" + stripped + "'" : token;
+ }
+
+ protected static String stripQuotes(String token) {
final int last = token.length() - 1;
- if (token.charAt(0) == '"' && token.charAt(last) == '"') {
- return "'" + token.substring(1, last) + "'";
- } else {
- return token;
- }
+ return token.charAt(0) == '"' && token.charAt(last) == '"' ? token.substring(1, last) : null;
}
protected static String addEscapes(String str) {
diff --git a/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj b/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
index 6c4bc5c..566d9e9 100644
--- a/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
+++ b/asterixdb/asterix-lang-sqlpp/src/main/javacc/SQLPP.jj
@@ -298,7 +298,10 @@
message += fixQuotes(tokenImage[0]);
break;
}
- message += fixQuotes(tokenImage[tok.kind]) + " ";
+ final String fixedTokenImage = tokenImage[tok.kind];
+ if (! tok.image.equalsIgnoreCase(stripQuotes(fixedTokenImage))) {
+ message += fixQuotes(fixedTokenImage) + " ";
+ }
message += quot + addEscapes(tok.image) + quot;
tok = tok.next;
}