mirror of https://github.com/sbt/sbt.git
31 lines
523 B
Scala
31 lines
523 B
Scala
/* sbt -- Simple Build Tool
|
|
* Copyright 2010 Mark Harrah
|
|
*/
|
|
package sbt
|
|
|
|
import Types._
|
|
|
|
// Used to emulate ~> literals
|
|
trait Param[A[_], B[_]]
|
|
{
|
|
type T
|
|
def in: A[T]
|
|
def ret(out: B[T])
|
|
def ret: B[T]
|
|
}
|
|
|
|
object Param
|
|
{
|
|
implicit def pToT[A[_], B[_]](p: Param[A,B] => Unit): A~>B = new (A ~> B) {
|
|
def apply[s](a: A[s]): B[s] = {
|
|
val v: Param[A,B] { type T = s} = new Param[A,B] { type T = s
|
|
def in = a
|
|
private var r: B[T] = _
|
|
def ret(b: B[T]) {r = b}
|
|
def ret: B[T] = r
|
|
}
|
|
p(v)
|
|
v.ret
|
|
}
|
|
}
|
|
} |