1
1
/*
2
- * Copyright (c) 2022, 2023 , Oracle and/or its affiliates. All rights reserved.
2
+ * Copyright (c) 2022, 2025 , Oracle and/or its affiliates. All rights reserved.
3
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
4
*
5
5
* This code is free software; you can redistribute it and/or modify it
22
22
*
23
23
*/
24
24
25
- /**
25
+ /*
26
26
* @test
27
27
* @bug 8291360
28
28
* @summary Test getting the class file version for java.lang.Class API
29
+ * @library /test/lib
29
30
* @modules java.base/java.lang:open
30
31
* @compile classFileVersions.jcod
31
- * @compile --enable-preview -source ${jdk.version} ClassFileVersionTest.java
32
32
* @run main/othervm --enable-preview ClassFileVersionTest
33
33
*/
34
34
35
+ import java .lang .classfile .ClassFile ;
36
+ import java .lang .constant .ClassDesc ;
35
37
import java .lang .reflect .*;
36
38
39
+ import jdk .test .lib .ByteCodeLoader ;
40
+
37
41
public class ClassFileVersionTest {
38
42
public static final int LOWER_16 = 0x0000_FFFF ;
39
- /*
40
- * Include a use of a preview API so that the minor class file
41
- * version of the class file for this class gets set during
42
- * compilation. If a particular class becomes non-preview, any
43
- * currently preview class can be substituted in.
44
- */
45
- private static final Class <?> PREVIEW_API = java .lang .ScopedValue .class ;
46
43
static Method m ;
47
44
48
45
public static void testIt (String className , int expectedResult ) throws Exception {
@@ -69,8 +66,10 @@ public static void main(String argv[]) throws Throwable {
69
66
int latestMajor = ClassFileFormatVersion .latest ().major ();
70
67
71
68
testIt (Object .class , latestMajor );
72
- // ClassFileVersionTest use preview features so its minor version should be 0xFFFF
73
- testIt (ClassFileVersionTest .class , (~LOWER_16 ) | latestMajor );
69
+
70
+ Class <?> previewClass = ByteCodeLoader .load ("PreviewClass" , ClassFile .of ().build (ClassDesc .of ("PreviewClass" ),
71
+ clb -> clb .withVersion (ClassFile .latestMajorVersion (), ClassFile .PREVIEW_MINOR_VERSION )));
72
+ testIt (previewClass , (~LOWER_16 ) | latestMajor );
74
73
testIt ("Version64" , 64 );
75
74
testIt ("Version59" , 59 );
76
75
testIt ("Version45_3" , 0x0003_002D ); // 3:45
0 commit comments