From: aclement Date: Wed, 16 Nov 2005 15:59:15 +0000 (+0000) Subject: next round of fixes for list bug reported by Alexandru. X-Git-Tag: V1_5_0RC1~175 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=abb5d6c097d8c0ec8f33dc95342732855148bb18;p=aspectj.git next round of fixes for list bug reported by Alexandru. --- diff --git a/tests/java5/generics/bugs/lists/Bean.java b/tests/java5/generics/bugs/lists/Bean.java deleted file mode 100644 index b1260caea..000000000 --- a/tests/java5/generics/bugs/lists/Bean.java +++ /dev/null @@ -1,10 +0,0 @@ -public class Bean implements LongIdentifiable { - - public Long getId() { - return null; - } - - public void setId(Long t) { - } - -} diff --git a/tests/java5/generics/bugs/lists/Identifiable.java b/tests/java5/generics/bugs/lists/Identifiable.java deleted file mode 100644 index 645ee36de..000000000 --- a/tests/java5/generics/bugs/lists/Identifiable.java +++ /dev/null @@ -1,5 +0,0 @@ -public interface Identifiable { - T getId(); - - void setId(T t); -} diff --git a/tests/java5/generics/bugs/lists/IdentifiableAspect.java b/tests/java5/generics/bugs/lists/IdentifiableAspect.java deleted file mode 100644 index 32fe42390..000000000 --- a/tests/java5/generics/bugs/lists/IdentifiableAspect.java +++ /dev/null @@ -1,17 +0,0 @@ -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) { - new Bean(); - } -} diff --git a/tests/java5/generics/bugs/lists/LongIdentifiable.java b/tests/java5/generics/bugs/lists/LongIdentifiable.java deleted file mode 100644 index 37fa76252..000000000 --- a/tests/java5/generics/bugs/lists/LongIdentifiable.java +++ /dev/null @@ -1,2 +0,0 @@ -public interface LongIdentifiable extends Identifiable { -} diff --git a/tests/java5/generics/bugs/lists/case1/Bean.java b/tests/java5/generics/bugs/lists/case1/Bean.java new file mode 100644 index 000000000..b1260caea --- /dev/null +++ b/tests/java5/generics/bugs/lists/case1/Bean.java @@ -0,0 +1,10 @@ +public class Bean implements LongIdentifiable { + + public Long getId() { + return null; + } + + public void setId(Long t) { + } + +} diff --git a/tests/java5/generics/bugs/lists/case1/Identifiable.java b/tests/java5/generics/bugs/lists/case1/Identifiable.java new file mode 100644 index 000000000..645ee36de --- /dev/null +++ b/tests/java5/generics/bugs/lists/case1/Identifiable.java @@ -0,0 +1,5 @@ +public interface Identifiable { + T getId(); + + void setId(T t); +} diff --git a/tests/java5/generics/bugs/lists/case1/IdentifiableAspect.java b/tests/java5/generics/bugs/lists/case1/IdentifiableAspect.java new file mode 100644 index 000000000..32fe42390 --- /dev/null +++ b/tests/java5/generics/bugs/lists/case1/IdentifiableAspect.java @@ -0,0 +1,17 @@ +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) { + new Bean(); + } +} diff --git a/tests/java5/generics/bugs/lists/case1/LongIdentifiable.java b/tests/java5/generics/bugs/lists/case1/LongIdentifiable.java new file mode 100644 index 000000000..37fa76252 --- /dev/null +++ b/tests/java5/generics/bugs/lists/case1/LongIdentifiable.java @@ -0,0 +1,2 @@ +public interface LongIdentifiable extends Identifiable { +} diff --git a/tests/java5/generics/bugs/lists/case2/Bean.java b/tests/java5/generics/bugs/lists/case2/Bean.java new file mode 100644 index 000000000..3415bed70 --- /dev/null +++ b/tests/java5/generics/bugs/lists/case2/Bean.java @@ -0,0 +1,3 @@ +public class Bean implements LongIdentifiable { + +} diff --git a/tests/java5/generics/bugs/lists/case2/Identifiable.java b/tests/java5/generics/bugs/lists/case2/Identifiable.java new file mode 100644 index 000000000..645ee36de --- /dev/null +++ b/tests/java5/generics/bugs/lists/case2/Identifiable.java @@ -0,0 +1,5 @@ +public interface Identifiable { + T getId(); + + void setId(T t); +} diff --git a/tests/java5/generics/bugs/lists/case2/IdentifiableAspect.java b/tests/java5/generics/bugs/lists/case2/IdentifiableAspect.java new file mode 100644 index 000000000..bbf593657 --- /dev/null +++ b/tests/java5/generics/bugs/lists/case2/IdentifiableAspect.java @@ -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"); + } +} diff --git a/tests/java5/generics/bugs/lists/case2/LongIdentifiable.java b/tests/java5/generics/bugs/lists/case2/LongIdentifiable.java new file mode 100644 index 000000000..37fa76252 --- /dev/null +++ b/tests/java5/generics/bugs/lists/case2/LongIdentifiable.java @@ -0,0 +1,2 @@ +public interface LongIdentifiable extends Identifiable { +} diff --git a/tests/src/org/aspectj/systemtest/ajc150/GenericsTests.java b/tests/src/org/aspectj/systemtest/ajc150/GenericsTests.java index a42f62f05..7d0865b5f 100644 --- a/tests/src/org/aspectj/systemtest/ajc150/GenericsTests.java +++ b/tests/src/org/aspectj/systemtest/ajc150/GenericsTests.java @@ -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"); diff --git a/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml b/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml index f84bcf8cf..545495004 100644 --- a/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml +++ b/tests/src/org/aspectj/systemtest/ajc150/ajc150.xml @@ -191,7 +191,13 @@ - + + + + + + + diff --git a/weaver/src/org/aspectj/weaver/ResolvedType.java b/weaver/src/org/aspectj/weaver/ResolvedType.java index 34a7b05e2..e4cbb5be7 100644 --- a/weaver/src/org/aspectj/weaver/ResolvedType.java +++ b/weaver/src/org/aspectj/weaver/ResolvedType.java @@ -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) {