mirror of https://github.com/sbt/sbt.git
Remove ~>| and use polymorphic function instead
This commit is contained in:
parent
0d291f0489
commit
cf3c9bbf0d
|
|
@ -20,9 +20,6 @@ object Transform:
|
||||||
|
|
||||||
def fromDummyStrict[T](original: Task[T], value: T): Task[T] = fromDummy(original)(value)
|
def fromDummyStrict[T](original: Task[T], value: T): Task[T] = fromDummy(original)(value)
|
||||||
|
|
||||||
implicit def to_~>|[K[_], V[_]](map: RMap[K, V]): ~>|[K, V] =
|
|
||||||
[A] => (k: K[A]) => map.get(k)
|
|
||||||
|
|
||||||
final case class DummyTaskMap(mappings: List[TaskAndValue[_]]) {
|
final case class DummyTaskMap(mappings: List[TaskAndValue[_]]) {
|
||||||
def ::[T](tav: (Task[T], T)): DummyTaskMap =
|
def ::[T](tav: (Task[T], T)): DummyTaskMap =
|
||||||
DummyTaskMap(new TaskAndValue(tav._1, tav._2) :: mappings)
|
DummyTaskMap(new TaskAndValue(tav._1, tav._2) :: mappings)
|
||||||
|
|
@ -30,17 +27,17 @@ object Transform:
|
||||||
|
|
||||||
final class TaskAndValue[T](val task: Task[T], val value: T)
|
final class TaskAndValue[T](val task: Task[T], val value: T)
|
||||||
|
|
||||||
def dummyMap(dummyMap: DummyTaskMap): TaskId ~>| Task = {
|
def dummyMap(dummyMap: DummyTaskMap): [A] => TaskId[A] => Option[Task[A]] = {
|
||||||
val pmap = new DelegatingPMap[TaskId, Task](new collection.mutable.ListMap)
|
val pmap = new DelegatingPMap[TaskId, Task](new collection.mutable.ListMap)
|
||||||
def add[T](dummy: TaskAndValue[T]): Unit = {
|
def add[T](dummy: TaskAndValue[T]): Unit = {
|
||||||
pmap(dummy.task) = fromDummyStrict(dummy.task, dummy.value)
|
pmap(dummy.task) = fromDummyStrict(dummy.task, dummy.value)
|
||||||
}
|
}
|
||||||
dummyMap.mappings.foreach(x => add(x))
|
dummyMap.mappings.foreach(x => add(x))
|
||||||
pmap
|
([A] => (task: TaskId[A]) => pmap.get(task))
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Applies `map`, returning the result if defined or returning the input unchanged otherwise. */
|
/** Applies `map`, returning the result if defined or returning the input unchanged otherwise. */
|
||||||
implicit def getOrId(map: TaskId ~>| Task): [A] => TaskId[A] => Task[A] =
|
private def getOrId(map: [A] => TaskId[A] => Option[Task[A]]): [A] => TaskId[A] => Task[A] =
|
||||||
[A] => (in: TaskId[A]) => map(in).getOrElse(in.asInstanceOf)
|
[A] => (in: TaskId[A]) => map(in).getOrElse(in.asInstanceOf)
|
||||||
|
|
||||||
def apply(dummies: DummyTaskMap) = taskToNode(getOrId(dummyMap(dummies)))
|
def apply(dummies: DummyTaskMap) = taskToNode(getOrId(dummyMap(dummies)))
|
||||||
|
|
|
||||||
|
|
@ -44,12 +44,6 @@ trait TypeFunctions:
|
||||||
f: [a] => F1[a] => F2[a]
|
f: [a] => F1[a] => F2[a]
|
||||||
): [a] => Compose[F1, F3][a] => Compose[F2, F3][a] =
|
): [a] => Compose[F1, F3][a] => Compose[F2, F3][a] =
|
||||||
f.asInstanceOf[[a] => Compose[F1, F3][a] => Compose[F2, F3][a]]
|
f.asInstanceOf[[a] => Compose[F1, F3][a] => Compose[F2, F3][a]]
|
||||||
|
|
||||||
/*
|
|
||||||
type Endo[T] = T => T
|
|
||||||
type ~>|[A[_], B[_]] = A ~> Compose[Option, B]#Apply
|
|
||||||
*/
|
|
||||||
type ~>|[F1[_], F2[_]] = [A] => F1[A] => Option[F2[A]]
|
|
||||||
end TypeFunctions
|
end TypeFunctions
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue