瀏覽代碼

test updates and the fix for cases 3&4 in 120916: Jrockit test failures with RC1

tags/Root_RB_V1_5_0
aclement 18 年之前
父節點
當前提交
332eef9ebd

+ 18
- 0
tests/src/org/aspectj/systemtest/ajc150/GenericsTests.java 查看文件

@@ -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);

+ 1
- 3
weaver/src/org/aspectj/weaver/bcel/LazyClassGen.java 查看文件

@@ -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
}
/**

Loading…
取消
儲存