--- old/test/tools/javac/processing/model/TestSourceVersion.java 2016-05-17 13:43:31.125508590 -0700 +++ new/test/tools/javac/processing/model/TestSourceVersion.java 2016-05-17 13:43:31.033508592 -0700 @@ -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,8 +23,8 @@ /* * @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 @@ -38,10 +38,38 @@ */ public class TestSourceVersion { public static void main(String... args) { + testLatestSupported(); + testUnderscore(); + } + + 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 testUnderscore() { + String underscore = "_"; + + check(true, isKeyword(underscore), "keyword", latest()); + check(false, isName(underscore), "name", latest()); + + for(SourceVersion version : SourceVersion.values()) { + boolean underscoreIsKeyword = version.compareTo(RELEASE_9 ) >= 0; + + check(underscoreIsKeyword, isKeyword(underscore, version), + "keyword", version); + check(!underscoreIsKeyword, isName(underscore, 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); + } + } }