aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKevin Wright <kevin.wright@bradyplc.com>2018-01-26 20:01:29 +0000
committerKevin Wright <kevin.wright@bradyplc.com>2018-01-26 20:01:29 +0000
commit4d1bf3ad68b3def3bbdc7ac8c45cb1a72c2c4e09 (patch)
tree8030fdb3827b494ffa7a78724098708f7c6987aa
parentdbf2a7a68aff4a236acd4efccec5ec9d3eca5a93 (diff)
downloadmagnolia-4d1bf3ad68b3def3bbdc7ac8c45cb1a72c2c4e09.tar.gz
magnolia-4d1bf3ad68b3def3bbdc7ac8c45cb1a72c2c4e09.tar.bz2
magnolia-4d1bf3ad68b3def3bbdc7ac8c45cb1a72c2c4e09.zip
Made it compile under Java 9
-rw-r--r--build.sbt14
-rw-r--r--core/shared/src/main/scala/magnolia.scala4
-rw-r--r--tests/src/main/scala/tests.scala7
3 files changed, 23 insertions, 2 deletions
diff --git a/build.sbt b/build.sbt
index 178ac83..fda55a8 100644
--- a/build.sbt
+++ b/build.sbt
@@ -29,11 +29,21 @@ lazy val tests = project
addCompilerPlugin("org.scalamacros" % "paradise" % "2.1.1" cross CrossVersion.full),
libraryDependencies ++= Seq(
"com.fommil" %% "deriving-macro" % "0.9.0",
- "com.fommil" %% "scalaz-deriving" % "0.9.0"
+ "com.fommil" %% "scalaz-deriving" % "0.9.0",
+ // These 4 because scalaz-deriving collects dependencies like they were pokémon
+ // Including XML stuff that got modularised in Java 9...
+ // which is odd for a library that has nothing whatsoever to do with XML!
+ "javax.xml.bind" % "jaxb-api" % "2.3.0",
+ "com.sun.xml.bind" % "jaxb-impl" % "2.3.0",
+ "org.glassfish.jaxb" % "jaxb-runtime" % "2.3.0",
+ "javax.activation" % "activation" % "1.1.1"
)
)
.dependsOn(examplesJVM)
+
+
+
lazy val benchmarks = project
.in(file("benchmarks"))
.settings(buildSettings: _*)
@@ -55,6 +65,8 @@ lazy val buildSettings = Seq(
"-Ywarn-inaccessible",
"-Ywarn-adapted-args"
),
+// javaOptions += "--add-modules=javax.xml.bind",
+// javacOptions += "--add-modules=javax.xml.bind",
scmInfo := Some(
ScmInfo(url("https://github.com/propensive/magnolia"),
"scm:git:git@github.com:propensive/magnolia.git")
diff --git a/core/shared/src/main/scala/magnolia.scala b/core/shared/src/main/scala/magnolia.scala
index 5318aa2..a1d4e8a 100644
--- a/core/shared/src/main/scala/magnolia.scala
+++ b/core/shared/src/main/scala/magnolia.scala
@@ -203,6 +203,10 @@ object Magnolia {
val caseParamsReversed = caseClassParameters.foldLeft[List[CaseParam]](Nil) {
(acc, param) =>
+ for (ann <- param.annotations) {
+ c.info(c.enclosingPosition, ann.tree.toString, force = false)
+ }
+
val paramName = param.name.decodedName.toString
val paramTypeSubstituted = param.typeSignatureIn(genericType).resultType
diff --git a/tests/src/main/scala/tests.scala b/tests/src/main/scala/tests.scala
index a311291..11a5d2f 100644
--- a/tests/src/main/scala/tests.scala
+++ b/tests/src/main/scala/tests.scala
@@ -245,6 +245,7 @@ object Tests extends TestApp {
}
}.assert(_ == "Cannot patch value `Person(Bob,42)`, expected 2 fields but got 3")
+
test("throw on an illegal patch attempt with field type mismatch") {
// these two implicits can be removed once https://github.com/propensive/magnolia/issues/58 is closed
implicit val stringPatcher = Patcher.forSingleValue[String]
@@ -253,10 +254,14 @@ object Tests extends TestApp {
try {
val person = Person("Bob", 42)
implicitly[Patcher[Entity]].patch(person, Seq(null, 'killer))
+ "it worked"
} catch {
case NonFatal(e) => e.getMessage
}
- }.assert(_ == "scala.Symbol cannot be cast to java.lang.Integer")
+ }.assert{x =>
+ //tiny hack because Java 9 inserts the "java.base/" module name in the error message
+ x.startsWith("scala.Symbol cannot be cast to") && x.endsWith("java.lang.Integer")
+ }
class ParentClass {
case class InnerClass(name: String)