8309134: Augment test/langtools/tools/javac/versions/Versions.java for JDK 21 language changes

Reviewed-by: jjg
This commit is contained in:
Joe Darcy 2023-05-30 21:58:50 +00:00
parent de7fd1c306
commit cb40db052c

@ -1,5 +1,5 @@
/*
* Copyright (c) 2014, 2022, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, 2023, 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
@ -89,7 +89,7 @@ public class Versions {
EIGHTEEN(false, "62.0", "18", Versions::checksrc18),
NINETEEN(false, "63.0", "19", Versions::checksrc19),
TWENTY(false, "64.0", "20", Versions::checksrc20),
TWENTY_ONE(false,"65.0", "21", Versions::checksrc20);
TWENTY_ONE(false,"65.0", "21", Versions::checksrc21);
private final boolean dotOne;
private final String classFileVer;
@ -248,85 +248,97 @@ public class Versions {
protected void checksrc8(List<String> args) {
printargs("checksrc8", args);
expectedPass(args, List.of("New7.java", "New8.java"));
expectedFail(args, List.of("New10.java"));
expectedFail(args, List.of("New10.java", "New11.java", "New14.java", "New15.java",
"New16.java", "New17.java", "New21.java"));
}
protected void checksrc9(List<String> args) {
printargs("checksrc9", args);
expectedPass(args, List.of("New7.java", "New8.java"));
expectedFail(args, List.of("New10.java"));
expectedFail(args, List.of("New10.java", "New11.java", "New14.java", "New15.java",
"New16.java", "New17.java", "New21.java"));
}
protected void checksrc10(List<String> args) {
printargs("checksrc10", args);
expectedPass(args, List.of("New7.java", "New8.java", "New10.java"));
expectedFail(args, List.of("New11.java"));
expectedFail(args, List.of("New11.java", "New14.java", "New15.java",
"New16.java", "New17.java", "New21.java"));
}
protected void checksrc11(List<String> args) {
printargs("checksrc11", args);
expectedPass(args, List.of("New7.java", "New8.java", "New10.java", "New11.java"));
expectedFail(args, List.of("New14.java"));
expectedFail(args, List.of("New14.java", "New15.java", "New16.java", "New17.java", "New21.java"));
}
protected void checksrc12(List<String> args) {
printargs("checksrc12", args);
expectedPass(args, List.of("New7.java", "New8.java", "New10.java", "New11.java"));
expectedFail(args, List.of("New14.java"));
expectedFail(args, List.of("New14.java", "New15.java", "New16.java", "New17.java", "New21.java"));
}
protected void checksrc13(List<String> args) {
printargs("checksrc13", args);
expectedPass(args, List.of("New7.java", "New8.java", "New10.java", "New11.java"));
expectedFail(args, List.of("New14.java"));
expectedFail(args, List.of("New14.java", "New15.java", "New16.java", "New17.java", "New21.java"));
}
protected void checksrc14(List<String> args) {
printargs("checksrc14", args);
expectedPass(args, List.of("New7.java", "New8.java", "New10.java", "New11.java",
"New14.java"));
expectedFail(args, List.of("New15.java"));
expectedFail(args, List.of("New15.java", "New16.java", "New17.java", "New21.java"));
}
protected void checksrc15(List<String> args) {
printargs("checksrc15", args);
expectedPass(args, List.of("New7.java", "New8.java", "New10.java", "New11.java",
"New14.java", "New15.java"));
expectedFail(args, List.of("New16.java"));
expectedFail(args, List.of("New16.java", "New17.java", "New21.java"));
}
protected void checksrc16(List<String> args) {
printargs("checksrc16", args);
expectedPass(args, List.of("New7.java", "New8.java", "New10.java", "New11.java",
"New14.java", "New15.java", "New16.java"));
expectedFail(args, List.of("New17.java"));
expectedFail(args, List.of("New17.java", "New21.java"));
}
protected void checksrc17(List<String> args) {
printargs("checksrc17", args);
expectedPass(args, List.of("New7.java", "New8.java", "New10.java", "New11.java",
"New14.java", "New15.java", "New16.java", "New17.java"));
// Add expectedFail after new language features added in a later release.
expectedFail(args, List.of("New21.java"));
}
protected void checksrc18(List<String> args) {
printargs("checksrc18", args);
expectedPass(args, List.of("New7.java", "New8.java", "New10.java", "New11.java",
"New14.java", "New15.java", "New16.java", "New17.java"));
// Add expectedFail after new language features added in a later release.
expectedFail(args, List.of("New21.java"));
}
protected void checksrc19(List<String> args) {
printargs("checksrc19", args);
expectedPass(args, List.of("New7.java", "New8.java", "New10.java", "New11.java",
"New14.java", "New15.java", "New16.java", "New17.java"));
// Add expectedFail after new language features added in a later release.
expectedFail(args, List.of("New21.java"));
}
protected void checksrc20(List<String> args) {
printargs("checksrc20", args);
expectedPass(args, List.of("New7.java", "New8.java", "New10.java", "New11.java",
"New14.java", "New15.java", "New16.java", "New17.java"));
expectedFail(args, List.of("New21.java"));
}
protected void checksrc21(List<String> args) {
printargs("checksrc21", args);
expectedPass(args, List.of("New7.java", "New8.java", "New10.java", "New11.java",
"New14.java", "New15.java", "New16.java", "New17.java",
"New21.java"));
// Add expectedFail after new language features added in a later release.
}
@ -384,7 +396,6 @@ public class Versions {
failedCases++;
}
}
protected void fail(List<String> args) {
@ -569,6 +580,24 @@ public class Versions {
}
"""
);
/*
* Create a file with a new feature in 21, not in 20 : pattern matching for switch
*/
writeSourceFile("New21.java",
"""
public class New21 {
public static void main(String... args) {
Object o = new Object(){};
System.out.println(switch (o) {
case Integer i -> String.format("%d", i);
default -> o.toString();
});
}
}
"""
);
}
protected boolean checkClassFileVersion