From c3f34ae8932217a234fc65ffe5b70157ba939691 Mon Sep 17 00:00:00 2001 From: Colin Godsey Date: Tue, 18 Apr 2017 08:52:19 -0600 Subject: [PATCH] scala 2.12 still has macro issue. scala-native still has test issue. --- js/src/test/scala/json/ExportTest.scala | 2 +- js/src/test/scala/json/JSTest.scala | 2 +- jvm/src/test/scala/json/JVMJSONTest.scala | 3 +- .../json/internal/JanssonDeserializer.scala | 1 + .../main/scala/json/internal/jansson.scala | 42 ++++++++++--------- project/ScalaJSON.scala | 7 +--- project/plugins.sbt | 6 +-- .../json/internal/CompileTimeOnly.scala | 0 .../json/internal/ObjectAccessorFactory.scala | 20 ++++----- shared/src/test/scala/json/JSONTest.scala | 15 ++++--- .../json/MigratingObjectAccessorTest.scala | 2 +- shared/src/test/scala/json/Sample.scala | 2 +- 12 files changed, 49 insertions(+), 53 deletions(-) rename shared/src/main/{scala-2.12.0-M3 => scala-2.12}/json/internal/CompileTimeOnly.scala (100%) diff --git a/js/src/test/scala/json/ExportTest.scala b/js/src/test/scala/json/ExportTest.scala index f427649..733d514 100644 --- a/js/src/test/scala/json/ExportTest.scala +++ b/js/src/test/scala/json/ExportTest.scala @@ -20,7 +20,7 @@ import scala.scalajs.js.annotation.JSExport import scalajs.js import utest._ -import utest.ExecutionContext.RunNow +import utest.framework.ExecutionContext.RunNow class ExportTest extends js.JSApp { @JSExport diff --git a/js/src/test/scala/json/JSTest.scala b/js/src/test/scala/json/JSTest.scala index 1d57d80..0b1ac8d 100644 --- a/js/src/test/scala/json/JSTest.scala +++ b/js/src/test/scala/json/JSTest.scala @@ -31,7 +31,7 @@ object JSTest extends TestSuite { assert(JSJValue.from(x) == result) } - val tests = TestSuite("test JS" - { + val tests = this("test JS" - { "test native JSON" - { val str = Tester.testJSON2 val native = NativeJSON.parse(str) diff --git a/jvm/src/test/scala/json/JVMJSONTest.scala b/jvm/src/test/scala/json/JVMJSONTest.scala index f12d3f3..ccf9728 100644 --- a/jvm/src/test/scala/json/JVMJSONTest.scala +++ b/jvm/src/test/scala/json/JVMJSONTest.scala @@ -18,11 +18,10 @@ package json import json.internal.PrimitiveJArray import utest._ -import utest.framework.TestSuite class JVMJSONTest extends TestSuite { - val tests = TestSuite { + val tests = this { "use primitive arrays" - { val arrJS = JArray(JTrue, JFalse, JTrue).toString val parsed = JValue.fromString(arrJS).jArray diff --git a/native/src/main/scala/json/internal/JanssonDeserializer.scala b/native/src/main/scala/json/internal/JanssonDeserializer.scala index fff91de..b45e83f 100644 --- a/native/src/main/scala/json/internal/JanssonDeserializer.scala +++ b/native/src/main/scala/json/internal/JanssonDeserializer.scala @@ -19,6 +19,7 @@ package json.internal import scalanative.native import janssonConstants._ +import janssonTypes._ import jansson._ import native._ import json._ diff --git a/native/src/main/scala/json/internal/jansson.scala b/native/src/main/scala/json/internal/jansson.scala index 28b3e1e..88953e9 100644 --- a/native/src/main/scala/json/internal/jansson.scala +++ b/native/src/main/scala/json/internal/jansson.scala @@ -23,25 +23,7 @@ import Nat._ @native.link("jansson") @native.extern object jansson { - type JSON_ERROR_TEXT_LENGTH = Digit[_1, Digit[_6, _0]] - type JSON_ERROR_SOURCE_LENGTH = Digit[_8, _0] - - type json_type = CInt //enum - - type json_error_t = CStruct5[ - CInt, //line - CInt, //column - CInt, //position, - CArray[CChar, JSON_ERROR_SOURCE_LENGTH], //source - CArray[CChar, JSON_ERROR_TEXT_LENGTH] //text - ] - - type json_t = CStruct2[ - json_type, //type - CSize //refcount - ] - - type json_iter = Ptr[Byte] + import janssonTypes._ def json_loads(input: CString, flags: CSize, error: Ptr[json_error_t]): Ptr[json_t] = extern @@ -70,6 +52,28 @@ object jansson { def json_string_value(str: Ptr[json_t]): CString = extern } +object janssonTypes { + type JSON_ERROR_TEXT_LENGTH = Digit[_1, Digit[_6, _0]] + type JSON_ERROR_SOURCE_LENGTH = Digit[_8, _0] + + type json_type = CInt //enum + + type json_error_t = CStruct5[ + CInt, //line + CInt, //column + CInt, //position, + CArray[CChar, JSON_ERROR_SOURCE_LENGTH], //source + CArray[CChar, JSON_ERROR_TEXT_LENGTH] //text + ] + + type json_t = CStruct2[ + json_type, //type + CSize //refcount + ] + + type json_iter = Ptr[Byte] +} + object janssonConstants { //json_type val JSON_OBJECT = 0 diff --git a/project/ScalaJSON.scala b/project/ScalaJSON.scala index 252a39b..7ce6738 100644 --- a/project/ScalaJSON.scala +++ b/project/ScalaJSON.scala @@ -53,7 +53,7 @@ object ScalaJSON { organizationName := "MediaMath, Inc", organizationHomepage := Some(url("http://www.mediamath.com")), crossPaths := true, - crossScalaVersions := Seq("2.10.6", targetScalaVer, "2.12.0-M3"), + crossScalaVersions := Seq("2.10.6", targetScalaVer, "2.12.1"), resolvers += Resolver.sonatypeRepo("releases"), addCompilerPlugin("org.scalamacros" % "paradise" % "2.1.0" cross CrossVersion.full) ) @@ -107,10 +107,7 @@ object ScalaJSON { }, - //temporary resolver for colinrgodsey fork of utest@0.3.1 for 2.12.0-M3 support - resolvers += "mvn repo" at "https://raw.githubusercontent.com/colinrgodsey/maven/master", - - libraryDependencies += "com.lihaoyi" %%% "utest" % "0.3.1" % "test", + libraryDependencies += "com.lihaoyi" %%% "utest" % "0.4.5" % "test", testFrameworks += new TestFramework("utest.runner.Framework") ) diff --git a/project/plugins.sbt b/project/plugins.sbt index ca8a66f..e6f3b7d 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -6,6 +6,6 @@ resolvers += Resolver.url( addSbtPlugin("org.tpolecat" % "tut-plugin" % "0.3.2") addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.14") -addSbtPlugin("org.scala-native" % "sbt-crossproject" % "0.1.0") // (1) -addSbtPlugin("org.scala-native" % "sbt-scalajs-crossproject" % "0.1.0") // (2) -addSbtPlugin("org.scala-native" % "sbt-scala-native" % "0.1.0") // (3) \ No newline at end of file +addSbtPlugin("org.scala-native" % "sbt-crossproject" % "0.1.0") +addSbtPlugin("org.scala-native" % "sbt-scalajs-crossproject" % "0.1.0") +addSbtPlugin("org.scala-native" % "sbt-scala-native" % "0.1.0") \ No newline at end of file diff --git a/shared/src/main/scala-2.12.0-M3/json/internal/CompileTimeOnly.scala b/shared/src/main/scala-2.12/json/internal/CompileTimeOnly.scala similarity index 100% rename from shared/src/main/scala-2.12.0-M3/json/internal/CompileTimeOnly.scala rename to shared/src/main/scala-2.12/json/internal/CompileTimeOnly.scala diff --git a/shared/src/main/scala/json/internal/ObjectAccessorFactory.scala b/shared/src/main/scala/json/internal/ObjectAccessorFactory.scala index a6f2074..6de25c2 100644 --- a/shared/src/main/scala/json/internal/ObjectAccessorFactory.scala +++ b/shared/src/main/scala/json/internal/ObjectAccessorFactory.scala @@ -184,10 +184,7 @@ object ObjectAccessorFactory { val nameConversion = nameConversionAnno.headOption match { case None => reify {s: String => s}.tree case Some(anno) => - println(showRaw(anno)) val outTree = anno.tree.children.tail.head - println(showRaw(outTree)) - println(show(outTree)) outTree } val nameConversionExpr = c.Expr[String => String](nameConversion) @@ -214,16 +211,15 @@ object ObjectAccessorFactory { val objMfExpr = classExpr(typ0) - val memberAnnos = (for { - mem <- typ0.members - anno <- mem.annotations - if anno.tree.tpe <:< typeOf[JSONAnnotation] - } yield mem.name -> anno) ++ (for { - paramSet <- applyMethod.paramLists - param <- paramSet - anno <- param.annotations + val memberSymbols: Iterable[Symbol] = + typ0.members ++ applyMethod.paramLists.flatten ++ + typ0.decls ++ typ0.companion.paramLists.flatten + + val memberAnnos = for { + sym <- memberSymbols + anno <- sym.annotations if anno.tree.tpe <:< typeOf[JSONAnnotation] - } yield param.name -> anno) + } yield sym.name -> anno //scan for annotations that show we should use a //different field name diff --git a/shared/src/test/scala/json/JSONTest.scala b/shared/src/test/scala/json/JSONTest.scala index f2bfd34..224c49d 100644 --- a/shared/src/test/scala/json/JSONTest.scala +++ b/shared/src/test/scala/json/JSONTest.scala @@ -19,7 +19,6 @@ package json import json.internal.PrimitiveJArray import json.tools.{TypedEnumerator, Enumerator} -import utest.framework.TestSuite import utest._ import scala.annotation.meta @@ -37,9 +36,6 @@ object Tester extends TestSuite { implicit val acc = ObjectAccessor.create[TestObject3] } - object TestObject2 { - implicit val acc = ObjectAccessor.create[TestObject2] - } case class TestObject2(a: String, b: String, qqq: Double = 2.456, c: String = "ddddd", d: Option[String] = Some("XXXX"), @name(field = "aa11") @Tester.NumAnno(11) ffff: Option[String] = None, @@ -47,13 +43,16 @@ object Tester extends TestSuite { TestObject3("", 0.5, 4)), seqa: Seq[Int] = Nil, blah: Int = 123) - - object TestObject { - implicit val acc = ObjectAccessor.create[TestObject] + object TestObject2 { + implicit val acc = ObjectAccessor.create[TestObject2] } + case class TestObject(a: String, @name(field = "BLAH") b: String, c: Int, d: TestObject2) + object TestObject { + implicit val acc = ObjectAccessor.create[TestObject] + } trait TestTrait { def num: Int @@ -106,7 +105,7 @@ object Tester extends TestSuite { def testJSONEqual(jv: JValue) = assert(JValue.fromString(jv.toString) == jv) - val tests = TestSuite { + val tests = this { "JSON accessor should" - { val test3 = TestObject3("", 0.5, 4) val test2 = TestObject2("sdfsdg", "dfdfd") diff --git a/shared/src/test/scala/json/MigratingObjectAccessorTest.scala b/shared/src/test/scala/json/MigratingObjectAccessorTest.scala index dda848a..a7fae99 100644 --- a/shared/src/test/scala/json/MigratingObjectAccessorTest.scala +++ b/shared/src/test/scala/json/MigratingObjectAccessorTest.scala @@ -34,7 +34,7 @@ object MigratingObjectAccessorTest extends TestSuite { val needsOneMigration = """{"data": "Awesome Data","version": 1}""" val needsTwoMigrations = """{"oldData": "Data","version": 0}""" - val tests = TestSuite { + val tests = this { "MigratingObjectAccessor" - { "Needs 1 Migration" - { diff --git a/shared/src/test/scala/json/Sample.scala b/shared/src/test/scala/json/Sample.scala index 50f76e2..5729325 100644 --- a/shared/src/test/scala/json/Sample.scala +++ b/shared/src/test/scala/json/Sample.scala @@ -64,7 +64,7 @@ object SampleTest extends TestSuite { } ) - val tests = TestSuite { + val tests = this { "a sample test" - { "access as json" - { runTest()