--- old/src/java.compiler/share/classes/javax/lang/model/SourceVersion.java 2017-01-26 13:55:27.975830706 -0800 +++ new/src/java.compiler/share/classes/javax/lang/model/SourceVersion.java 2017-01-26 13:55:27.895830703 -0800 @@ -56,6 +56,7 @@ * 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 + * 10: to-be-determined changes */ /** @@ -150,7 +151,15 @@ * * @since 9 */ - RELEASE_9; + RELEASE_9, + + /** + * The version recognized by the Java Platform, Standard Edition + * 10. + * + * @since 10 + */ + RELEASE_10; // Note that when adding constants for newer releases, the // behavior of latest() and latestSupported() must be updated too. @@ -161,7 +170,7 @@ * @return the latest source version that can be modeled */ public static SourceVersion latest() { - return RELEASE_9; + return RELEASE_10; } private static final SourceVersion latestSupported = getLatestSupported(); @@ -171,6 +180,8 @@ String specVersion = System.getProperty("java.specification.version"); switch (specVersion) { + case "10": + return RELEASE_10; case "9": case "1.9": return RELEASE_9; --- old/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Source.java 2017-01-26 13:55:28.255830716 -0800 +++ new/src/jdk.compiler/share/classes/com/sun/tools/javac/code/Source.java 2017-01-26 13:55:28.179830713 -0800 @@ -70,8 +70,11 @@ /** 1.8 lambda expressions and default methods. */ JDK1_8("1.8"), - /** 1.9 covers the to be determined language features that will be added in JDK 9. */ - JDK1_9("1.9"); + /** 1.9 modularity. */ + JDK1_9("1.9"), + + /** 1.10 covers the to be determined language features that will be added in JDK 10. */ + JDK1_10("1.10"); private static final Context.Key sourceKey = new Context.Key<>(); @@ -99,6 +102,7 @@ tab.put("7", JDK1_7); // Make 7 an alias for 1.7 tab.put("8", JDK1_8); // Make 8 an alias for 1.8 tab.put("9", JDK1_9); // Make 9 an alias for 1.9 + tab.put("10", JDK1_10); // Make 10 an alias for 1.10 } private Source(String name) { @@ -116,6 +120,7 @@ } public Target requiredTarget() { + if (this.compareTo(JDK1_10) >= 0) return Target.JDK1_10; if (this.compareTo(JDK1_9) >= 0) return Target.JDK1_9; if (this.compareTo(JDK1_8) >= 0) return Target.JDK1_8; if (this.compareTo(JDK1_7) >= 0) return Target.JDK1_7; @@ -240,6 +245,8 @@ return RELEASE_8; case JDK1_9: return RELEASE_9; + case JDK1_10: + return RELEASE_10; default: return null; } --- old/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Target.java 2017-01-26 13:55:28.563830727 -0800 +++ new/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Target.java 2017-01-26 13:55:28.475830723 -0800 @@ -61,7 +61,10 @@ JDK1_8("1.8", 52, 0), /** JDK 9. */ - JDK1_9("1.9", 53, 0); + JDK1_9("1.9", 53, 0), + + /** JDK 10, initially an alias for 9 */ + JDK1_10("1.10", 53, 0); private static final Context.Key targetKey = new Context.Key<>(); @@ -91,6 +94,7 @@ tab.put("7", JDK1_7); tab.put("8", JDK1_8); tab.put("9", JDK1_9); + tab.put("10", JDK1_10); } public final String name; @@ -102,7 +106,7 @@ this.minorVersion = minorVersion; } - public static final Target DEFAULT = JDK1_9; + public static final Target DEFAULT = values()[values().length - 1]; public static Target lookup(String name) { return tab.get(name); @@ -146,5 +150,4 @@ public String multiReleaseValue() { return Integer.toString(this.ordinal() - Target.JDK1_1.ordinal() + 1); } - } --- old/src/jdk.compiler/share/classes/com/sun/tools/javac/platform/JDKPlatformProvider.java 2017-01-26 13:55:28.859830737 -0800 +++ new/src/jdk.compiler/share/classes/com/sun/tools/javac/platform/JDKPlatformProvider.java 2017-01-26 13:55:28.783830734 -0800 @@ -108,7 +108,9 @@ @Override public Collection getPlatformPath() { - if (Target.lookup(version) == Target.DEFAULT) { + // Comparison should be == Target.DEFAULT once --release 9 + // is distinct from 10 + if (Target.lookup(version).compareTo(Target.JDK1_9) >= 0) { return null; } --- old/src/jdk.compiler/share/classes/com/sun/tools/javac/processing/PrintingProcessor.java 2017-01-26 13:55:29.127830747 -0800 +++ new/src/jdk.compiler/share/classes/com/sun/tools/javac/processing/PrintingProcessor.java 2017-01-26 13:55:29.055830744 -0800 @@ -52,7 +52,7 @@ * deletion without notice. */ @SupportedAnnotationTypes("*") -@SupportedSourceVersion(SourceVersion.RELEASE_9) +@SupportedSourceVersion(SourceVersion.RELEASE_10) public class PrintingProcessor extends AbstractProcessor { PrintWriter writer; --- old/test/tools/javac/api/T6265137.java 2017-01-26 13:55:29.403830757 -0800 +++ new/test/tools/javac/api/T6265137.java 2017-01-26 13:55:29.327830754 -0800 @@ -52,7 +52,7 @@ String srcdir = System.getProperty("test.src"); Iterable files = fm.getJavaFileObjectsFromFiles(Arrays.asList(new File(srcdir, "T6265137a.java"))); - javac.getTask(null, fm, dl, Arrays.asList("-target","9"), null, files).call(); + javac.getTask(null, fm, dl, Arrays.asList("-target","10"), null, files).call(); } } } --- old/test/tools/javac/api/T6395981.java 2017-01-26 13:55:29.687830767 -0800 +++ new/test/tools/javac/api/T6395981.java 2017-01-26 13:55:29.611830764 -0800 @@ -23,7 +23,7 @@ /* * @test - * @bug 6395981 6458819 7025784 8028543 + * @bug 6395981 6458819 7025784 8028543 8028544 * @summary JavaCompilerTool and Tool must specify version of JLS and JVMS * @author Peter von der Ah\u00e9 * @modules java.compiler @@ -31,7 +31,7 @@ * @run main/fail T6395981 * @run main/fail T6395981 RELEASE_3 RELEASE_5 RELEASE_6 * @run main/fail T6395981 RELEASE_0 RELEASE_1 RELEASE_2 RELEASE_3 RELEASE_4 RELEASE_5 RELEASE_6 - * @run main T6395981 RELEASE_3 RELEASE_4 RELEASE_5 RELEASE_6 RELEASE_7 RELEASE_8 RELEASE_9 + * @run main T6395981 RELEASE_3 RELEASE_4 RELEASE_5 RELEASE_6 RELEASE_7 RELEASE_8 RELEASE_9 RELEASE_10 */ import java.util.EnumSet; --- old/test/tools/javac/processing/StopAfterError/StopAfterError.java 2017-01-26 13:55:29.959830777 -0800 +++ new/test/tools/javac/processing/StopAfterError/StopAfterError.java 2017-01-26 13:55:29.883830774 -0800 @@ -27,7 +27,8 @@ * @summary If an error is produced by an annotation processor, the code should not be Attred, \ * unless requested * @modules jdk.compiler - * @compile StopAfterError.java + * @library /tools/javac/lib + * @build StopAfterError JavacTestingAbstractProcessor * @compile/fail/ref=StopAfterError.out -XDrawDiagnostics -processor StopAfterError StopAfterErrorAux.java * @compile/fail/ref=StopAfterError.out -XDshould-stop.ifError=PROCESS -XDrawDiagnostics -processor StopAfterError StopAfterErrorAux.java * @compile/fail/ref=StopAfterErrorContinue.out -XDshould-stop.ifError=ATTR -XDrawDiagnostics -processor StopAfterError StopAfterErrorAux.java @@ -42,8 +43,7 @@ import javax.lang.model.element.TypeElement; import javax.tools.Diagnostic.Kind; -@SupportedAnnotationTypes("*") -public class StopAfterError extends AbstractProcessor { +public class StopAfterError extends JavacTestingAbstractProcessor { @Override public boolean process(Set annotations, RoundEnvironment roundEnv) { @@ -52,10 +52,4 @@ } return false; } - - @Override - public SourceVersion getSupportedSourceVersion() { - return SourceVersion.latestSupported(); - } - } --- old/test/tools/javac/processing/model/LocalClasses/LocalClassesModel.java 2017-01-26 13:55:30.219830786 -0800 +++ new/test/tools/javac/processing/model/LocalClasses/LocalClassesModel.java 2017-01-26 13:55:30.151830784 -0800 @@ -26,7 +26,8 @@ * @bug 8166700 * @summary Check that local classes originating in static initializer can be loaded properly. * @modules jdk.compiler - * @build LocalTest$1Local LocalTest$2Local LocalTest$3Local LocalTest$4Local LocalTest$5Local LocalTest + * @library /tools/javac/lib + * @build LocalTest$1Local LocalTest$2Local LocalTest$3Local LocalTest$4Local LocalTest$5Local LocalTest JavacTestingAbstractProcessor * @compile LocalClassesModel.java * @compile/process/ref=LocalClassesModel.out -processor LocalClassesModel LocalTest$1Local LocalTest$2Local LocalTest$3Local LocalTest$4Local LocalTest$5Local LocalTest */ @@ -42,8 +43,7 @@ import javax.lang.model.element.VariableElement; import javax.lang.model.util.ElementFilter; -@SupportedAnnotationTypes("*") -public class LocalClassesModel extends AbstractProcessor { +public class LocalClassesModel extends JavacTestingAbstractProcessor { @Override public boolean process(Set annotations, RoundEnvironment roundEnv) { @@ -65,9 +65,4 @@ return false; } - - @Override - public SourceVersion getSupportedSourceVersion() { - return SourceVersion.latestSupported(); - } } --- old/test/tools/javac/processing/model/TestSourceVersion.java 2017-01-26 13:55:30.487830796 -0800 +++ new/test/tools/javac/processing/model/TestSourceVersion.java 2017-01-26 13:55:30.407830793 -0800 @@ -23,7 +23,7 @@ /* * @test - * @bug 7025809 8028543 6415644 + * @bug 7025809 8028543 6415644 8028544 * @summary Test latest, latestSupported, underscore as keyword, etc. * @author Joseph D. Darcy * @modules java.compiler @@ -44,7 +44,7 @@ } private static void testLatestSupported() { - if (SourceVersion.latest() != RELEASE_9 || + if (SourceVersion.latest() != RELEASE_10 || SourceVersion.latestSupported() != RELEASE_9) throw new RuntimeException("Unexpected release value(s) found:\n" + "latest:\t" + SourceVersion.latest() + "\n" + --- old/test/tools/javac/processing/model/nestedTypeVars/NestedTypeVars.java 2017-01-26 13:55:30.755830805 -0800 +++ new/test/tools/javac/processing/model/nestedTypeVars/NestedTypeVars.java 2017-01-26 13:55:30.675830802 -0800 @@ -24,7 +24,8 @@ /** * @test * @modules jdk.compiler - * @build NestedTypeVars + * @library /tools/javac/lib + * @build NestedTypeVars JavacTestingAbstractProcessor * @compile/process/ref=NestedTypeVars.out -processor NestedTypeVars Test$1L1$L2$1L3$L4$L5 Test$1L1$CCheck Test$1L1 Test$1CCheck Test$CCheck Test */ @@ -44,8 +45,7 @@ import javax.lang.model.type.TypeVariable; import javax.lang.model.util.ElementFilter; -@SupportedAnnotationTypes("*") -public class NestedTypeVars extends AbstractProcessor{ +public class NestedTypeVars extends JavacTestingAbstractProcessor { @Override public boolean process(Set annotations, RoundEnvironment roundEnv) { @@ -102,12 +102,6 @@ throw new IllegalStateException("Unexpected element: " + el + "(" + el.getKind() + ")"); } } - @Override - public SourceVersion getSupportedSourceVersion() { - return SourceVersion.latestSupported(); - } - - } class Test { --- old/test/tools/javac/processing/warnings/TestSourceVersionWarnings.java 2017-01-26 13:55:31.035830815 -0800 +++ new/test/tools/javac/processing/warnings/TestSourceVersionWarnings.java 2017-01-26 13:55:30.955830812 -0800 @@ -35,6 +35,7 @@ * @compile/ref=gold_unsp_warn.out -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -ASourceVersion=RELEASE_6 -source 1.6 -Xlint:-options -Aunsupported HelloWorld.java * @compile/ref=gold_sv_none.out -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -ASourceVersion=RELEASE_7 -source 1.7 -Xlint:-options HelloWorld.java * @compile/ref=gold_sv_none.out -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -ASourceVersion=RELEASE_8 -source 1.8 -Xlint:-options HelloWorld.java + * @compile/ref=gold_sv_none.out -XDrawDiagnostics -processor TestSourceVersionWarnings -proc:only -ASourceVersion=RELEASE_9 -source 1.9 -Xlint:-options HelloWorld.java */ import java.util.Set; --- old/test/tools/javac/tree/ArrayTypeToString.java 2017-01-26 13:55:31.311830825 -0800 +++ new/test/tools/javac/tree/ArrayTypeToString.java 2017-01-26 13:55:31.231830822 -0800 @@ -26,7 +26,8 @@ * @bug 8068737 * @summary Tests ArrayType.toString with type annotations present * @modules jdk.compiler/com.sun.tools.javac.code - * @build ArrayTypeToString + * @library /tools/javac/lib + * @build ArrayTypeToString JavacTestingAbstractProcessor * @compile/ref=ArrayTypeToString.out -XDaccessInternalAPI -XDrawDiagnostics -processor ArrayTypeToString -proc:only ArrayTypeToString.java */ @@ -54,8 +55,7 @@ } @SupportedAnnotationTypes("Foo") -@SupportedSourceVersion(SourceVersion.RELEASE_9) -public class ArrayTypeToString extends AbstractProcessor { +public class ArrayTypeToString extends JavacTestingAbstractProcessor { @Foo(0) String @Foo(1)[] @Foo(2)[] @Foo(3)[] field; public boolean process(Set tes, RoundEnvironment renv) { --- old/test/tools/javac/versions/Versions.java 2017-01-26 13:55:31.587830835 -0800 +++ new/test/tools/javac/versions/Versions.java 2017-01-26 13:55:31.511830832 -0800 @@ -1,4 +1,4 @@ -/* + /* * Copyright (c) 2014, 2016, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * @@ -69,6 +69,7 @@ check("53.0", "-source 1.7"); check("53.0", "-source 1.8"); check("53.0", "-source 1.9"); + check("53.0", "-source 1.10"); check_source_target("50.0", "6", "6"); check_source_target("51.0", "6", "7"); @@ -80,6 +81,7 @@ check_source_target("53.0", "7", "9"); check_source_target("53.0", "8", "9"); check_source_target("53.0", "9", "9"); + check_source_target("53.0", "10", "10"); checksrc16("-source 1.6"); checksrc16("-source 6"); @@ -93,19 +95,26 @@ checksrc18("-source 8"); checksrc18("-source 1.8", "-target 1.8"); checksrc18("-source 8", "-target 8"); - checksrc19(); checksrc19("-source 1.9"); checksrc19("-source 9"); checksrc19("-source 1.9", "-target 1.9"); checksrc19("-source 9", "-target 9"); - checksrc19("-target 1.9"); - checksrc19("-target 9"); + + checksrc110(); + checksrc110("-source 1.10"); + checksrc110("-source 10"); + checksrc110("-source 1.10", "-target 1.10"); + checksrc110("-source 10", "-target 10"); + checksrc110("-target 1.10"); + checksrc110("-target 10"); fail("-source 7", "-target 1.6", "Base.java"); fail("-source 8", "-target 1.6", "Base.java"); fail("-source 8", "-target 1.7", "Base.java"); fail("-source 9", "-target 1.7", "Base.java"); fail("-source 9", "-target 1.8", "Base.java"); + fail("-source 10", "-target 1.7", "Base.java"); + fail("-source 10", "-target 1.8", "Base.java"); fail("-source 1.5", "-target 1.5", "Base.java"); fail("-source 1.4", "-target 1.4", "Base.java"); @@ -202,6 +211,11 @@ checksrc18(args); } + protected void checksrc110(String... args) { + printargs("checksrc110", args); + checksrc19(args); + } + protected void pass(String... args) { printargs("pass", args);