< prev index next > src/jdk.jdeps/share/classes/com/sun/tools/javap/ClassWriter.java
Print this page
import java.lang.constant.ClassDesc;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.LinkedHashSet;
+
+ import com.sun.tools.javac.code.Source;
+ import com.sun.tools.javac.jvm.ClassFile;
import jdk.internal.classfile.AccessFlags;
import jdk.internal.classfile.Attributes;
import jdk.internal.classfile.ClassModel;
import jdk.internal.classfile.ClassSignature;
import jdk.internal.classfile.Classfile;
+
import static jdk.internal.classfile.Classfile.*;
import jdk.internal.classfile.constantpool.*;
import jdk.internal.classfile.FieldModel;
import jdk.internal.classfile.MethodModel;
import jdk.internal.classfile.MethodSignature;
if (options.sysInfo || options.verbose) {
indent(-1);
}
! writeModifiers(getClassModifiers(cm.flags().flagsMask()));
if ((classModel.flags().flagsMask() & ACC_MODULE) != 0) {
var attr = classModel.findAttribute(Attributes.MODULE);
if (attr.isPresent()) {
var modAttr = attr.get();
if (options.sysInfo || options.verbose) {
indent(-1);
}
! writeModifiers(getClassModifiers(cm.flags().flagsMask(), classModel.majorVersion(), classModel.minorVersion()));
if ((classModel.flags().flagsMask() & ACC_MODULE) != 0) {
var attr = classModel.findAttribute(Attributes.MODULE);
if (attr.isPresent()) {
var modAttr = attr.get();
private static Set<String> getClassModifiers(int mask) {
return getModifiers(AccessFlags.ofClass((mask & ACC_INTERFACE) != 0
? mask & ~ACC_ABSTRACT : mask).flags());
}
+ private static Set<String> getClassModifiers(int mask, int majorVersion, int minorVersion) {
+ boolean previewClassFile = minorVersion == ClassFile.PREVIEW_MINOR_VERSION;
+ Set<String> result = getModifiers(AccessFlags.ofClass((mask & ACC_INTERFACE) != 0
+ ? mask & ~ACC_ABSTRACT : mask).flags());
+ if ((mask & ACC_INTERFACE) == 0 && Source.isSupported(Source.Feature.VALUE_CLASSES, majorVersion) && previewClassFile) {
+ result.add("value");
+ }
+ return result;
+ }
+
private static Set<String> getMethodModifiers(int mask) {
return getModifiers(AccessFlags.ofMethod(mask).flags());
}
private static Set<String> getFieldModifiers(int mask) {
< prev index next >