junit4 (4.10-3) workaround_typing_bug.diff

Summary

 src/main/java/org/junit/internal/matchers/CombinableMatcher.java      |    6 +++---
 src/main/java/org/junit/internal/matchers/IsCollectionContaining.java |    6 +++---
 src/test/java/org/junit/tests/assertion/AssertionTest.java            |    3 ++-
 src/test/java/org/junit/tests/assertion/BothTest.java                 |   10 +++++-----
 4 files changed, 13 insertions(+), 12 deletions(-)

    
download this patch

Patch contents

Description: Fix "invalid inferred types for T; actual arguments do not
 conforms to inferred formal arguments" when building junit4 with openjdk
 under recent hotspot.
Author: Damien Raude-Morvan <drazzib@debian.org>
Forwarded: no
Bug-Debian: http://bugs.debian.org/662807
Last-Update: 2012-03-07

--- a/src/main/java/org/junit/internal/matchers/CombinableMatcher.java
+++ b/src/main/java/org/junit/internal/matchers/CombinableMatcher.java
@@ -24,11 +24,11 @@
 	
 	@SuppressWarnings("unchecked")
 	public CombinableMatcher<T> and(Matcher<? extends T> matcher) {
-		return new CombinableMatcher<T>(allOf(matcher, fMatcher));
+		return new CombinableMatcher<T>(allOf((Matcher)matcher, fMatcher));
 	}
 
 	@SuppressWarnings("unchecked")
 	public CombinableMatcher<T> or(Matcher<? extends T> matcher) {
-		return new CombinableMatcher<T>(anyOf(matcher, fMatcher));
+		return new CombinableMatcher<T>(anyOf((Matcher)matcher, fMatcher));
 	}
-}
\ No newline at end of file
+}
--- a/src/main/java/org/junit/internal/matchers/IsCollectionContaining.java
+++ b/src/main/java/org/junit/internal/matchers/IsCollectionContaining.java
@@ -41,7 +41,7 @@
 
     @Factory
     public static <T> Matcher<Iterable<T>> hasItem(T element) {
-        return hasItem(equalTo(element));
+        return hasItem((Matcher)equalTo(element));
     }
 
     @Factory
@@ -51,7 +51,7 @@
         for (Matcher<? extends T> elementMatcher : elementMatchers) {
             all.add(hasItem(elementMatcher));
         }
-        return allOf(all);
+        return allOf((Collection)all);
     }
 
     @Factory
@@ -61,7 +61,7 @@
         for (T element : elements) {
             all.add(hasItem(element));
         }
-        return allOf(all);
+        return allOf((Collection)all);
     }
 
 }
--- a/src/test/java/org/junit/tests/assertion/AssertionTest.java
+++ b/src/test/java/org/junit/tests/assertion/AssertionTest.java
@@ -12,6 +12,7 @@
 
 import java.math.BigDecimal;
 
+import org.hamcrest.Matcher;
 import org.junit.Assert;
 import org.junit.ComparisonFailure;
 import org.junit.Test;
@@ -446,7 +447,7 @@
         String expectedMessage = "identifier\nExpected: is an instance of java.lang.Integer\n     got: \"actual\"\n";
         
         try {
-            assertThat("identifier", "actual", is(Integer.class));
+            assertThat("identifier", "actual", (Matcher) is(Integer.class));
         } catch (AssertionError e) {
             assertEquals(expectedMessage, e.getMessage());
         }
--- a/src/test/java/org/junit/tests/assertion/BothTest.java
+++ b/src/test/java/org/junit/tests/assertion/BothTest.java
@@ -17,17 +17,17 @@
 @RunWith(Theories.class)
 public class BothTest {
 	@DataPoint
-	public static Matcher<Integer> IS_3= is(3);
+	public static Matcher<Integer> IS_3= (Matcher) is(3);
 
 	@DataPoint
-	public static Matcher<Integer> IS_4= is(4);
+	public static Matcher<Integer> IS_4= (Matcher) is(4);
 
 	@DataPoint
 	public static int THREE= 3;
 
 	@Test
 	public void bothPasses() {
-		assertThat(3, both(is(Integer.class)).and(is(3)));
+		assertThat(3, both(is(Integer.class)).and((Matcher)is(3)));
 	}
 
 	@Theory
@@ -46,7 +46,7 @@
 
 	@Test
 	public void eitherPasses() {
-		assertThat(3, either(is(3)).or(is(4)));
+		assertThat(3, either(is(3)).or((Matcher)is(4)));
 	}
 
 	@Theory
@@ -66,6 +66,6 @@
 	}
 	
 	@Test public void subclassesAreOkInSecondPositionOnly() {
-		assertThat(3, both(is(Integer.class)).and(is(3)));
+		assertThat(3, both(is(Integer.class)).and((Matcher)is(3)));
 	}
 }