Browse Source

next round of fixes for list bug reported by Alexandru.

tags/V1_5_0RC1
aclement 18 years ago
parent
commit
abb5d6c097

tests/java5/generics/bugs/lists/Bean.java → tests/java5/generics/bugs/lists/case1/Bean.java View File


tests/java5/generics/bugs/lists/Identifiable.java → tests/java5/generics/bugs/lists/case1/Identifiable.java View File


tests/java5/generics/bugs/lists/IdentifiableAspect.java → tests/java5/generics/bugs/lists/case1/IdentifiableAspect.java View File


tests/java5/generics/bugs/lists/LongIdentifiable.java → tests/java5/generics/bugs/lists/case1/LongIdentifiable.java View File


+ 3
- 0
tests/java5/generics/bugs/lists/case2/Bean.java View File

@@ -0,0 +1,3 @@
public class Bean implements LongIdentifiable {

}

+ 5
- 0
tests/java5/generics/bugs/lists/case2/Identifiable.java View File

@@ -0,0 +1,5 @@
public interface Identifiable<T> {
T getId();

void setId(T t);
}

+ 20
- 0
tests/java5/generics/bugs/lists/case2/IdentifiableAspect.java View File

@@ -0,0 +1,20 @@
public aspect IdentifiableAspect {
declare parents: Bean implements LongIdentifiable;

private Long LongIdentifiable.m_id;

public Long LongIdentifiable.getId() {
return m_id;
}

public void LongIdentifiable.setId(Long id) {
m_id= id;
}

public static void main(String []argv) {
Bean b = new Bean();
b.setId(37L);
long l = b.getId();
if (l!=37L) throw new RuntimeException("id should be 37");
}
}

+ 2
- 0
tests/java5/generics/bugs/lists/case2/LongIdentifiable.java View File

@@ -0,0 +1,2 @@
public interface LongIdentifiable extends Identifiable<Long> {
}

+ 2
- 3
tests/src/org/aspectj/systemtest/ajc150/GenericsTests.java View File

@@ -208,9 +208,8 @@ public class GenericsTests extends XMLBasedAjcTestCase {
runTest("Compilation error on generic member introduction");
}
public void testGenericsOverrides() {
runTest("generics and ITD overrides");
}
public void testGenericsOverrides_1() { runTest("generics and ITD overrides - 1"); }
public void testGenericsOverrides_2() { runTest("generics and ITD overrides - 2"); }
public void testPR88606() {
runTest("Parameterized types on introduced fields not correctly recognized");

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

@@ -191,7 +191,13 @@
</compile>
</ajc-test>
<ajc-test dir="java5/generics/bugs/lists" title="generics and ITD overrides">
<ajc-test dir="java5/generics/bugs/lists/case1" title="generics and ITD overrides - 1">
<compile files="Identifiable.java,Bean.java,LongIdentifiable.java,IdentifiableAspect.java" options="-1.5">
</compile>
<run class="IdentifiableAspect"/>
</ajc-test>

<ajc-test dir="java5/generics/bugs/lists/case2" title="generics and ITD overrides - 2">
<compile files="Identifiable.java,Bean.java,LongIdentifiable.java,IdentifiableAspect.java" options="-1.5">
</compile>
<run class="IdentifiableAspect"/>

+ 3
- 1
weaver/src/org/aspectj/weaver/ResolvedType.java View File

@@ -1424,7 +1424,10 @@ public abstract class ResolvedType extends UnresolvedType implements AnnotatedEl
private boolean compareToExistingMembers(ConcreteTypeMunger munger, Iterator existingMembers) {
ResolvedMember sig = munger.getSignature();
while (existingMembers.hasNext()) {
ResolvedMember existingMember = (ResolvedMember)existingMembers.next();
// don't worry about clashing with bridge methods
if (existingMember.isBridgeMethod()) continue;
//System.err.println("Comparing munger: "+sig+" with member "+existingMember);
if (conflictingSignature(existingMember, munger.getSignature())) {
//System.err.println("conflict: existingMember=" + existingMember + " typeMunger=" + munger);
@@ -1501,7 +1504,6 @@ public abstract class ResolvedType extends UnresolvedType implements AnnotatedEl
}
boolean incompatibleReturnTypes = false;
// In 1.5 mode, allow for covariance on return type
if (world.isInJava5Mode() && parent.getKind()==Member.METHOD) {

Loading…
Cancel
Save