@@ -101,10 +101,10 @@ trait Ordering[T] extends Comparator[T] with PartialOrdering[T] with Serializabl
101
101
override def equiv (x : T , y : T ): Boolean = compare(x, y) == 0
102
102
103
103
/** Return `x` if `x` >= `y`, otherwise `y`. */
104
- def max (x : T , y : T ): T = if (gteq(x, y)) x else y
104
+ def max [ U <: T ] (x : U , y : U ): U = if (gteq(x, y)) x else y
105
105
106
106
/** Return `x` if `x` <= `y`, otherwise `y`. */
107
- def min (x : T , y : T ): T = if (lteq(x, y)) x else y
107
+ def min [ U <: T ] (x : U , y : U ): U = if (lteq(x, y)) x else y
108
108
109
109
/** Return the opposite ordering of this one. */
110
110
override def reverse : Ordering [T ] = new Ordering [T ] {
@@ -115,8 +115,8 @@ trait Ordering[T] extends Comparator[T] with PartialOrdering[T] with Serializabl
115
115
override def lt (x : T , y : T ) = outer.lt(y, x)
116
116
override def gt (x : T , y : T ) = outer.gt(y, x)
117
117
override def equiv (x : T , y : T ) = outer.equiv(y, x)
118
- override def max (x : T , y : T ) = outer.min(x, y)
119
- override def min (x : T , y : T ) = outer.max(x, y)
118
+ override def max [ U <: T ] (x : U , y : U ) = outer.min(x, y)
119
+ override def min [ U <: T ] (x : U , y : U ) = outer.max(x, y)
120
120
}
121
121
122
122
/** Given f, a function from U into T, creates an Ordering[U] whose compare
@@ -363,8 +363,8 @@ object Ordering extends LowPriorityOrderingImplicits {
363
363
override def lt (x : Float , y : Float ): Boolean = x < y
364
364
override def gt (x : Float , y : Float ): Boolean = x > y
365
365
override def equiv (x : Float , y : Float ): Boolean = x == y
366
- override def max (x : Float , y : Float ): Float = math.max(x, y)
367
- override def min (x : Float , y : Float ): Float = math.min(x, y)
366
+ override def max [ U <: Float ] (x : U , y : U ): U = math.max(x, y). asInstanceOf [ U ]
367
+ override def min [ U <: Float ] (x : U , y : U ): U = math.min(x, y). asInstanceOf [ U ]
368
368
}
369
369
implicit object IeeeOrdering extends IeeeOrdering
370
370
}
@@ -423,8 +423,8 @@ object Ordering extends LowPriorityOrderingImplicits {
423
423
override def lt (x : Double , y : Double ): Boolean = x < y
424
424
override def gt (x : Double , y : Double ): Boolean = x > y
425
425
override def equiv (x : Double , y : Double ): Boolean = x == y
426
- override def max (x : Double , y : Double ): Double = math.max(x, y)
427
- override def min (x : Double , y : Double ): Double = math.min(x, y)
426
+ override def max [ U <: Double ] (x : U , y : U ): U = math.max(x, y). asInstanceOf [ U ]
427
+ override def min [ U <: Double ] (x : U , y : U ): U = math.min(x, y). asInstanceOf [ U ]
428
428
}
429
429
implicit object IeeeOrdering extends IeeeOrdering
430
430
}
0 commit comments