]> source.dussan.org Git - aspectj.git/commitdiff
next round of fixes for list bug reported by Alexandru.
authoraclement <aclement>
Wed, 16 Nov 2005 15:59:15 +0000 (15:59 +0000)
committeraclement <aclement>
Wed, 16 Nov 2005 15:59:15 +0000 (15:59 +0000)
15 files changed:
tests/java5/generics/bugs/lists/Bean.java [deleted file]
tests/java5/generics/bugs/lists/Identifiable.java [deleted file]
tests/java5/generics/bugs/lists/IdentifiableAspect.java [deleted file]
tests/java5/generics/bugs/lists/LongIdentifiable.java [deleted file]
tests/java5/generics/bugs/lists/case1/Bean.java [new file with mode: 0644]
tests/java5/generics/bugs/lists/case1/Identifiable.java [new file with mode: 0644]
tests/java5/generics/bugs/lists/case1/IdentifiableAspect.java [new file with mode: 0644]
tests/java5/generics/bugs/lists/case1/LongIdentifiable.java [new file with mode: 0644]
tests/java5/generics/bugs/lists/case2/Bean.java [new file with mode: 0644]
tests/java5/generics/bugs/lists/case2/Identifiable.java [new file with mode: 0644]
tests/java5/generics/bugs/lists/case2/IdentifiableAspect.java [new file with mode: 0644]
tests/java5/generics/bugs/lists/case2/LongIdentifiable.java [new file with mode: 0644]
tests/src/org/aspectj/systemtest/ajc150/GenericsTests.java
tests/src/org/aspectj/systemtest/ajc150/ajc150.xml
weaver/src/org/aspectj/weaver/ResolvedType.java

diff --git a/tests/java5/generics/bugs/lists/Bean.java b/tests/java5/generics/bugs/lists/Bean.java
deleted file mode 100644 (file)
index b1260ca..0000000
+++ /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 (file)
index 645ee36..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-public interface Identifiable<T> {
-  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 (file)
index 32fe423..0000000
+++ /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 (file)
index 37fa762..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-public interface LongIdentifiable extends Identifiable<Long> {
-}
diff --git a/tests/java5/generics/bugs/lists/case1/Bean.java b/tests/java5/generics/bugs/lists/case1/Bean.java
new file mode 100644 (file)
index 0000000..b1260ca
--- /dev/null
@@ -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 (file)
index 0000000..645ee36
--- /dev/null
@@ -0,0 +1,5 @@
+public interface Identifiable<T> {
+  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 (file)
index 0000000..32fe423
--- /dev/null
@@ -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 (file)
index 0000000..37fa762
--- /dev/null
@@ -0,0 +1,2 @@
+public interface LongIdentifiable extends Identifiable<Long> {
+}
diff --git a/tests/java5/generics/bugs/lists/case2/Bean.java b/tests/java5/generics/bugs/lists/case2/Bean.java
new file mode 100644 (file)
index 0000000..3415bed
--- /dev/null
@@ -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 (file)
index 0000000..645ee36
--- /dev/null
@@ -0,0 +1,5 @@
+public interface Identifiable<T> {
+  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 (file)
index 0000000..bbf5936
--- /dev/null
@@ -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 (file)
index 0000000..37fa762
--- /dev/null
@@ -0,0 +1,2 @@
+public interface LongIdentifiable extends Identifiable<Long> {
+}
index a42f62f050ad2dc61561bdf3869d1a16effe0f92..7d0865b5fde1a1afa0ccef6aabf5f207375d698a 100644 (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");
index f84bcf8cf95675a297dcfbf7041276e31b06b214..545495004efccc7747c9e3f32825175824d18eac 100644 (file)
         </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"/>
index 34a7b05e2934c0b60023d50f0b2507d805af7fd5..e4cbb5be7db30338f0ae0b20d7300e2a6b03e961 100644 (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) {