### Eclipse Workspace Patch 1.0 #P org.eclipse.jdt.core.tests.model Index: src/org/eclipse/jdt/core/tests/model/ClassFileTests.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core.tests.model/src/org/eclipse/jdt/core/tests/model/ClassFileTests.java,v retrieving revision 1.41 diff -u -r1.41 ClassFileTests.java --- src/org/eclipse/jdt/core/tests/model/ClassFileTests.java 8 Apr 2009 22:52:51 -0000 1.41 +++ src/org/eclipse/jdt/core/tests/model/ClassFileTests.java 17 Apr 2009 14:53:34 -0000 @@ -84,6 +84,12 @@ "package generic;\n" + "public class V extends X implements I {\n" + "}", + "generic/GenericField.java", + "package generic;\n" + + "import java.util.List;\n" + + "public class GenericField {\n" + + " protected List myField;\n" + + "}", "annotated/X.java", "package annotated;\n" + "@MyOtherAnnot\n" + @@ -1394,4 +1400,15 @@ assertEquals("Wrong value", 0xBA, bytes[2] & 0xFF); assertEquals("Wrong value", 0xBE, bytes[3] & 0xFF); } +/* + * Ensures that the annotations of a binary field are correct + */ +public void testGenericFieldGetgetTypeSignature() throws JavaModelException { + IType type = this.jarRoot.getPackageFragment("generic").getClassFile("GenericField.class").getType(); + IField field = type.getField("myField"); + assertEquals( + "Wrong type signature", + "Ljava.util.List;", + field.getTypeSignature()); +} } #P org.eclipse.jdt.core Index: model/org/eclipse/jdt/internal/core/BinaryField.java =================================================================== RCS file: /cvsroot/eclipse/org.eclipse.jdt.core/model/org/eclipse/jdt/internal/core/BinaryField.java,v retrieving revision 1.41 diff -u -r1.41 BinaryField.java --- model/org/eclipse/jdt/internal/core/BinaryField.java 7 Mar 2009 00:58:55 -0000 1.41 +++ model/org/eclipse/jdt/internal/core/BinaryField.java 17 Apr 2009 14:53:35 -0000 @@ -75,6 +75,10 @@ */ public String getTypeSignature() throws JavaModelException { IBinaryField info = (IBinaryField) getElementInfo(); + char[] genericSignature = info.getGenericSignature(); + if (genericSignature != null) { + return new String(ClassFile.translatedName(genericSignature)); + } return new String(ClassFile.translatedName(info.getTypeName())); } /* (non-Javadoc)