langtools/src/share/classes/com/sun/tools/javap/AttributeWriter.java
changeset 15031 c4fad55a5681
parent 8042 d534dd80da9f
child 15385 ee1eebe7e210
--- a/langtools/src/share/classes/com/sun/tools/javap/AttributeWriter.java	Fri Dec 28 22:25:21 2012 -0800
+++ b/langtools/src/share/classes/com/sun/tools/javap/AttributeWriter.java	Sat Dec 29 17:33:17 2012 -0800
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -46,6 +46,7 @@
 import com.sun.tools.classfile.LineNumberTable_attribute;
 import com.sun.tools.classfile.LocalVariableTable_attribute;
 import com.sun.tools.classfile.LocalVariableTypeTable_attribute;
+import com.sun.tools.classfile.MethodParameters_attribute;
 import com.sun.tools.classfile.RuntimeInvisibleAnnotations_attribute;
 import com.sun.tools.classfile.RuntimeInvisibleParameterAnnotations_attribute;
 import com.sun.tools.classfile.RuntimeVisibleAnnotations_attribute;
@@ -386,6 +387,28 @@
         return null;
     }
 
+    private static final String format = "%-31s%s";
+
+    public Void visitMethodParameters(MethodParameters_attribute attr,
+                                      Void ignore) {
+
+        final String header = String.format(format, "Name", "Flags");
+        println("MethodParameters:");
+        indent(+1);
+        println(header);
+        for (MethodParameters_attribute.Entry entry :
+                 attr.method_parameter_table) {
+            String flagstr =
+                (0 != (entry.flags & ACC_FINAL) ? " final" : "") +
+                (0 != (entry.flags & ACC_SYNTHETIC) ? " synthetic" : "");
+            println(String.format(format,
+                                  constantWriter.stringValue(entry.name_index),
+                                  flagstr));
+        }
+        indent(-1);
+        return null;
+    }
+
     public Void visitRuntimeVisibleAnnotations(RuntimeVisibleAnnotations_attribute attr, Void ignore) {
         println("RuntimeVisibleAnnotations:");
         indent(+1);