This is the mail archive of the mauve-discuss@sourceware.org mailing list for the Mauve project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Mauve vs 1.5


Hi Tom,

On Mon, 2006-12-25 at 14:23 -0700, Tom Tromey wrote:
> >>>>> "Mark" == Mark Wielaard <mark@klomp.org> writes:
> 
> [ CharArrayWriter and Appendable ]
> Mark> Now this is of course easily fixed by using -1.5 so the compiler knows
> Mark> about covariant return types and makes all these tests that define
> Mark> classes that extend some Writer class compile again.
> 
> Yes, let's do that...
> 
> Mark> But now we have another problem. Shown by anything that has implements a
> Mark> retrofitted Comparable<T> interface like Integer:
> 
> Mark> 1. ERROR in gnu/testlet/java/lang/Integer/compareTo.java  line 98:
> Mark>         harness.check(zero.compareTo(o) == 0);
> Mark>                            ^^^^^^^^^
> Mark>   The method compareTo(Integer) in the type Integer is not applicable for the arguments (Object)
> 
> In this code, 'o' is just 'zero' cast to an Object.
> 
> You could just change it to use compareTo(zero), but that doesn't test
> the same thing...
> 
> You could change it to:
> 
> harness.check(((Comparable) zero).compareTo(o) == 0);
> 
> This will check using the raw Comparable and preserve the meaning of
> the test, more or less.

Nice. I hadn't thought about that solution. And it does seem to test the
thing that the original code was testing. Attached is the patch that
I'll commit to switch to -1.5 by default now. Most issues were fixed by
the above trick. Some others were done by supplying more specific types
for some (local) variables. There are some tests disabled now regarding
getEventListeners() for classes that don't extend EventListener. I don't
see a way to adapt these tests, but they also look like something that
nobody would every do in real world code. But if someone has a trick to
test this for some real-world cases that would be nice.

2006-12-27  Mark Wielaard  <mark@klomp.org>

    * Makefile.am (JAVACFLAGS): Use -1.5.
    * Makefile.in: Regenerated.
    * gnu/testlet/java/awt/Component/getListeners.java: Disable
    non-compiling test.
    * gnu/testlet/javax/swing/table/DefaultTableColumnModel/
    getListeners.java: Likewise.
    * gnu/testlet/java/awt/Container/getListeners.java: Likewise.
    * gnu/testlet/javax/swing/DefaultListSelectionModel/
    getListeners.java: Likewise.
    * gnu/testlet/javax/swing/JComponent/getListeners.java:
    Likewise.
    * gnu/testlet/javax/swing/event/EventListenerList/add.java: Use
    more specific local variable types.
    * gnu/testlet/javax/swing/event/EventListenerList/
    getListenerCount.java: Likewise.
    * gnu/testlet/javax/swing/event/EventListenerList/
    getListenerList.java: Likewise.
    * gnu/testlet/javax/swing/event/EventListenerList/getListeners.java:
    Likewise. Disable non-compiling test.
    * gnu/testlet/javax/swing/event/EventListenerList/remove.java:
    Likewise.
    * gnu/testlet/java/lang/Double/compareTo.java: Add Comparable cast.
    * gnu/testlet/java/lang/Float/compareTo.java: Likewise.
    * gnu/testlet/java/lang/Integer/compareTo.java: Likewise.
    * gnu/testlet/java/math/BigDecimal/DiagBigDecimal.java: Likewise.
    * gnu/testlet/java/math/BigInteger/compareTo.java: Likewise.
    * gnu/testlet/java/util/Date/compareTo.java: Likewise.
    * gnu/testlet/javax/imageio/spi/ServiceRegistry/setOrdering.java:
    Use correct class literal.

Cheers,

