6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24 /*
25 * @test
26 * @bug 7025809 8028543 6415644 8028544 8029942
27 * @summary Test latest, latestSupported, underscore as keyword, etc.
28 * @author Joseph D. Darcy
29 * @modules java.compiler
30 * jdk.compiler
31 */
32
33 import java.util.*;
34 import javax.lang.model.SourceVersion;
35 import static javax.lang.model.SourceVersion.*;
36
37 /**
38 * Verify latest[Supported] behavior.
39 */
40 public class TestSourceVersion {
41 public static void main(String... args) {
42 testLatestSupported();
43 testVersionVaryingKeywords();
44 testRestrictedKeywords();
45 }
46
47 private static void testLatestSupported() {
48 if (SourceVersion.latest() != RELEASE_10 ||
49 SourceVersion.latestSupported() != RELEASE_10)
50 throw new RuntimeException("Unexpected release value(s) found:\n" +
51 "latest:\t" + SourceVersion.latest() + "\n" +
52 "latestSupported:\t" + SourceVersion.latestSupported());
53 }
54
55 private static void testVersionVaryingKeywords() {
56 Map<String, SourceVersion> keyWordStart =
57 Map.of("strictfp", RELEASE_2,
58 "assert", RELEASE_4,
59 "enum", RELEASE_5,
60 "_", RELEASE_9);
61
62 for (Map.Entry<String, SourceVersion> entry : keyWordStart.entrySet()) {
63 String key = entry.getKey();
64 SourceVersion value = entry.getValue();
76 }
77
78 private static void testRestrictedKeywords() {
79 // Restricted keywords are not full keywords
80
81 /*
82 * JLS 3.9
83 * " A further ten character sequences are restricted
84 * keywords: open, module, requires, transitive, exports,
85 * opens, to, uses, provides, and with"
86 */
87 Set<String> restrictedKeywords =
88 Set.of("open", "module", "requires", "transitive", "exports",
89 "opens", "to", "uses", "provides", "with");
90
91 for(String key : restrictedKeywords) {
92 for(SourceVersion version : SourceVersion.values()) {
93 check(false, isKeyword(key, version), "keyword", version);
94 check(true, isName(key, version), "name", version);
95 }
96 }
97 }
98
99 private static void check(boolean result, boolean expected,
100 String message, SourceVersion version) {
101 if (result != expected) {
102 throw new RuntimeException("Unexpected " + message + "-ness of _ on " + version);
103 }
104 }
105 }
|
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24 /*
25 * @test
26 * @bug 7025809 8028543 6415644 8028544 8029942 8187982 8187951
27 * @summary Test latest, latestSupported, underscore as keyword, etc.
28 * @author Joseph D. Darcy
29 * @modules java.compiler
30 * jdk.compiler
31 */
32
33 import java.util.*;
34 import javax.lang.model.SourceVersion;
35 import static javax.lang.model.SourceVersion.*;
36
37 /**
38 * Verify latest[Supported] behavior.
39 */
40 public class TestSourceVersion {
41 public static void main(String... args) {
42 testLatestSupported();
43 testVersionVaryingKeywords();
44 testRestrictedKeywords();
45 testVar();
46 }
47
48 private static void testLatestSupported() {
49 if (SourceVersion.latest() != RELEASE_10 ||
50 SourceVersion.latestSupported() != RELEASE_10)
51 throw new RuntimeException("Unexpected release value(s) found:\n" +
52 "latest:\t" + SourceVersion.latest() + "\n" +
53 "latestSupported:\t" + SourceVersion.latestSupported());
54 }
55
56 private static void testVersionVaryingKeywords() {
57 Map<String, SourceVersion> keyWordStart =
58 Map.of("strictfp", RELEASE_2,
59 "assert", RELEASE_4,
60 "enum", RELEASE_5,
61 "_", RELEASE_9);
62
63 for (Map.Entry<String, SourceVersion> entry : keyWordStart.entrySet()) {
64 String key = entry.getKey();
65 SourceVersion value = entry.getValue();
77 }
78
79 private static void testRestrictedKeywords() {
80 // Restricted keywords are not full keywords
81
82 /*
83 * JLS 3.9
84 * " A further ten character sequences are restricted
85 * keywords: open, module, requires, transitive, exports,
86 * opens, to, uses, provides, and with"
87 */
88 Set<String> restrictedKeywords =
89 Set.of("open", "module", "requires", "transitive", "exports",
90 "opens", "to", "uses", "provides", "with");
91
92 for(String key : restrictedKeywords) {
93 for(SourceVersion version : SourceVersion.values()) {
94 check(false, isKeyword(key, version), "keyword", version);
95 check(true, isName(key, version), "name", version);
96 }
97 }
98 }
99
100 private static void testVar() {
101
102 for(SourceVersion version : SourceVersion.values()) {
103 check(false, isKeyword("var", version), "keyword", version);
104 check(false, isKeyword("foo.var", version), "keyword", version);
105 check(false, isKeyword("var.foo", version), "keyword", version);
106
107 // The string "var" doesn't have special handling until release 10.
108 boolean lessThan10 = version.compareTo(RELEASE_10) < 0;
109 check(lessThan10, isName("var", version), "name", version);
110 check(lessThan10, isName("foo.var", version), "name", version);
111 check(true, isName("var.foo", version), "name", version);
112 }
113 }
114
115 private static void check(boolean result, boolean expected,
116 String message, SourceVersion version) {
117 if (result != expected) {
118 throw new RuntimeException("Unexpected " + message + "-ness of _ on " + version);
119 }
120 }
121 }
|