< prev index next >

src/java.compiler/share/classes/javax/lang/model/SourceVersion.java

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this --- 1,7 ---- /* ! * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. Oracle designates this
*** 53,63 **** * 1.4: assert * 1.5: annotations, generics, autoboxing, var-args... * 1.6: no changes * 1.7: diamond syntax, try-with-resources, etc. * 1.8: lambda expressions and default methods ! * 9: To be determined */ /** * The original version. * --- 53,63 ---- * 1.4: assert * 1.5: annotations, generics, autoboxing, var-args... * 1.6: no changes * 1.7: diamond syntax, try-with-resources, etc. * 1.8: lambda expressions and default methods ! * 9: modules, small cleanups to 1.7 and 1.8 changes */ /** * The original version. *
*** 143,152 **** --- 143,155 ---- /** * The version recognized by the Java Platform, Standard Edition * 9. * + * Additions in this release include modules and removal of a + * single underscore from the set of legal identifier names. + * * @since 9 */ RELEASE_9; // Note that when adding constants for newer releases, the
*** 242,255 **** * @return {@code true} if this string is a * syntactically valid name, {@code false} otherwise. * @jls 6.2 Names and Identifiers */ public static boolean isName(CharSequence name) { String id = name.toString(); for(String s : id.split("\\.", -1)) { ! if (!isIdentifier(s) || isKeyword(s)) return false; } return true; } --- 245,275 ---- * @return {@code true} if this string is a * syntactically valid name, {@code false} otherwise. * @jls 6.2 Names and Identifiers */ public static boolean isName(CharSequence name) { + return isName(name, latest()); + } + + /** + * Returns whether or not {@code name} is a syntactically valid + * qualified name in the given source version. Unlike {@link + * #isIdentifier isIdentifier}, this method returns {@code false} + * for keywords and literals. + * + * @param name the string to check + * @param version the version to use + * @return {@code true} if this string is a + * syntactically valid name, {@code false} otherwise. + * @jls 6.2 Names and Identifiers + * @since 9 + */ + public static boolean isName(CharSequence name, SourceVersion version) { String id = name.toString(); for(String s : id.split("\\.", -1)) { ! if (!isIdentifier(s) || isKeyword(s, version)) return false; } return true; }
*** 266,276 **** "catch", "extends", "int", "short", "try", "char", "final", "interface", "static", "void", "class", "finally", "long", "strictfp", "volatile", "const", "float", "native", "super", "while", // literals ! "null", "true", "false" }; for(String kw : kws) s.add(kw); keywords = Collections.unmodifiableSet(s); } --- 286,297 ---- "catch", "extends", "int", "short", "try", "char", "final", "interface", "static", "void", "class", "finally", "long", "strictfp", "volatile", "const", "float", "native", "super", "while", // literals ! "null", "true", "false", ! "_" // keyword as of 9 }; for(String kw : kws) s.add(kw); keywords = Collections.unmodifiableSet(s); }
*** 283,288 **** --- 304,327 ---- * @return {@code true} if {@code s} is a keyword or literal, {@code false} otherwise. */ public static boolean isKeyword(CharSequence s) { return keywords.contains(s.toString()); } + + /** + * Returns whether or not {@code s} is a keyword or literal in the + * given source version. + * + * @param s the string to check + * @param version the version to use + * @return {@code true} if {@code s} is a keyword or literal, {@code false} otherwise. + * @since 9 + */ + public static boolean isKeyword(CharSequence s, SourceVersion version) { + String id = s.toString(); + if ("_".equals(id)) { + return version.compareTo(RELEASE_9) >= 0; + } else { + return keywords.contains(id); + } + } }
< prev index next >