Mark
Index: Makefile.am
===================================================================
RCS file: /cvs/mauve/mauve/Makefile.am,v
retrieving revision 1.32
diff -u -r1.32 Makefile.am
--- Makefile.am	26 Nov 2006 16:30:03 -0000	1.32
+++ Makefile.am	27 Dec 2006 15:44:57 -0000
@@ -3,7 +3,7 @@
 ## FIXME: dependencies
 AUTOMAKE_OPTIONS = foreign subdir-objects no-dependencies
 
-JAVACFLAGS = -g
+JAVACFLAGS = -g -1.5
 
 TESTFLAGS =
 
Index: Makefile.in
===================================================================
RCS file: /cvs/mauve/mauve/Makefile.in,v
retrieving revision 1.41
diff -u -r1.41 Makefile.in
--- Makefile.in	26 Nov 2006 16:30:03 -0000	1.41
+++ Makefile.in	27 Dec 2006 15:44:57 -0000
@@ -154,7 +154,7 @@
 sysconfdir = @sysconfdir@
 target_alias = @target_alias@
 AUTOMAKE_OPTIONS = foreign subdir-objects no-dependencies
-JAVACFLAGS = -g
+JAVACFLAGS = -g -1.5
 TESTFLAGS = 
 check_DATA = $(STAMP)
 harness_files = \
Index: gnu/testlet/java/awt/Component/getListeners.java
===================================================================
RCS file: /cvs/mauve/mauve/gnu/testlet/java/awt/Component/getListeners.java,v
retrieving revision 1.1
diff -u -r1.1 getListeners.java
--- gnu/testlet/java/awt/Component/getListeners.java	23 Nov 2005 14:52:58 -0000	1.1
+++ gnu/testlet/java/awt/Component/getListeners.java	27 Dec 2006 15:44:57 -0000
@@ -69,6 +69,7 @@
     }
     harness.check(pass);
     
+  /* Doesn't compile with 1.5
     // try a class that isn't a listener
     pass = false;
     try
@@ -80,6 +81,7 @@
       pass = true;
     }
     harness.check(pass);
+  */
   }
   
   public void componentResized(ComponentEvent e) 
Index: gnu/testlet/java/awt/Container/getListeners.java
===================================================================
RCS file: /cvs/mauve/mauve/gnu/testlet/java/awt/Container/getListeners.java,v
retrieving revision 1.1
diff -u -r1.1 getListeners.java
--- gnu/testlet/java/awt/Container/getListeners.java	23 Nov 2005 15:04:57 -0000	1.1
+++ gnu/testlet/java/awt/Container/getListeners.java	27 Dec 2006 15:44:57 -0000
@@ -69,7 +69,8 @@
       pass = true;    
     }
     harness.check(pass);
-    
+
+  /* Doesn't compile with 1.5    
     // try a class that isn't a listener
     pass = false;
     try
@@ -81,6 +82,7 @@
       pass = true;
     }
     harness.check(pass);
+  */
   }
   
   public void componentAdded(ContainerEvent e) 
