< prev index next >

test/tools/javac/processing/model/TestSourceVersion.java

Print this page

        

@@ -1,7 +1,7 @@
 /*
- * 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
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.

@@ -21,12 +21,12 @@
  * questions.
  */
 
 /*
  * @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
  */
 

@@ -36,12 +36,40 @@
 /**
  * Verify latest[Supported] behavior.
  */
 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);
+        }
+    }
 }
< prev index next >