1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
package a {
abstract class DeliteOp[B]
abstract class DeliteCollection[A]
abstract class Exp[T] { def Type: T }
trait DeliteOpMap[A,B,C[X] <: DeliteCollection[X]] extends DeliteOp[C[B]] {
val in: Exp[C[A]]
val func: Exp[B]
val alloc: Exp[C[B]]
}
object Test {
def f(x: DeliteOp[_]) = x match {
case map: DeliteOpMap[_,_,_] => map.alloc.Type
}
}
}
package b {
object Test {
def f(x: DeliteOp[_]) = x match {
case map: DeliteOpMap[_,_,_] => map.alloc.Type
}
}
abstract class DeliteOp[B]
abstract class DeliteCollection[A]
abstract class Exp[T] { def Type: T }
trait DeliteOpMap[A,B,C[X] <: DeliteCollection[X]] extends DeliteOp[C[B]] {
val in: Exp[C[A]]
val func: Exp[B]
val alloc: Exp[C[B]]
}
}
|