Index: gnu/testlet/java/lang/Double/compareTo.java
===================================================================
RCS file: /cvs/mauve/mauve/gnu/testlet/java/lang/Double/compareTo.java,v
retrieving revision 1.1
diff -u -r1.1 compareTo.java
--- gnu/testlet/java/lang/Double/compareTo.java	19 Feb 2005 20:34:54 -0000	1.1
+++ gnu/testlet/java/lang/Double/compareTo.java	27 Dec 2006 15:44:57 -0000
@@ -83,7 +83,7 @@
     boolean pass = false;
     try 
     {
-      d1.compareTo((Float) null);
+      ((Comparable)d1).compareTo((Float) null);
     }
     catch (NullPointerException e) 
     {
@@ -100,7 +100,7 @@
     boolean pass = false;
     try 
     {
-      d1.compareTo((Object) null);
+      ((Comparable)d1).compareTo((Object) null);
     }
     catch (NullPointerException e) 
     {
@@ -111,7 +111,7 @@
     pass = false;
     try 
     {
-      d1.compareTo("Not a Double!");
+      ((Comparable)d1).compareTo("Not a Double!");
     }
     catch (ClassCastException e) 
     {
@@ -120,4 +120,4 @@
     harness.check(pass);
     
   }
-}
\ No newline at end of file
+}
Index: gnu/testlet/java/lang/Float/compareTo.java
===================================================================
RCS file: /cvs/mauve/mauve/gnu/testlet/java/lang/Float/compareTo.java,v
retrieving revision 1.1
diff -u -r1.1 compareTo.java
--- gnu/testlet/java/lang/Float/compareTo.java	19 Feb 2005 20:34:54 -0000	1.1
+++ gnu/testlet/java/lang/Float/compareTo.java	27 Dec 2006 15:44:57 -0000
@@ -99,7 +99,7 @@
     boolean pass = false;
     try 
     {
-      f1.compareTo((Object) null);
+      ((Comparable)f1).compareTo((Object) null);
     }
     catch (NullPointerException e) 
     {
@@ -110,7 +110,7 @@
     pass = false;
     try 
     {
-      f1.compareTo("Not a Float!");
+      ((Comparable)f1).compareTo("Not a Float!");
     }
     catch (ClassCastException e) 
     {
@@ -119,4 +119,4 @@
     harness.check(pass);
   }
 
-}
\ No newline at end of file
+}
Index: gnu/testlet/java/lang/Integer/compareTo.java
===================================================================
RCS file: /cvs/mauve/mauve/gnu/testlet/java/lang/Integer/compareTo.java,v
retrieving revision 1.1
diff -u -r1.1 compareTo.java
--- gnu/testlet/java/lang/Integer/compareTo.java	9 Aug 2001 09:24:14 -0000	1.1
+++ gnu/testlet/java/lang/Integer/compareTo.java	27 Dec 2006 15:44:57 -0000
@@ -95,7 +95,7 @@
 
     Object o = zero;
     boolean ok;
-    harness.check(zero.compareTo(o) == 0);
+    harness.check(((Comparable)zero).compareTo(o) == 0);
 
     ok = false;
     try
