import scala.*; import scala.math.Ordering; import scala.math.Numeric; import scala.collection.Seq; import scala.collection.Traversable; import scala.collection.Traversable$; import scala.collection.immutable.Set; import scala.collection.immutable.HashSet; import scala.collection.immutable.Map; import scala.collection.immutable.Map$; import scala.collection.immutable.HashMap; import scala.collection.immutable.Vector; import scala.collection.immutable.List; import scala.collection.generic.CanBuildFrom; class A { }; class B { }; // This one compiles but it would be better if it didn't. // Checking in under pos anyway in the interests of making sure // we are informed if the status changes. class Contra { // Not an Ordering. static Ordering charOrd = scala.math.Ordering.Char$.MODULE$; public boolean useCharOrd() { return charOrd.compare(new Object(), new Object()) == 0; } static Numeric intNum = scala.math.Numeric.IntIsIntegral$.MODULE$; } public class fromjava { public static Function1 f1 = new scala.runtime.AbstractFunction1() { public B apply(A a) { return null; } }; public static Function1, B> f2 = new scala.runtime.AbstractFunction1, B>() { public B apply(Tuple2 tup) { return tup._2(); } }; public static String vector(Vector x) { Vector y = x.take(2); return y.head(); } public static String list(List x) { List y = x.drop(2); return y.head(); } public static Tuple2 map(Map x) { Traversable> y = x.drop(2); return y.head(); } public static Object sum(Traversable x) { return x.sum(Contra.intNum); } // Looks like sum as given below fails under java5, so disabled. // // [partest] testing: [...]/files/pos/javaReadsSigs [FAILED] // [partest] files/pos/javaReadsSigs/fromjava.java:62: name clash: sum(scala.collection.Traversable) and sum(scala.collection.Traversable) have the same erasure // [partest] public static B sum(Traversable x) { // [partest] ^ // // // can't make this work with an actual CanBuildFrom: see #4389. // public static B sum(Traversable x) { // // have to cast it unfortunately: map in TraversableLike returns // // "That" and such types seem to be signature poison. // return ((Traversable)x.map(f1, null)).head(); // } }