summaryrefslogblamecommitdiff
path: root/test/files/pos/spec-doubledef-new.scala
blob: 589ceb33b286b18db1a8a8eea344734fef4c8d89 (plain) (tree)
1
2
3
4
5
6
7

                                       




                                                                          








                                                                   
 
                                                                                                   


            
                                        

                              
                  
                
                   

         
 
import scala.reflect.runtime.universe._

object Test {
  def fn[@specialized T, @specialized U](t : T => Int, u : U => Int) : T =
    null.asInstanceOf[T]
}

trait A[@specialized(Int) T] {
  var value: T
  def getWith[@specialized(Int) Z](f: T => Z) = f(value)
}

class C extends A[Int] {
  var value = 10
  override def getWith[@specialized(Int) Z](f: Int => Z) = f(value)
}

abstract class B[T, @specialized(scala.Int) U : TypeTag, @specialized(scala.Int) V <% Ordered[V]] {
    val u: U
    val v: V

    def f(t: T, v2: V): Tuple2[U, V] = {
        val m: Array[U] = null
        if (m.isEmpty) {
            (u, v)
        } else {
            (u, v2)
        }
    }
}