diff --git a/test/langtools/tools/javac/versions/Versions.java b/test/langtools/tools/javac/versions/Versions.java index 1a7f618b9f2..37e00ccec25 100644 --- a/test/langtools/tools/javac/versions/Versions.java +++ b/test/langtools/tools/javac/versions/Versions.java @@ -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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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