< prev index next >

src/jdk.jdeps/share/classes/com/sun/tools/javap/ClassWriter.java

Print this page
*** 34,15 ***
--- 34,19 ---
  
  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;

*** 146,11 ***
  
          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();
--- 150,11 ---
  
          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();

*** 772,10 ***
--- 776,20 ---
      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 >