diff options
author | gjoranv <gv@verizonmedia.com> | 2019-11-13 15:00:26 +0100 |
---|---|---|
committer | gjoranv <gv@verizonmedia.com> | 2019-11-13 15:00:26 +0100 |
commit | 491924433dd80b8a57c47f42c5a1f5725ec4b454 (patch) | |
tree | e18c01a4ab8698004db612c7c9a791f861e2e49e /configgen | |
parent | 3d9c56b13ef888a668a6429ab0a65315582f9fee (diff) |
Fail if reserved words are used for array names.
Diffstat (limited to 'configgen')
-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"); |