From fc9179bad702407d1d88075dd89db78e97d81343 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Mon, 2 Sep 2019 17:50:50 +0200 Subject: [PATCH] Add 'var', 'yield' and 'record' to Java reserved words Update reserved words with: - var, which is reserved since Java 10 - yield, which is reserved since Java 14 - record, which is reserved since Java 16 Change-Id: Ia3455cf60d5afa4b83dfb5cb92364a2d1a6bfb7b Signed-off-by: Robert Varga --- .../binding/spec/naming/BindingMapping.java | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/binding/mdsal-binding-spec-util/src/main/java/org/opendaylight/mdsal/binding/spec/naming/BindingMapping.java b/binding/mdsal-binding-spec-util/src/main/java/org/opendaylight/mdsal/binding/spec/naming/BindingMapping.java index 911c5b50b4..e3294a1910 100644 --- a/binding/mdsal-binding-spec-util/src/main/java/org/opendaylight/mdsal/binding/spec/naming/BindingMapping.java +++ b/binding/mdsal-binding-spec-util/src/main/java/org/opendaylight/mdsal/binding/spec/naming/BindingMapping.java @@ -36,17 +36,26 @@ public final class BindingMapping { public static final @NonNull String VERSION = "0.6"; + // Note: these are not just JLS keywords, but rather character sequences which are reserved in codegen contexts public static final ImmutableSet JAVA_RESERVED_WORDS = ImmutableSet.of( - // https://docs.oracle.com/javase/specs/jls/se9/html/jls-3.html#jls-3.9 + // https://docs.oracle.com/javase/specs/jls/se9/html/jls-3.html#jls-3.9 except module-info.java constructs "abstract", "assert", "boolean", "break", "byte", "case", "catch", "char", "class", "const", "continue", "default", "do", "double", "else", "enum", "extends", "final", "finally", "float", "for", "goto", "if", "implements", "import", "instanceof", "int", "interface", "long", "native", "new", "package", "private", "protected", "public", "return", "short", "static", "strictfp", "super", "switch", "synchronized", "this", "throw", "throws", "transient", "try", "void", "volatile", "while", "_", + // "open", "module", "requires", "transitive", "exports, "opens", "to", "uses", "provides", "with", + // https://docs.oracle.com/javase/specs/jls/se9/html/jls-3.html#jls-3.10.3 "false", "true", // https://docs.oracle.com/javase/specs/jls/se9/html/jls-3.html#jls-3.10.7 - "null"); + "null", + // https://docs.oracle.com/javase/specs/jls/se10/html/jls-3.html#jls-3.9 + "var", + // https://docs.oracle.com/javase/specs/jls/se14/html/jls-3.html#jls-3.9 + "yield", + // https://docs.oracle.com/javase/specs/jls/se16/html/jls-3.html#jls-3.9 + "record"); public static final @NonNull String DATA_ROOT_SUFFIX = "Data"; public static final @NonNull String RPC_SERVICE_SUFFIX = "Service"; @@ -361,7 +370,9 @@ public final class BindingMapping { return javaToYang.inverse(); } - // See https://docs.oracle.com/javase/specs/jls/se9/html/jls-3.html#jls-3.8 + // See https://docs.oracle.com/javase/specs/jls/se16/html/jls-3.html#jls-3.8 + // TODO: we are being conservative here, but should differentiate TypeIdentifier and UnqualifiedMethodIdentifier, + // which have different exclusions private static boolean isValidJavaIdentifier(final String str) { return !str.isEmpty() && !JAVA_RESERVED_WORDS.contains(str) && Character.isJavaIdentifierStart(str.codePointAt(0)) -- 2.36.6