langtools/test/tools/javac/versions/Versions.java
changeset 26782 6c1bac8138d8
parent 26264 a09fedde76be
child 27319 030080f03e4f
equal deleted inserted replaced
26781:a786b07c7b91 26782:6c1bac8138d8
    99         checksrc19("-source 1.9", "-target 1.9");
    99         checksrc19("-source 1.9", "-target 1.9");
   100         checksrc19("-source 9", "-target 9");
   100         checksrc19("-source 9", "-target 9");
   101         checksrc19("-target 1.9");
   101         checksrc19("-target 1.9");
   102         checksrc19("-target 9");
   102         checksrc19("-target 9");
   103 
   103 
   104         fail("-source 7", "-target 1.6", "X.java");
   104         fail("-source 7", "-target 1.6", "Base.java");
   105         fail("-source 8", "-target 1.6", "X.java");
   105         fail("-source 8", "-target 1.6", "Base.java");
   106         fail("-source 8", "-target 1.7", "X.java");
   106         fail("-source 8", "-target 1.7", "Base.java");
   107         fail("-source 9", "-target 1.7", "X.java");
   107         fail("-source 9", "-target 1.7", "Base.java");
   108         fail("-source 9", "-target 1.8", "X.java");
   108         fail("-source 9", "-target 1.8", "Base.java");
       
   109 
       
   110         fail("-source 1.5", "-target 1.5", "Base.java");
       
   111         fail("-source 1.4", "-target 1.4", "Base.java");
       
   112         fail("-source 1.3", "-target 1.3", "Base.java");
       
   113         fail("-source 1.2", "-target 1.2", "Base.java");
   109 
   114 
   110         if (failedCases > 0) {
   115         if (failedCases > 0) {
   111             System.err.println("failedCases = " + String.valueOf(failedCases));
   116             System.err.println("failedCases = " + String.valueOf(failedCases));
   112             throw new Error("Test failed");
   117             throw new Error("Test failed");
   113         }
   118         }
   114 
   119 
   115     }
   120     }
   116 
       
   117 
       
   118 
   121 
   119     protected void printargs(String fname,String... args) {
   122     protected void printargs(String fname,String... args) {
   120         System.out.printf("test: %s", fname);
   123         System.out.printf("test: %s", fname);
   121         for (String onearg : args) {
   124         for (String onearg : args) {
   122             System.out.printf(" %s", onearg);
   125             System.out.printf(" %s", onearg);
   146             for (String onefield : fields) {
   149             for (String onefield : fields) {
   147                 jcargs.add(onefield);
   150                 jcargs.add(onefield);
   148             }
   151             }
   149         }
   152         }
   150 
   153 
   151         boolean creturn = compile("X.java", jcargs);
   154         boolean creturn = compile("Base.java", jcargs);
   152         if (!creturn) {
   155         if (!creturn) {
   153             // compilation errors note and return.. assume no class file
   156             // compilation errors note and return.. assume no class file
   154             System.err.println("check: Compilation Failed");
   157             System.err.println("check: Compilation Failed");
   155             System.err.println("\t classVersion:\t" + major);
   158             System.err.println("\t classVersion:\t" + major);
   156             System.err.println("\t arguments:\t" + jcargs);
   159             System.err.println("\t arguments:\t" + jcargs);
   157             failedCases++;
   160             failedCases++;
   158 
   161 
   159         } else if (!checkClassFileVersion("X.class", major)) {
   162         } else if (!checkClassFileVersion("Base.class", major)) {
   160             failedCases++;
   163             failedCases++;
   161         }
   164         }
   162     }
   165     }
   163 
   166 
   164     protected void checksrc16(String... args) {
   167     protected void checksrc16(String... args) {
   165         printargs("checksrc16", args);
   168         printargs("checksrc16", args);
   166         int asize = args.length;
   169         int asize = args.length;
   167         String[] newargs = new String[asize + 1];
   170         String[] newargs = new String[asize + 1];
   168         System.arraycopy(args, 0, newargs, 0, asize);
   171         System.arraycopy(args, 0, newargs, 0, asize);
   169         newargs[asize] = "X.java";
   172         newargs[asize] = "Base.java";
   170         pass(newargs);
   173         pass(newargs);
   171         newargs[asize] = "Y.java";
   174         newargs[asize] = "New17.java";
   172         fail(newargs);
   175         fail(newargs);
   173     }
   176     }
   174 
   177 
   175     protected void checksrc17(String... args) {
   178     protected void checksrc17(String... args) {
   176         printargs("checksrc17", args);
   179         printargs("checksrc17", args);
   177         int asize = args.length;
   180         int asize = args.length;
   178         String[] newargs = new String[asize+1];
   181         String[] newargs = new String[asize+1];
   179         System.arraycopy(args, 0, newargs,0 , asize);
   182         System.arraycopy(args, 0, newargs,0 , asize);
   180         newargs[asize] = "X.java";
   183         newargs[asize] = "New17.java";
   181         pass(newargs);
   184         pass(newargs);
   182         newargs[asize] = "Y.java";
   185         newargs[asize] = "New18.java";
   183         pass(newargs);
   186         fail(newargs);
   184     }
   187     }
   185 
   188 
   186     protected void checksrc18(String... args) {
   189     protected void checksrc18(String... args) {
   187         printargs("checksrc18", args);
   190         printargs("checksrc18", args);
   188         checksrc17(args);
   191         int asize = args.length;
       
   192         String[] newargs = new String[asize+1];
       
   193         System.arraycopy(args, 0, newargs,0 , asize);
       
   194         newargs[asize] = "New17.java";
       
   195         pass(newargs);
       
   196         newargs[asize] = "New18.java";
       
   197         pass(newargs);
   189     }
   198     }
   190 
   199 
   191     protected void checksrc19(String... args) {
   200     protected void checksrc19(String... args) {
   192         printargs("checksrc19", args);
   201         printargs("checksrc19", args);
   193         checksrc17(args);
   202         checksrc18(args);
   194     }
   203     }
   195 
   204 
   196     protected void pass(String... args) {
   205     protected void pass(String... args) {
   197         printargs("pass", args);
   206         printargs("pass", args);
   198 
   207 
   286             System.err.println(e);
   295             System.err.println(e);
   287             return false;
   296             return false;
   288         }
   297         }
   289     }
   298     }
   290 
   299 
       
   300     protected void writeSourceFile(String fileName, String body) throws IOException{
       
   301         try (Writer fw = new FileWriter(fileName)) {
       
   302             fw.write(body);
       
   303         }
       
   304     }
   291 
   305 
   292     protected void genSourceFiles() throws IOException{
   306     protected void genSourceFiles() throws IOException{
   293         /* Create a file that executes with all supported versions. */
   307         /* Create a file that executes with all supported versions. */
   294         File fsource = new File("X.java");
   308         writeSourceFile("Base.java","public class Base { }\n");
   295         try (Writer fw = new FileWriter(fsource)) {
   309 
   296             fw.write("public class X { }\n");
   310         /*
   297             fw.flush();
   311          * Create a file with a new feature in 1.7, not in 1.6 : "<>"
   298         }
       
   299 
       
   300         /* Create a file with feature not supported in deprecated version.
       
   301          * New feature for 1.7, does not exist in 1.6.
       
   302          */
   312          */
   303         fsource = new File("Y.java");
   313         writeSourceFile("New17.java",
   304         try (Writer fw = new FileWriter(fsource)) {
   314             "import java.util.List;\n" +
   305             fw.write("import java.util.List;\n");
   315             "import java.util.ArrayList;\n" +
   306             fw.write("import java.util.ArrayList;\n");
   316             "class New17 { List<String> s = new ArrayList<>(); }\n"
   307             fw.write("class Z { List<String> s = new ArrayList<>(); }\n");
   317         );
   308             fw.flush();
   318 
   309         }
   319         /*
       
   320          * Create a file with a new feature in 1.8, not in 1.7 : lambda
       
   321          */
       
   322         writeSourceFile("New18.java",
       
   323             "public class New18 { \n" +
       
   324             "    void m() { \n" +
       
   325             "    new Thread(() -> { }); \n" +
       
   326             "    } \n" +
       
   327             "} \n"
       
   328         );
       
   329 
   310     }
   330     }
   311 
   331 
   312     protected boolean checkClassFileVersion
   332     protected boolean checkClassFileVersion
   313         (String filename,String classVersionNumber) {
   333         (String filename,String classVersionNumber) {
   314         ByteBuffer bb = ByteBuffer.allocate(1024);
   334         ByteBuffer bb = ByteBuffer.allocate(1024);