6415644: Make javax.lang.model.SourceVersion more informative

Reviewed-by: jjg
This commit is contained in:
Joe Darcy 2016-05-20 17:00:03 -07:00
parent e568099980
commit 8c88656e09
2 changed files with 144 additions and 35 deletions

View file

@ -1,5 +1,5 @@
/*
* Copyright (c) 2011, 2015, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2011, 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
@ -23,13 +23,14 @@
/*
* @test
* @bug 7025809 8028543
* @summary Test latest and latestSupported
* @bug 7025809 8028543 6415644
* @summary Test latest, latestSupported, underscore as keyword, etc.
* @author Joseph D. Darcy
* @modules java.compiler
* jdk.compiler
*/
import java.util.*;
import javax.lang.model.SourceVersion;
import static javax.lang.model.SourceVersion.*;
@ -38,10 +39,45 @@ import static javax.lang.model.SourceVersion.*;
*/
public class TestSourceVersion {
public static void main(String... args) {
testLatestSupported();
testVersionVaryingKeywords();
}
private static void testLatestSupported() {
if (SourceVersion.latest() != RELEASE_9 ||
SourceVersion.latestSupported() != RELEASE_9)
throw new RuntimeException("Unexpected release value(s) found:\n" +
"latest:\t" + SourceVersion.latest() + "\n" +
"latestSupported:\t" + SourceVersion.latestSupported());
}
private static void testVersionVaryingKeywords() {
Map<String, SourceVersion> keyWordStart =
Map.of("strictfp", RELEASE_2,
"assert", RELEASE_4,
"enum", RELEASE_5,
"_", RELEASE_9);
for (Map.Entry<String, SourceVersion> entry : keyWordStart.entrySet()) {
String key = entry.getKey();
SourceVersion value = entry.getValue();
check(true, isKeyword(key), "keyword", latest());
check(false, isName(key), "name", latest());
for(SourceVersion version : SourceVersion.values()) {
boolean isKeyword = version.compareTo(value) >= 0;
check(isKeyword, isKeyword(key, version), "keyword", version);
check(!isKeyword, isName(key, version), "name", version);
}
}
}
private static void check(boolean result, boolean expected,
String message, SourceVersion version) {
if (result != expected) {
throw new RuntimeException("Unexpected " + message + "-ness of _ on " + version);
}
}
}