< prev index next >

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

Print this page
*** 34,10 ***
--- 34,12 ---
  
  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 java.lang.classfile.AccessFlags;
  import java.lang.classfile.Attributes;
  import java.lang.classfile.ClassModel;
  import java.lang.classfile.ClassSignature;
  import java.lang.classfile.ClassFile;

*** 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();
--- 148,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();

*** 419,11 ***
              print("descriptor: ");println(() -> f.fieldType().stringValue());
          }
  
          if (options.verbose)
              writeList(String.format("flags: (0x%04x) ", flags.flagsMask()),
!                     flags.flags().stream().map(fl -> "ACC_" + fl.name()).toList(),
                      "\n");
  
          if (options.showAllAttrs) {
              attrWriter.write(f.attributes());
              showBlank = true;
--- 421,11 ---
              print("descriptor: ");println(() -> f.fieldType().stringValue());
          }
  
          if (options.verbose)
              writeList(String.format("flags: (0x%04x) ", flags.flagsMask()),
!                     flags.flags().stream().map(fl -> "ACC_" + fl.toString()).toList(),
                      "\n");
  
          if (options.showAllAttrs) {
              attrWriter.write(f.attributes());
              showBlank = true;

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