diff options
author | Harald Musum <musum@verizonmedia.com> | 2019-11-13 16:39:14 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-13 16:39:14 +0100 |
commit | b6e48bd32a548dd3cc1847344e6451882afebb91 (patch) | |
tree | e1f399be8b2bbe2c221f966e30e04662a6d77478 | |
parent | 395e0795cc9abd1a5e9f3b5fc4d2960164dd1bcf (diff) | |
parent | 491924433dd80b8a57c47f42c5a1f5725ec4b454 (diff) |
Merge pull request #11289 from vespa-engine/gjoranv/fail-upon-reserved-array-name
Fail if reserved words are used for array names.
-rw-r--r-- | configgen/src/main/java/com/yahoo/config/codegen/DefLine.java | 18 | ||||
-rw-r--r-- | configgen/src/test/java/com/yahoo/config/codegen/DefParserTest.java | 18 |
2 files changed, 28 insertions, 8 deletions
diff --git a/configgen/src/main/java/com/yahoo/config/codegen/DefLine.java b/configgen/src/main/java/com/yahoo/config/codegen/DefLine.java index 5d2dc2e13e8..2cc93f95df0 100644 --- a/configgen/src/main/java/com/yahoo/config/codegen/DefLine.java +++ b/configgen/src/main/java/com/yahoo/config/codegen/DefLine.java @@ -257,16 +257,18 @@ public class DefLine { } } - void validateReservedWords() { - if (ReservedWords.isReservedWord(name)) { - throw new IllegalArgumentException(name + " is a reserved word in " + - ReservedWords.getLanguageForReservedWord(name)); + private void validateReservedWords() { + String cleanName = (name.endsWith("[]") || name.endsWith("{}")) ? name.substring(0, name.length()-2) : name; + + if (ReservedWords.isReservedWord(cleanName)) { + throw new IllegalArgumentException(cleanName + " is a reserved word in " + + ReservedWords.getLanguageForReservedWord(cleanName)); } - if (ReservedWords.capitalizedPattern.matcher(name).matches()) { - throw new IllegalArgumentException("'" + name + "' cannot start with an uppercase letter"); + if (ReservedWords.capitalizedPattern.matcher(cleanName).matches()) { + throw new IllegalArgumentException("'" + cleanName + "' cannot start with an uppercase letter"); } - if (ReservedWords.internalPrefixPattern.matcher(name).matches()) { - throw new IllegalArgumentException("'" + name + "' cannot start with '" + ReservedWords.INTERNAL_PREFIX + "'"); + if (ReservedWords.internalPrefixPattern.matcher(cleanName).matches()) { + throw new IllegalArgumentException("'" + cleanName + "' cannot start with '" + ReservedWords.INTERNAL_PREFIX + "'"); } } diff --git a/configgen/src/test/java/com/yahoo/config/codegen/DefParserTest.java b/configgen/src/test/java/com/yahoo/config/codegen/DefParserTest.java index 98c30aa09cf..1c381e7c398 100644 --- a/configgen/src/test/java/com/yahoo/config/codegen/DefParserTest.java +++ b/configgen/src/test/java/com/yahoo/config/codegen/DefParserTest.java @@ -257,17 +257,35 @@ public class DefParserTest { } @Test + public void testReservedWordInCForArray() { + assertLineFails("auto[] int", + "auto is a reserved word in C"); + } + + @Test public void testReservedWordInJava() { assertLineFails("abstract int", "abstract is a reserved word in Java"); } @Test + public void testReservedWordInJavaForMap() { + assertLineFails("abstract{} int", + "abstract is a reserved word in Java"); + } + + @Test public void testReservedWordInCAndJava() { assertLineFails("continue int", "continue is a reserved word in C and Java"); } + @Test + public void testReservedWordInCAndJavaForArray() { + assertLineFails("continue[] int", + "continue is a reserved word in C and Java"); + } + static StringBuilder createDefTemplate() { StringBuilder sb = new StringBuilder(); sb.append("version=8\n"); |