< prev index next >

test/langtools/tools/javac/versions/Versions.java

Print this page




 257         newargs[asize] = "New110.java";
 258         fail(newargs);
 259     }
 260 
 261     protected void checksrc19(String... args) {
 262         printargs("checksrc19", args);
 263         checksrc18(args);
 264     }
 265 
 266     protected void checksrc110(String... args) {
 267         printargs("checksrc110", args);
 268         int asize = args.length;
 269         String[] newargs = new String[asize+1];
 270         System.arraycopy(args, 0, newargs,0 , asize);
 271         newargs[asize] = "New17.java";
 272         pass(newargs);
 273         newargs[asize] = "New18.java";
 274         pass(newargs);
 275         newargs[asize] = "New110.java";
 276         pass(newargs);


 277     }
 278 
 279     protected void checksrc111(String... args) {
 280         printargs("checksrc111", args);
 281         int asize = args.length;
 282         String[] newargs = new String[asize+1];
 283         System.arraycopy(args, 0, newargs,0 , asize);
 284         newargs[asize] = "New17.java";
 285         pass(newargs);
 286         newargs[asize] = "New18.java";
 287         pass(newargs);
 288         newargs[asize] = "New110.java";
 289         pass(newargs);
 290         newargs[asize] = "New111.java";
 291         pass(newargs);


 292     }
 293 
 294     protected void checksrc112(String... args) {
 295         printargs("checksrc112", args);
 296         checksrc111(args);
 297     }
 298 
 299     protected void checksrc113(String... args) {
 300         printargs("checksrc113", args);
 301         checksrc111(args);
 302     }
 303 
 304     protected void checksrc114(String... args) {
 305         printargs("checksrc114", args);
 306         checksrc111(args);












 307     }
 308 
 309     protected void checksrc115(String... args) {
 310         printargs("checksrc115", args);
 311         checksrc111(args);
 312     }
 313 
 314     protected void pass(String... args) {
 315         printargs("pass", args);
 316 
 317         List<String> jcargs = new ArrayList<String>();
 318         jcargs.add("-Xlint:-options");
 319 
 320         // add in args conforming to List requrements of JavaCompiler
 321         for (String onearg : args) {
 322             String[] fields = onearg.split(" ");
 323             for (String onefield : fields) {
 324                 jcargs.add(onefield);
 325             }
 326         }
 327 
 328         // empty list is error
 329         if (jcargs.isEmpty()) {
 330             System.err.println("error: test error in pass() - No arguments");
 331             System.err.println("\t arguments:\t" + jcargs);


 406             }
 407         } catch (IOException e) {
 408             throw new Error(e);
 409         }
 410     }
 411 
 412     protected void writeSourceFile(String fileName, String body) throws IOException{
 413         try (Writer fw = new FileWriter(fileName)) {
 414             fw.write(body);
 415         }
 416     }
 417 
 418     protected void genSourceFiles() throws IOException{
 419         /* Create a file that executes with all supported versions. */
 420         writeSourceFile("Base.java","public class Base { }\n");
 421 
 422         /*
 423          * Create a file with a new feature in 1.7, not in 1.6 : "<>"
 424          */
 425         writeSourceFile("New17.java",
 426             "import java.util.List;\n" +
 427             "import java.util.ArrayList;\n" +
 428             "class New17 { List<String> s = new ArrayList<>(); }\n"


 429         );
 430 
 431         /*
 432          * Create a file with a new feature in 1.8, not in 1.7 : lambda
 433          */
 434         writeSourceFile("New18.java",
 435             "public class New18 { \n" +
 436             "    void m() { \n" +
 437             "    new Thread(() -> { }); \n" +
 438             "    } \n" +
 439             "} \n"


 440         );
 441 
 442         /*
 443          * Create a file with a new feature in 1.10, not in 1.9 : var
 444          */
 445         writeSourceFile("New110.java",
 446             "public class New110 { \n" +
 447             "    void m() { \n" +
 448             "    var tmp = new Thread(() -> { }); \n" +
 449             "    } \n" +
 450             "} \n"


 451         );
 452 
 453         /*
 454          * Create a file with a new feature in 11, not in 10 : var for lambda parameters
 455          */
 456         writeSourceFile("New111.java",
 457             "public class New111 { \n" +
 458             "    static java.util.function.Function<String,String> f = (var x) -> x.substring(0);\n" +
 459             "    void m(String name) { \n" +
 460             "    var tmp = new Thread(() -> { }, f.apply(name)); \n" +
 461             "    } \n" +
 462             "} \n"





















 463         );
 464     }
 465 
 466     protected boolean checkClassFileVersion
 467         (String filename,String classVersionNumber) {
 468         ByteBuffer bb = ByteBuffer.allocate(1024);
 469         try (FileChannel fc = new FileInputStream(filename).getChannel()) {
 470             bb.clear();
 471             if (fc.read(bb) < 0)
 472                 throw new IOException("Could not read from file : " + filename);
 473             bb.flip();
 474             int minor = bb.getShort(4);
 475             int major = bb.getShort(6);
 476             String fileVersion = major + "." + minor;
 477             if (fileVersion.equals(classVersionNumber)) {
 478                 return true;
 479             } else {
 480                 System.err.println("checkClassFileVersion : Failed");
 481                 System.err.println("\tclassfile version mismatch");
 482                 System.err.println("\texpected : " + classVersionNumber);


 257         newargs[asize] = "New110.java";
 258         fail(newargs);
 259     }
 260 
 261     protected void checksrc19(String... args) {
 262         printargs("checksrc19", args);
 263         checksrc18(args);
 264     }
 265 
 266     protected void checksrc110(String... args) {
 267         printargs("checksrc110", args);
 268         int asize = args.length;
 269         String[] newargs = new String[asize+1];
 270         System.arraycopy(args, 0, newargs,0 , asize);
 271         newargs[asize] = "New17.java";
 272         pass(newargs);
 273         newargs[asize] = "New18.java";
 274         pass(newargs);
 275         newargs[asize] = "New110.java";
 276         pass(newargs);
 277         newargs[asize] = "New111.java";
 278         fail(newargs);
 279     }
 280 
 281     protected void checksrc111(String... args) {
 282         printargs("checksrc111", args);
 283         int asize = args.length;
 284         String[] newargs = new String[asize+1];
 285         System.arraycopy(args, 0, newargs,0 , asize);
 286         newargs[asize] = "New17.java";
 287         pass(newargs);
 288         newargs[asize] = "New18.java";
 289         pass(newargs);
 290         newargs[asize] = "New110.java";
 291         pass(newargs);
 292         newargs[asize] = "New111.java";
 293         pass(newargs);
 294         newargs[asize] = "New114.java";
 295         fail(newargs);
 296     }
 297 
 298     protected void checksrc112(String... args) {
 299         printargs("checksrc112", args);
 300         checksrc111(args);
 301     }
 302 
 303     protected void checksrc113(String... args) {
 304         printargs("checksrc113", args);
 305         checksrc111(args);
 306     }
 307 
 308     protected void checksrc114(String... args) {
 309         printargs("checksrc114", args);
 310          int asize = args.length;
 311          String[] newargs = new String[asize+1];
 312          System.arraycopy(args, 0, newargs,0 , asize);
 313          newargs[asize] = "New17.java";
 314          pass(newargs);
 315          newargs[asize] = "New18.java";
 316          pass(newargs);
 317          newargs[asize] = "New110.java";
 318          pass(newargs);
 319          newargs[asize] = "New111.java";
 320          pass(newargs);
 321          newargs[asize] = "New114.java";
 322          pass(newargs);
 323     }
 324 
 325     protected void checksrc115(String... args) {
 326         printargs("checksrc115", args);
 327         checksrc114(args);
 328     }
 329 
 330     protected void pass(String... args) {
 331         printargs("pass", args);
 332 
 333         List<String> jcargs = new ArrayList<String>();
 334         jcargs.add("-Xlint:-options");
 335 
 336         // add in args conforming to List requrements of JavaCompiler
 337         for (String onearg : args) {
 338             String[] fields = onearg.split(" ");
 339             for (String onefield : fields) {
 340                 jcargs.add(onefield);
 341             }
 342         }
 343 
 344         // empty list is error
 345         if (jcargs.isEmpty()) {
 346             System.err.println("error: test error in pass() - No arguments");
 347             System.err.println("\t arguments:\t" + jcargs);


 422             }
 423         } catch (IOException e) {
 424             throw new Error(e);
 425         }
 426     }
 427 
 428     protected void writeSourceFile(String fileName, String body) throws IOException{
 429         try (Writer fw = new FileWriter(fileName)) {
 430             fw.write(body);
 431         }
 432     }
 433 
 434     protected void genSourceFiles() throws IOException{
 435         /* Create a file that executes with all supported versions. */
 436         writeSourceFile("Base.java","public class Base { }\n");
 437 
 438         /*
 439          * Create a file with a new feature in 1.7, not in 1.6 : "<>"
 440          */
 441         writeSourceFile("New17.java",
 442             """
 443             import java.util.List;
 444             import java.util.ArrayList;
 445             class New17 { List<String> s = new ArrayList<>(); }
 446             """
 447         );
 448 
 449         /*
 450          * Create a file with a new feature in 1.8, not in 1.7 : lambda
 451          */
 452         writeSourceFile("New18.java",
 453             """
 454             public class New18 {
 455                 void m() {
 456                 new Thread(() -> { });
 457                 }
 458             }
 459              """
 460         );
 461 
 462         /*
 463          * Create a file with a new feature in 1.10, not in 1.9 : var
 464          */
 465         writeSourceFile("New110.java",
 466             """
 467             public class New110 {
 468                 void m() {
 469                 var tmp = new Thread(() -> { });
 470                 }
 471             }
 472             """
 473         );
 474 
 475         /*
 476          * Create a file with a new feature in 11, not in 10 : var for lambda parameters
 477          */
 478         writeSourceFile("New111.java",
 479             """
 480             public class New111 {
 481                 static java.util.function.Function<String,String> f = (var x) -> x.substring(0);
 482                 void m(String name) {
 483                 var tmp = new Thread(() -> { }, f.apply(name));
 484                 }
 485             }
 486             """
 487         );
 488 
 489         /*
 490          * Create a file with a new feature in 14, not in 13 : switch expressions
 491          */
 492         writeSourceFile("New114.java",
 493             """
 494             public class New114 {
 495                 static {
 496                     int i = 5;
 497                     System.out.println(
 498                         switch(i) {
 499                             case 0 -> false;
 500                             default -> true;
 501                         }
 502                     );
 503                 }
 504             }
 505             """
 506         );
 507     }
 508 
 509     protected boolean checkClassFileVersion
 510         (String filename,String classVersionNumber) {
 511         ByteBuffer bb = ByteBuffer.allocate(1024);
 512         try (FileChannel fc = new FileInputStream(filename).getChannel()) {
 513             bb.clear();
 514             if (fc.read(bb) < 0)
 515                 throw new IOException("Could not read from file : " + filename);
 516             bb.flip();
 517             int minor = bb.getShort(4);
 518             int major = bb.getShort(6);
 519             String fileVersion = major + "." + minor;
 520             if (fileVersion.equals(classVersionNumber)) {
 521                 return true;
 522             } else {
 523                 System.err.println("checkClassFileVersion : Failed");
 524                 System.err.println("\tclassfile version mismatch");
 525                 System.err.println("\texpected : " + classVersionNumber);
< prev index next >