]> source.dussan.org Git - aspectj.git/commitdiff
test updates and the fix for cases 3&4 in 120916: Jrockit test failures with RC1
authoraclement <aclement>
Thu, 15 Dec 2005 10:36:22 +0000 (10:36 +0000)
committeraclement <aclement>
Thu, 15 Dec 2005 10:36:22 +0000 (10:36 +0000)
tests/src/org/aspectj/systemtest/ajc150/GenericsTests.java
weaver/src/org/aspectj/weaver/bcel/LazyClassGen.java

index 34ef3cc42f7e394f75c65b6487c26d808169c5be..aad28e2a5bfbc2e0411f2449a039a9f5a3461f86 100644 (file)
@@ -538,6 +538,7 @@ public class GenericsTests extends XMLBasedAjcTestCase {
        
        public void testPR96220_GenericDecp() {
                runTest("generic decp - simple");
+               checkOneSignatureAttribute(ajc,"Basic");
                verifyClassSignature(ajc,"Basic","Ljava/lang/Object;LJ<Ljava/lang/Double;>;LI<Ljava/lang/Double;>;");
        }
        
@@ -582,6 +583,7 @@ public class GenericsTests extends XMLBasedAjcTestCase {
 
        public void testGenericDecpParameterized() {
                runTest("generic decp - with parameterized on the target");
+               checkOneSignatureAttribute(ajc,"Basic6");
                verifyClassSignature(ajc,"Basic6","<J:Ljava/lang/Object;>Ljava/lang/Object;LI<TJ;>;LK<Ljava/lang/Integer;>;");
        }
        
@@ -953,6 +955,22 @@ public class GenericsTests extends XMLBasedAjcTestCase {
                return sigAttr;
        }
        
+       public static void checkOneSignatureAttribute(Ajc ajc,String classname) {
+               JavaClass clazz = getClass(ajc,classname);
+               Signature sigAttr = null;
+               Attribute[] attrs = clazz.getAttributes();
+               int signatureCount = 0;
+               StringBuffer sb = new StringBuffer();
+               for (int i = 0; i < attrs.length; i++) {
+                       Attribute attribute = attrs[i];
+                       if (attribute.getName().equals("Signature")) {
+                               signatureCount++;
+                               sb.append("\n"+((Signature)attribute).getSignature());
+                       }
+               }
+               if (signatureCount>1) fail("Should be only one signature attribute but found "+signatureCount+sb.toString());
+       }
+       
        // Check the signature attribute on a class is correct
        public static void verifyClassSignature(Ajc ajc,String classname,String sig) {
                Signature sigAttr = getClassSignature(ajc,classname);
index 6279ef1445725e181673398d69cc6c0fed924642..a22920a7796721fe744a2b4fde9a19ba91b8c84b 100644 (file)
@@ -572,11 +572,9 @@ public final class LazyClassGen {
                                String s = interfaceRTXs[i].getSignatureForAttribute();
                                signature.append(s);
                        }
+                       if (sigAttr!=null) myGen.removeAttribute(sigAttr);
                        myGen.addAttribute(createSignatureAttribute(signature.toString()));
                }
-               
-               // TODO asc generics The 'old' signature is left in the constant pool - I wonder how safe it would be to 
-               // remove it since we don't know what else (if anything) is referring to it
        }
        
        /**