Przeglądaj źródła

Updated with a simple erasure test case - will need more later!

tags/PRE_ANDY
aclement 19 lat temu
rodzic
commit
d494f7fd43

+ 7
- 0
bcel-builder/testdata/ErasureTestData.java Wyświetl plik

@@ -0,0 +1,7 @@
import java.util.*;

public class ErasureTestData {

public Vector<String> getData() { return null; }

}

BIN
bcel-builder/testdata/testcode.jar Wyświetl plik


+ 1
- 0
bcel-builder/testsrc/org/aspectj/apache/bcel/classfile/tests/AllTests.java Wyświetl plik

@@ -50,6 +50,7 @@ public class AllTests {
suite.addTestSuite(TypeAnnotationsTest.class);
suite.addTestSuite(UtilTests.class);
suite.addTestSuite(GenericSignatureParsingTest.class);
suite.addTestSuite(GenericsErasureTesting.class);
//$JUnit-END$
return suite;
}

+ 50
- 0
bcel-builder/testsrc/org/aspectj/apache/bcel/classfile/tests/GenericsErasureTesting.java Wyświetl plik

@@ -0,0 +1,50 @@
/* *******************************************************************
* Copyright (c) 2005 Contributors
* All rights reserved.
* This program and the accompanying materials are made available
* under the terms of the Common Public License v1.0
* which accompanies this distribution and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* Andy Clement (IBM) initial implementation
* ******************************************************************/
package org.aspectj.apache.bcel.classfile.tests;

import org.aspectj.apache.bcel.classfile.Attribute;
import org.aspectj.apache.bcel.classfile.JavaClass;
import org.aspectj.apache.bcel.classfile.Method;
import org.aspectj.apache.bcel.classfile.Signature;

/**
* Should be possible to recover original declared signatures after erasure by using
* the signature attribute.
*/
public class GenericsErasureTesting extends BcelTestCase {
public void testLoadingGenerics() throws ClassNotFoundException {
JavaClass clazz = getClassFromJar("ErasureTestData");
Method m = getMethod(clazz,"getData");
String sig = m.getDeclaredSignature();
System.err.println(getSignatureAttribute(clazz,"getData"));
System.err.println(sig);
assertTrue("Incorrect: "+sig,sig.equals("()Ljava/util/Vector<Ljava/lang/String;>;"));
}
// helper methods below
public Signature getSignatureAttribute(JavaClass clazz,String name) {
Method m = getMethod(clazz,name);
Attribute[] as = m.getAttributes();
for (int i = 0; i < as.length; i++) {
Attribute attribute = as[i];
if (attribute.getName().equals("Signature")) {
return (Signature)attribute;
}
}
return null;
}
}

Ładowanie…
Anuluj
Zapisz