8295059: test/langtools/tools/javap 12 test classes use com.sun.tools.classfile library

Reviewed-by: asotona
This commit is contained in:
Qing Xiao 2023-07-31 15:03:05 +00:00 committed by Adam Sotona
parent 3671d83c87
commit 97b688340e
11 changed files with 520 additions and 588 deletions

View file

@ -29,12 +29,17 @@
* @modules
* jdk.compiler/com.sun.tools.javac.api
* jdk.compiler/com.sun.tools.javac.main
* jdk.jdeps/com.sun.tools.classfile
* jdk.jdeps/com.sun.tools.javap
* java.base/jdk.internal.classfile
* java.base/jdk.internal.classfile.attribute
* java.base/jdk.internal.classfile.constantpool
* java.base/jdk.internal.classfile.instruction
* java.base/jdk.internal.classfile.components
* @build toolbox.JavacTask toolbox.JavapTask toolbox.ToolBox toolbox.TestRunner
* @run main TestClassNameWarning
*/
import java.lang.constant.ClassDesc;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
@ -43,9 +48,8 @@ import java.util.List;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
import com.sun.tools.classfile.ClassFile;
import com.sun.tools.classfile.ClassWriter;
import jdk.internal.classfile.*;
import toolbox.JavacTask;
import toolbox.JavapTask;
import toolbox.Task;
@ -140,7 +144,7 @@ public class TestClassNameWarning extends TestRunner {
byte[] replaceBytes = "module-info".getBytes("UTF-8");
for (int i = 0; i < bytes.length - searchBytes.length; i++) {
if (Arrays.equals(bytes, i, i + searchBytes.length,
searchBytes, 0, searchBytes.length)) {
searchBytes, 0, searchBytes.length)) {
System.arraycopy(replaceBytes, 0, bytes, i, replaceBytes.length);
}
}
@ -172,14 +176,15 @@ public class TestClassNameWarning extends TestRunner {
.files(tb.findJavaFiles(src))
.run()
.writeAll();
ClassFile cf = ClassFile.read(classes.resolve("A.class"));
ClassFile cf2 = new ClassFile(
cf.magic, cf.minor_version, cf.major_version, cf.constant_pool,
cf.access_flags,
0, // this_class,
cf.super_class, cf.interfaces, cf.fields, cf.methods, cf.attributes);
new ClassWriter().write(cf2, Files.newOutputStream(classes.resolve("Z.class")));
ClassModel cm = Classfile.of().parse(classes.resolve("A.class"));
Classfile.of().buildTo(
classes.resolve("Z.class"),
ClassDesc.of("0"), cb -> {
for (ClassElement ce : cm) {
cb.with(ce);
}
}
);
List<String> log = new JavapTask(tb)
.classpath(classes.toString())
@ -238,4 +243,3 @@ public class TestClassNameWarning extends TestRunner {
}
}
}