object
CacheIvy extends AnyRef
Value Members
-
final
def
!=(arg0: AnyRef): Boolean
-
final
def
!=(arg0: Any): Boolean
-
final
def
##(): Int
-
final
def
==(arg0: AnyRef): Boolean
-
final
def
==(arg0: Any): Boolean
-
object
L1 extends AnyRef
-
object
L2 extends AnyRef
-
object
L3 extends AnyRef
-
object
L4 extends AnyRef
-
object
L5 extends AnyRef
-
implicit
def
artifactFormat(implicit sf: Format[String], of: Format[Seq[Configuration]], cf: Format[Configuration], uf: Format[Option[URL]]): Format[Artifact]
-
-
final
def
asInstanceOf[T0]: T0
-
-
-
implicit
def
classpathFormat: Format[Map[String, Seq[File]]]
-
def
clone(): AnyRef
-
-
-
implicit
def
configurationFormat(implicit sf: Format[String]): Format[Configuration]
-
-
implicit
def
crossVersionFormat: Format[CrossVersion]
-
-
-
final
def
eq(arg0: AnyRef): Boolean
-
def
equals(arg0: Any): Boolean
-
lazy val
excludeMap: Format[Map[ModuleID, Set[String]]]
-
-
implicit
def
exclusionRuleFormat(implicit sf: Format[String]): Format[ExclusionRule]
-
-
-
def
finalize(): Unit
-
final
def
getClass(): java.lang.Class[_]
-
def
hashCode(): Int
-
-
-
final
def
isInstanceOf[T0]: Boolean
-
-
-
-
-
-
-
-
implicit
def
moduleIDFormat(implicit sf: Format[String], af: Format[Artifact], bf: Format[Boolean], ef: Format[ExclusionRule]): Format[ModuleID]
-
implicit
def
moduleReportFormat(implicit f: Format[Artifact], ff: Format[File], mid: Format[ModuleID]): Format[ModuleReport]
-
-
-
def
names(s: Iterable[Configuration]): Set[String]
-
final
def
ne(arg0: AnyRef): Boolean
-
final
def
notify(): Unit
-
final
def
notifyAll(): Unit
-
def
password(s: Option[String]): Array[Byte]
-
-
-
-
-
final
def
synchronized[T0](arg0: ⇒ T0): T0
-
def
toString(): String
-
-
-
lazy val
updateReportF: Format[UpdateReport]
-
implicit
def
updateReportFormat(implicit m: Format[String], cr: Format[ConfigurationReport], us: Format[UpdateStats]): Format[UpdateReport]
-
implicit
def
updateStatsFormat: Format[UpdateStats]
-
final
def
wait(): Unit
-
final
def
wait(arg0: Long, arg1: Int): Unit
-
final
def
wait(arg0: Long): Unit
-
implicit
def
wrapHL[W, H, T <: HList](implicit f: (W) ⇒ :+:[H, T], cache: InputCache[:+:[H, T]]): InputCache[W]
Inherited from AnyRef
Inherited from Any
InputCaches for IvyConfiguration, ModuleSettings, and UpdateConfiguration The InputCaches for a basic data structure is built in two parts. Given the data structure: Data[A,B,C, ...] 1) Define a conversion from Data to the HList A :+: B :+: C :+: ... :+: HNil, excluding any members that should not be considered for caching 2) In theory, 1) would be enough and wrapHL would generate InputCache[Data] as long as all of InputCache[A], InputCache[B], ... exist. However, if any of these child InputCaches are constructed using wrapHL, you get a diverging implicit error. (I believe scalac is generating this error as specified, but that the implicits would be valid and not be infinite. This might take some effort to come up with a new rule that allows this) 3) So, we need to explicitly define the intermediate implicits. The general approach is:
Each Data in LN only uses implicits from L(N-1). This way, higher levels (higher N) cannot see the HList conversions of subcomponents but can use the explicitly defined subcomponent implicits and there is no divergence. 4) Ideally, diverging implicits could be relaxed so that the ... = wrapIn lines could be removed.