@@ -111,7 +111,7 @@
     ok = false;
     try
       {
-	zero.compareTo((Object) null);
+	((Comparable)zero).compareTo((Object) null);
       }
     catch (NullPointerException e)
       {
@@ -122,7 +122,7 @@
     ok = false;
     try
       {
-	zero.compareTo(new Object());
+	((Comparable)zero).compareTo(new Object());
       }
     catch (ClassCastException e)
       {
Index: gnu/testlet/java/math/BigDecimal/DiagBigDecimal.java
===================================================================
RCS file: /cvs/mauve/mauve/gnu/testlet/java/math/BigDecimal/DiagBigDecimal.java,v
retrieving revision 1.4
diff -u -r1.4 DiagBigDecimal.java
--- gnu/testlet/java/math/BigDecimal/DiagBigDecimal.java	27 Jan 2003 15:45:27 -0000	1.4
+++ gnu/testlet/java/math/BigDecimal/DiagBigDecimal.java	27 Dec 2006 15:44:57 -0000
@@ -1856,16 +1856,16 @@
   BigDecimal long2;
   
   d=new BigDecimal(17);
-  harness.check ((d.compareTo((java.lang.Object)(new BigDecimal(66))))==(-1), "cto001");
-  harness.check ((d.compareTo((java.lang.Object)((new BigDecimal(10)).add(new BigDecimal(7)))))==0, "cto002");
-  harness.check ((d.compareTo((java.lang.Object)(new BigDecimal(10))))==1, "cto003");
+  harness.check ((((Comparable)d).compareTo((java.lang.Object)(new BigDecimal(66))))==(-1), "cto001");
+  harness.check ((((Comparable)d).compareTo((java.lang.Object)((new BigDecimal(10)).add(new BigDecimal(7)))))==0, "cto002");
+  harness.check ((((Comparable)d).compareTo((java.lang.Object)(new BigDecimal(10))))==1, "cto003");
   long1=new BigDecimal("12345678903");
   long2=new BigDecimal("12345678900");
-  harness.check ((long1.compareTo((java.lang.Object)long2))==1, "cto004");
-  harness.check ((long2.compareTo((java.lang.Object)long1))==(-1), "cto005");
-  harness.check ((long2.compareTo((java.lang.Object)long2))==0, "cto006");
+  harness.check ((((Comparable)long1).compareTo((java.lang.Object)long2))==1, "cto004");
+  harness.check ((((Comparable)long2).compareTo((java.lang.Object)long1))==(-1), "cto005");
+  harness.check ((((Comparable)long2).compareTo((java.lang.Object)long2))==0, "cto006");
   try{
-   d.compareTo((java.lang.Object)null);
+   ((Comparable)d).compareTo((java.lang.Object)null);
    flag=false;
   }
   catch (java.lang.NullPointerException xx92){
@@ -1873,7 +1873,7 @@
   }
   harness.check (flag, "cto101");
   try{
-   d.compareTo((java.lang.Object)"foo");
+   ((Comparable)d).compareTo((java.lang.Object)"foo");
    flag=false;
   }
   catch (java.lang.ClassCastException xx93){
Index: gnu/testlet/java/math/BigInteger/compareTo.java
===================================================================
RCS file: /cvs/mauve/mauve/gnu/testlet/java/math/BigInteger/compareTo.java,v
retrieving revision 1.1
diff -u -r1.1 compareTo.java
--- gnu/testlet/java/math/BigInteger/compareTo.java	19 Sep 2004 20:35:04 -0000	1.1
+++ gnu/testlet/java/math/BigInteger/compareTo.java	27 Dec 2006 15:44:57 -0000
@@ -76,7 +76,7 @@
     boolean pass = false;
     try
     {
-      a.compareTo(new Integer(1));
+      ((Comparable)a).compareTo(new Integer(1));
     }
     catch (ClassCastException ee) 
     {
Index: gnu/testlet/java/util/Date/compareTo.java
===================================================================
RCS file: /cvs/mauve/mauve/gnu/testlet/java/util/Date/compareTo.java,v
retrieving revision 1.1
diff -u -r1.1 compareTo.java
--- gnu/testlet/java/util/Date/compareTo.java	19 Feb 2005 20:27:13 -0000	1.1
+++ gnu/testlet/java/util/Date/compareTo.java	27 Dec 2006 15:44:58 -0000
@@ -101,7 +101,7 @@
     boolean pass = false;
     try 
     {
-      d1.compareTo((Object) null);
+      ((Comparable)d1).compareTo((Object) null);
     }
     catch (NullPointerException e) 
     {
@@ -112,7 +112,7 @@
     pass = false;
     try 
     {
-      d1.compareTo("Not a Date!");
+      ((Comparable)d1).compareTo("Not a Date!");
     }
     catch (ClassCastException e) 
     {
@@ -120,4 +120,4 @@
     }
     harness.check(pass);
   }
-}
\ No newline at end of file
+}
Index: gnu/testlet/javax/imageio/spi/ServiceRegistry/setOrdering.java
===================================================================
RCS file: /cvs/mauve/mauve/gnu/testlet/javax/imageio/spi/ServiceRegistry/setOrdering.java,v
retrieving revision 1.1
diff -u -r1.1 setOrdering.java
--- gnu/testlet/javax/imageio/spi/ServiceRegistry/setOrdering.java	24 Mar 2004 07:55:39 -0000	1.1
+++ gnu/testlet/javax/imageio/spi/ServiceRegistry/setOrdering.java	27 Dec 2006 15:44:58 -0000
@@ -58,7 +58,7 @@
     caught = null;
     try
       {
-        registry.setOrdering(List.class, "foo", "bar");
+        registry.setOrdering(String.class, "foo",  null);
       }
     catch (Exception ex)
       {
Index: gnu/testlet/javax/swing/DefaultListSelectionModel/getListeners.java
===================================================================
RCS file: /cvs/mauve/mauve/gnu/testlet/javax/swing/DefaultListSelectionModel/getListeners.java,v
retrieving revision 1.1
diff -u -r1.1 getListeners.java
--- gnu/testlet/javax/swing/DefaultListSelectionModel/getListeners.java	31 May 2006 09:07:44 -0000	1.1
+++ gnu/testlet/javax/swing/DefaultListSelectionModel/getListeners.java	27 Dec 2006 15:44:58 -0000
@@ -51,6 +51,7 @@
         m.getListeners(ListSelectionListener.class); 
     harness.check(listeners[0], this);
     
+  /* Doesn't compile with 1.5
     boolean pass = false;
     try
       {
@@ -61,6 +62,7 @@
         pass = true;
       }
     harness.check(pass);
+  */
   }
   
 }
Index: gnu/testlet/javax/swing/JComponent/getListeners.java
===================================================================
RCS file: /cvs/mauve/mauve/gnu/testlet/javax/swing/JComponent/getListeners.java,v
retrieving revision 1.3
diff -u -r1.3 getListeners.java
--- gnu/testlet/javax/swing/JComponent/getListeners.java	28 Jun 2006 14:29:34 -0000	1.3
+++ gnu/testlet/javax/swing/JComponent/getListeners.java	27 Dec 2006 15:44:58 -0000
@@ -113,6 +113,7 @@
     }
     harness.check(pass);
     
