Browse Source

test that a signature with a generic declaring type does not match on the erasure of the parameter types

tags/PRE_ANDY
acolyer 19 years ago
parent
commit
69bfddbefa

+ 18
- 0
tests/java5/generics/pointcuts/GenericDeclaringTypeWithParameterErasure.aj View File

@@ -0,0 +1,18 @@
public aspect GenericDeclaringTypeWithParameterErasure {
// tests that the erasure of parameter types does NOT match a member when
// the declaring type pattern is generic (must use the type variable instead in
// the non-raw [cooked?] world).
void someCode() {
ConcreteImplementingClass cic = new ConcreteImplementingClass();
cic.asInt(5.0d);
GenericImplementingClass<Long> gic = new GenericImplementingClass<Long>();
gic.asInt(55L);
}
declare warning :
execution<N>(* GenericInterface<N>.asInt(Number)) :
"execution<N>(* GenericInterface<N>.asInt(Number))";
}

+ 4
- 0
tests/src/org/aspectj/systemtest/ajc150/GenericsTests.java View File

@@ -188,6 +188,10 @@ public class GenericsTests extends XMLBasedAjcTestCase {
runTest("execution pcd with raw signature matching");
}
public void testExecutionWithGenericDeclaringTypeAndErasedParameterTypes() {
runTest("execution pcd with generic declaring type and erased parameter types");
}
// --- helpers
// Check the signature attribute on a class is correct

+ 7
- 1
tests/src/org/aspectj/systemtest/ajc150/ajc150.xml View File

@@ -2472,12 +2472,18 @@
</compile>
</ajc-test>
<ajc-test dir="java5/generics/pointcuts" title="execution pcd with raw signature matching">
<ajc-test dir="java5/generics/pointcuts" title="execution pcd with raw signature matching">
<compile files="GenericInterface.java,ConcreteImplementingClass.java,GenericImplementingClass.java,RawSignatureMatching.aj" options="-1.5">
<message kind="warning" line="4" text="execution(* GenericInterface.asInt(Number))"/>
<message kind="warning" line="5" text="execution(* GenericInterface.asInt(Number))"/>
</compile>
</ajc-test>

<ajc-test dir="java5/generics/pointcuts" title="execution pcd with generic declaring type and erased parameter types">
<compile files="GenericInterface.java,ConcreteImplementingClass.java,GenericImplementingClass.java,GenericDeclaringTypeWithParameterErasure.aj" options="-1.5">
</compile>
</ajc-test>

<!-- end of generics and pointcuts tests -->
<!-- ============================================================== -->

Loading…
Cancel
Save