diff options
-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"); |