Community
Participate
Working Groups
The following code: import java.lang.annotation.Retention; import static java.lang.annotation.RetentionPolicy.*; @Retention(CLASS) @interface X { int value() default -1; } leads to this output by the disassembler: // Compiled from X.java (version 1.5 : 49.0, no super bit) @Retention(value=java.lang.annotation.RetentionPolicy.CLASS) abstract @interface Annot extends Annotation { // Method descriptor #8 ()I public abstract int value() default (int) -1; } The annotation value should be: RetentionPolicy.CLASS in COMPACT mode.
Created attachment 88932 [details] Proposed fix
We now return: // Compiled from X.java (version 1.5 : 49.0, no super bit) @Retention(value=RetentionPolicy.CLASS) abstract @interface X extends Annotation { // Method descriptor #8 ()I public abstract int value() default (int) -1; }
Released for 3.4M6. Updated regression test org.eclipse.jdt.core.tests.compiler.regression.ClassFileReaderTest_1_5#test011
The test referenced in previous comment 1) reference bug 203577 2) use ClassFileBytesDisassembler.SYSTEM instead of COMPACT So, it seems that some clarification need to be done before set it as VERIFIED
The enum values are always printed in COMPACT mode. Fixed and released for 3.4M6. Added org.eclipse.jdt.core.tests.compiler.regression.ClassFileReaderTest_1_5#test013
I added also org.eclipse.jdt.core.tests.compiler.regression.ClassFileReaderTest_1_5#test014 to illustrate the DETAILED + COMPACT mode.
Verified for 3.4M6 using build I20080325-2233