+  /* Doesn't compile with 1.5
     // try a class that isn't a listener
     pass = false;
     try
@@ -124,6 +125,7 @@
       pass = true;
     }
     harness.check(pass);
+  */
   }
   
   public void ancestorMoved(AncestorEvent e)
Index: gnu/testlet/javax/swing/event/EventListenerList/add.java
===================================================================
RCS file: /cvs/mauve/mauve/gnu/testlet/javax/swing/event/EventListenerList/add.java,v
retrieving revision 1.1
diff -u -r1.1 add.java
--- gnu/testlet/javax/swing/event/EventListenerList/add.java	6 Jan 2004 07:44:24 -0000	1.1
+++ gnu/testlet/javax/swing/event/EventListenerList/add.java	27 Dec 2006 15:44:58 -0000
@@ -51,8 +51,8 @@
   public void test(TestHarness harness)
   {
     EventListenerList ell = new EventListenerList();
-    EventListener l1 = new L();
-    EventListener l2 = new L();
+    L l1 = new L();
+    L l2 = new L();
     Object[] list;
 
     // Check #1.
Index: gnu/testlet/javax/swing/event/EventListenerList/getListenerCount.java
===================================================================
RCS file: /cvs/mauve/mauve/gnu/testlet/javax/swing/event/EventListenerList/getListenerCount.java,v
retrieving revision 1.1
diff -u -r1.1 getListenerCount.java
--- gnu/testlet/javax/swing/event/EventListenerList/getListenerCount.java	6 Jan 2004 14:25:55 -0000	1.1
+++ gnu/testlet/javax/swing/event/EventListenerList/getListenerCount.java	27 Dec 2006 15:44:58 -0000
@@ -40,10 +40,10 @@
   public void test(TestHarness harness)
   {
     EventListenerList ell = new EventListenerList();
-    EventListener l1 = new L1();
-    EventListener l2 = new L2();
-    EventListener l3_1 = new L3();
-    EventListener l3_2 = new L3();
+    L1 l1 = new L1();
+    L2 l2 = new L2();
+    L3 l3_1 = new L3();
+    L3 l3_2 = new L3();
 
     // Check #1.
     harness.check(ell.getListenerCount(), 0);
Index: gnu/testlet/javax/swing/event/EventListenerList/getListenerList.java
===================================================================
RCS file: /cvs/mauve/mauve/gnu/testlet/javax/swing/event/EventListenerList/getListenerList.java,v
retrieving revision 1.1
diff -u -r1.1 getListenerList.java
--- gnu/testlet/javax/swing/event/EventListenerList/getListenerList.java	6 Jan 2004 14:25:55 -0000	1.1
+++ gnu/testlet/javax/swing/event/EventListenerList/getListenerList.java	27 Dec 2006 15:44:58 -0000
@@ -43,7 +43,7 @@
   {
     EventListenerList ell = new EventListenerList();
     EventListener l1 = new L();
-    EventListener l2 = new L();
+    L l2 = new L();
     Object[] list;
 
     // Check #1.
Index: gnu/testlet/javax/swing/event/EventListenerList/getListeners.java
===================================================================
RCS file: /cvs/mauve/mauve/gnu/testlet/javax/swing/event/EventListenerList/getListeners.java,v
retrieving revision 1.1
diff -u -r1.1 getListeners.java
--- gnu/testlet/javax/swing/event/EventListenerList/getListeners.java	6 Jan 2004 14:25:55 -0000	1.1
+++ gnu/testlet/javax/swing/event/EventListenerList/getListeners.java	27 Dec 2006 15:44:58 -0000
@@ -58,10 +58,10 @@
   public void test(TestHarness harness)
   {
     EventListenerList ell = new EventListenerList();
-    EventListener l1a = new L1();
-    EventListener l1b = new L1();
-    EventListener l2 = new L2();
-    EventListener l3 = new L3();
+    L1 l1a = new L1();
+    L1 l1b = new L1();
+    L2 l2 = new L2();
+    L3 l3 = new L3();
     EventListener[] list;
     Throwable caught;
 
@@ -105,6 +105,7 @@
       }
     harness.check(caught instanceof NullPointerException);
 
+  /* Doesn't compile with 1.5
     // Check #15.
     caught = null;
     try
@@ -116,5 +117,6 @@
         caught = ex;
       }
     harness.check(caught instanceof ClassCastException);
+  */
   }
 }
Index: gnu/testlet/javax/swing/event/EventListenerList/remove.java
===================================================================
RCS file: /cvs/mauve/mauve/gnu/testlet/javax/swing/event/EventListenerList/remove.java,v
retrieving revision 1.1
diff -u -r1.1 remove.java
--- gnu/testlet/javax/swing/event/EventListenerList/remove.java	6 Jan 2004 08:57:12 -0000	1.1
+++ gnu/testlet/javax/swing/event/EventListenerList/remove.java	27 Dec 2006 15:44:58 -0000
@@ -47,7 +47,7 @@
   {
     EventListenerList ell = new EventListenerList();
     EventListener l1 = new L();
-    EventListener l2 = new L();
+    L l2 = new L();
     Object[] list;
     Throwable caught;
 
@@ -108,6 +108,7 @@
       }
     harness.check(caught, null);
 
+  /* Doesn't compile with 1.5
     // Check #8: Removing non-instance.
     // Classpath bug #7105.
     caught = null;
@@ -120,6 +121,7 @@
         caught = ex;
       }
     harness.check(caught instanceof IllegalArgumentException);
+  */
 
     // Unsuccessful attempts should not change the list.
     list = ell.getListenerList();    
Index: gnu/testlet/javax/swing/table/DefaultTableColumnModel/getListeners.java
===================================================================
RCS file: /cvs/mauve/mauve/gnu/testlet/javax/swing/table/DefaultTableColumnModel/getListeners.java,v
retrieving revision 1.2
diff -u -r1.2 getListeners.java
--- gnu/testlet/javax/swing/table/DefaultTableColumnModel/getListeners.java	28 Apr 2005 07:37:36 -0000	1.2
+++ gnu/testlet/javax/swing/table/DefaultTableColumnModel/getListeners.java	27 Dec 2006 15:44:58 -0000
@@ -62,6 +62,7 @@
     }
     harness.check(pass);
     
+  /* Doesn't compile with 1.5.
     pass = false;
     try
     {
@@ -72,6 +73,7 @@
       pass = true;  
     }
     harness.check(pass);
+  */
   }
 
 }

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]