@@ -103,10 +103,10 @@ trait Ordering[T] extends Comparator[T] with PartialOrdering[T] with Serializabl
103103 override def equiv (x : T , y : T ): Boolean = compare(x, y) == 0
104104
105105 /** Return `x` if `x` >= `y`, otherwise `y`. */
106- def max (x : T , y : T ): T = if (gteq(x, y)) x else y
106+ def max [ U <: T ] (x : U , y : U ): U = if (gteq(x, y)) x else y
107107
108108 /** Return `x` if `x` <= `y`, otherwise `y`. */
109- def min (x : T , y : T ): T = if (lteq(x, y)) x else y
109+ def min [ U <: T ] (x : U , y : U ): U = if (lteq(x, y)) x else y
110110
111111 /** Return the opposite ordering of this one. */
112112 override def reverse : Ordering [T ] = new Ordering .Reverse [T ](this )
@@ -175,8 +175,8 @@ object Ordering extends LowPriorityOrderingImplicits {
175175 override def lt (x : T , y : T ): Boolean = outer.lt(y, x)
176176 override def gt (x : T , y : T ): Boolean = outer.gt(y, x)
177177 override def equiv (x : T , y : T ): Boolean = outer.equiv(y, x)
178- override def max (x : T , y : T ): T = outer.min(x, y)
179- override def min (x : T , y : T ): T = outer.max(x, y)
178+ override def max [ U <: T ] (x : U , y : U ): U = outer.min(x, y)
179+ override def min [ U <: T ] (x : U , y : U ): U = outer.max(x, y)
180180
181181 override def equals (obj : scala.Any ): Boolean = obj match {
182182 case that : AnyRef if this eq that => true
@@ -301,8 +301,8 @@ object Ordering extends LowPriorityOrderingImplicits {
301301 override def lt (x : Float , y : Float ): Boolean = x < y
302302 override def gt (x : Float , y : Float ): Boolean = x > y
303303 override def equiv (x : Float , y : Float ): Boolean = x == y
304- override def max (x : Float , y : Float ): Float = math.max(x, y)
305- override def min (x : Float , y : Float ): Float = math.min(x, y)
304+ override def max [ U <: Float ] (x : U , y : U ): U = math.max(x, y). asInstanceOf [ U ]
305+ override def min [ U <: Float ] (x : U , y : U ): U = math.min(x, y). asInstanceOf [ U ]
306306 }
307307 implicit object Float extends FloatOrdering
308308
@@ -314,8 +314,8 @@ object Ordering extends LowPriorityOrderingImplicits {
314314 override def lt (x : Double , y : Double ): Boolean = x < y
315315 override def gt (x : Double , y : Double ): Boolean = x > y
316316 override def equiv (x : Double , y : Double ): Boolean = x == y
317- override def max (x : Double , y : Double ): Double = math.max(x, y)
318- override def min (x : Double , y : Double ): Double = math.min(x, y)
317+ override def max [ U <: Double ] (x : U , y : U ): U = math.max(x, y). asInstanceOf [ U ]
318+ override def min [ U <: Double ] (x : U , y : U ): U = math.min(x, y). asInstanceOf [ U ]
319319 }
320320 implicit object Double extends DoubleOrdering
321321
0 commit comments