From 01a85f6aa485cb7c4626886ee588209fd7b23a52 Mon Sep 17 00:00:00 2001 From: Li Haoyi Date: Sat, 16 Dec 2017 21:50:39 -0800 Subject: upgrade to new version of uPickle/Ammonite --- build.sbt | 6 ++++-- core/src/main/scala/mill/discover/Mirror.scala | 5 ++++- core/src/main/scala/mill/eval/PathRef.scala | 6 +++--- core/src/main/scala/mill/util/JsonFormatters.scala | 25 +++++++++------------- .../test/scala/mill/discover/DiscoveredTests.scala | 2 +- .../test/scala/mill/eval/JavaCompileJarTests.scala | 1 + .../src/main/scala/mill/scalaplugin/Dep.scala | 11 +++++++--- 7 files changed, 31 insertions(+), 25 deletions(-) diff --git a/build.sbt b/build.sbt index f9294429..12137fa1 100644 --- a/build.sbt +++ b/build.sbt @@ -9,10 +9,11 @@ val sharedSettings = Seq( test in assembly := {}, libraryDependencies += "com.lihaoyi" %% "acyclic" % "0.1.7" % "provided", + resolvers += Resolver.sonatypeRepo("releases"), scalacOptions += "-P:acyclic:force", autoCompilerPlugins := true, addCompilerPlugin("com.lihaoyi" %% "acyclic" % "0.1.7"), - libraryDependencies += "com.lihaoyi" % "ammonite" % "1.0.3" % "test" cross CrossVersion.full, + libraryDependencies += "com.lihaoyi" % "ammonite" % "1.0.3-9-b0b068a" % "test" cross CrossVersion.full, sourceGenerators in Test += Def.task { val file = (sourceManaged in Test).value / "amm.scala" @@ -90,7 +91,8 @@ lazy val core = project "org.scala-lang" % "scala-reflect" % scalaVersion.value % "provided", "com.lihaoyi" %% "sourcecode" % "0.1.4", "com.lihaoyi" %% "pprint" % "0.5.3", - "com.lihaoyi" % "ammonite" % "1.0.3" cross CrossVersion.full, + "com.lihaoyi" %% "upickle" % "0.5.1", + "com.lihaoyi" % "ammonite" % "1.0.3-9-b0b068a" cross CrossVersion.full, "org.scala-sbt" %% "zinc" % "1.0.5", "org.scala-sbt" % "test-interface" % "1.0" ) diff --git a/core/src/main/scala/mill/discover/Mirror.scala b/core/src/main/scala/mill/discover/Mirror.scala index 6293e599..41b3a0fe 100644 --- a/core/src/main/scala/mill/discover/Mirror.scala +++ b/core/src/main/scala/mill/discover/Mirror.scala @@ -76,7 +76,10 @@ object Mirror{ } def makeTargetPoint[T, V](label: String, func: T => Target[V]) - (implicit f: upickle.default.ReadWriter[V]) = { + (implicit f1: upickle.default.Reader[V], + f2: upickle.default.Writer[V]) = { + + val f = upickle.default.ReadWriter(f2.write, f1.read) TargetPoint(label, f, func) } } diff --git a/core/src/main/scala/mill/eval/PathRef.scala b/core/src/main/scala/mill/eval/PathRef.scala index 433e9f5c..784d9ad4 100644 --- a/core/src/main/scala/mill/eval/PathRef.scala +++ b/core/src/main/scala/mill/eval/PathRef.scala @@ -5,7 +5,7 @@ import java.nio.file.attribute.BasicFileAttributes import java.nio.file.{FileVisitResult, FileVisitor} import java.nio.{file => jnio} import java.security.MessageDigest - +import upickle.default.{ReadWriter => RW} import ammonite.ops.Path import mill.util.JsonFormatters @@ -63,6 +63,6 @@ case class PathRef(path: ammonite.ops.Path, quick: Boolean = false){ } object PathRef{ - private implicit val pathFormat: upickle.default.ReadWriter[Path] = JsonFormatters.pathReadWrite - implicit def jsonFormatter: upickle.default.ReadWriter[PathRef] = upickle.default.macroRW + private implicit val pathFormat: RW[Path] = JsonFormatters.pathReadWrite + implicit def jsonFormatter: RW[PathRef] = upickle.default.macroRW } diff --git a/core/src/main/scala/mill/util/JsonFormatters.scala b/core/src/main/scala/mill/util/JsonFormatters.scala index bce23468..d8125ff2 100644 --- a/core/src/main/scala/mill/util/JsonFormatters.scala +++ b/core/src/main/scala/mill/util/JsonFormatters.scala @@ -1,28 +1,23 @@ package mill.util import ammonite.ops.{Bytes, Path} - +import upickle.default.{ReadWriter => RW} object JsonFormatters extends JsonFormatters trait JsonFormatters { - implicit def readWriter[T: upickle.default.Reader: upickle.default.Writer] = - upickle.default.ReadWriter( - implicitly[upickle.default.Writer[T]].write, - implicitly[upickle.default.Reader[T]].read, - ) - implicit val pathReadWrite = upickle.default.ReadWriter[ammonite.ops.Path]( + implicit val pathReadWrite: RW[ammonite.ops.Path] = RW[ammonite.ops.Path]( o => upickle.Js.Str(o.toString()), - {case upickle.Js.Str(json) => Path(json)}, + {case upickle.Js.Str(json) => Path(json.toString)}, ) - implicit val bytesReadWrite = upickle.default.ReadWriter[Bytes]( + implicit val bytesReadWrite: RW[Bytes] = RW[Bytes]( o => upickle.Js.Str(javax.xml.bind.DatatypeConverter.printBase64Binary(o.array)), - {case upickle.Js.Str(json) => new Bytes(javax.xml.bind.DatatypeConverter.parseBase64Binary(json))} + {case upickle.Js.Str(json) => new Bytes(javax.xml.bind.DatatypeConverter.parseBase64Binary(json.toString))} ) - implicit lazy val crFormat: upickle.default.ReadWriter[ammonite.ops.CommandResult] = - upickle.default.macroRW - implicit lazy val modFormat: upickle.default.ReadWriter[coursier.Module] = upickle.default.macroRW - implicit lazy val depFormat: upickle.default.ReadWriter[coursier.Dependency]= upickle.default.macroRW - implicit lazy val attrFormat: upickle.default.ReadWriter[coursier.Attributes] = upickle.default.macroRW + implicit lazy val crFormat: RW[ammonite.ops.CommandResult] = upickle.default.macroRW + + implicit lazy val modFormat: RW[coursier.Module] = upickle.default.macroRW + implicit lazy val depFormat: RW[coursier.Dependency]= upickle.default.macroRW + implicit lazy val attrFormat: RW[coursier.Attributes] = upickle.default.macroRW } diff --git a/core/src/test/scala/mill/discover/DiscoveredTests.scala b/core/src/test/scala/mill/discover/DiscoveredTests.scala index 98a54759..1d0f7a78 100644 --- a/core/src/test/scala/mill/discover/DiscoveredTests.scala +++ b/core/src/test/scala/mill/discover/DiscoveredTests.scala @@ -95,7 +95,7 @@ object DiscoveredTests extends TestSuite{ val error = compileError("Discovered[outer.type]") assert( - error.msg.contains("could not find implicit value"), + error.msg.contains("uPickle does not know how to read"), error.pos.contains("def single = mill.T{ new InputStreamReader(System.in) }") ) } diff --git a/core/src/test/scala/mill/eval/JavaCompileJarTests.scala b/core/src/test/scala/mill/eval/JavaCompileJarTests.scala index e0a43c6e..7639d8e2 100644 --- a/core/src/test/scala/mill/eval/JavaCompileJarTests.scala +++ b/core/src/test/scala/mill/eval/JavaCompileJarTests.scala @@ -9,6 +9,7 @@ import mill.util.Ctx.DestCtx import mill.{Module, T} import mill.util.{DummyLogger, OSet} import utest._ +import mill._ object JavaCompileJarTests extends TestSuite{ def compileAll(sources: Seq[PathRef])(implicit ctx: DestCtx) = { diff --git a/scalaplugin/src/main/scala/mill/scalaplugin/Dep.scala b/scalaplugin/src/main/scala/mill/scalaplugin/Dep.scala index 9ccb9da7..e8cf0387 100644 --- a/scalaplugin/src/main/scala/mill/scalaplugin/Dep.scala +++ b/scalaplugin/src/main/scala/mill/scalaplugin/Dep.scala @@ -1,6 +1,6 @@ package mill.scalaplugin - - +import mill.util.JsonFormatters._ +import upickle.default.{macroRW, ReadWriter => RW} sealed trait Dep object Dep{ def apply(org: String, name: String, version: String): Dep = { @@ -8,6 +8,7 @@ object Dep{ } case class Java(dep: coursier.Dependency) extends Dep object Java{ + implicit def rw: RW[Java] = macroRW def apply(org: String, name: String, version: String): Dep = { Java(coursier.Dependency(coursier.Module(org, name), version)) } @@ -16,15 +17,19 @@ object Dep{ def apply(dep: coursier.Dependency) = Scala(dep) case class Scala(dep: coursier.Dependency) extends Dep object Scala{ + implicit def rw: RW[Scala] = macroRW def apply(org: String, name: String, version: String): Dep = { Scala(coursier.Dependency(coursier.Module(org, name), version)) } } case class Point(dep: coursier.Dependency) extends Dep object Point{ + implicit def rw: RW[Point] = macroRW def apply(org: String, name: String, version: String): Dep = { Point(coursier.Dependency(coursier.Module(org, name), version)) } } - implicit def formatter = upickle.default.macroRW[Dep] + implicit def rw = RW.merge[Dep]( + Java.rw, Scala.rw, Point.rw + ) } \ No newline at end of file -- cgit v1.2.3