From: Robert Varga Date: Mon, 2 Sep 2019 15:50:50 +0000 (+0200) Subject: Add 'var', 'yield' and 'record' to Java reserved words X-Git-Tag: v8.0.0~72 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=commitdiff_plain;h=fc9179bad702407d1d88075dd89db78e97d81343;p=mdsal.git 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 --- 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))