From a9e592996efed0cd7eec1fd1342f330cd146231c Mon Sep 17 00:00:00 2001 From: Eugene Yokota Date: Wed, 12 Feb 2020 15:24:41 -0500 Subject: [PATCH] Try to reproduce Scala.js + macro bug Ref https://github.com/sbt/sbt/issues/5427 --- .../sbt-test/plugins/scala-js-macro/build.sbt | 13 +++++++++++++ .../scala-js-macro/macro-client/Client.scala | 5 +++++ .../scala-js-macro/macro-provider/Provider.scala | 13 +++++++++++++ .../macro-provider/changes/Provider.scala | 8 ++++++++ .../plugins/scala-js-macro/project/plugins.sbt | 1 + sbt/src/sbt-test/plugins/scala-js-macro/test | 16 ++++++++++++++++ sbt/src/sbt-test/plugins/scala-js/build.sbt | 10 +++++++--- .../sbt-test/plugins/scala-js/project/extra.sbt | 1 - .../plugins/scala-js/project/plugins.sbt | 1 + 9 files changed, 64 insertions(+), 4 deletions(-) create mode 100644 sbt/src/sbt-test/plugins/scala-js-macro/build.sbt create mode 100644 sbt/src/sbt-test/plugins/scala-js-macro/macro-client/Client.scala create mode 100644 sbt/src/sbt-test/plugins/scala-js-macro/macro-provider/Provider.scala create mode 100644 sbt/src/sbt-test/plugins/scala-js-macro/macro-provider/changes/Provider.scala create mode 100644 sbt/src/sbt-test/plugins/scala-js-macro/project/plugins.sbt create mode 100644 sbt/src/sbt-test/plugins/scala-js-macro/test delete mode 100644 sbt/src/sbt-test/plugins/scala-js/project/extra.sbt create mode 100644 sbt/src/sbt-test/plugins/scala-js/project/plugins.sbt diff --git a/sbt/src/sbt-test/plugins/scala-js-macro/build.sbt b/sbt/src/sbt-test/plugins/scala-js-macro/build.sbt new file mode 100644 index 000000000..ff4eb16f3 --- /dev/null +++ b/sbt/src/sbt-test/plugins/scala-js-macro/build.sbt @@ -0,0 +1,13 @@ +ThisBuild / scalaVersion := "2.13.1" + +lazy val root = (project in file(".")) + .aggregate(macroProvider, macroClient) + +lazy val macroProvider = (project in file("macro-provider")) + .settings( + libraryDependencies += scalaVersion("org.scala-lang" % "scala-reflect" % _ ).value + ) + +lazy val macroClient = (project in file("macro-client")) + .enablePlugins(ScalaJSPlugin) + .dependsOn(macroProvider) diff --git a/sbt/src/sbt-test/plugins/scala-js-macro/macro-client/Client.scala b/sbt/src/sbt-test/plugins/scala-js-macro/macro-client/Client.scala new file mode 100644 index 000000000..151d7d267 --- /dev/null +++ b/sbt/src/sbt-test/plugins/scala-js-macro/macro-client/Client.scala @@ -0,0 +1,5 @@ +package macros + +object Client { + Provider.tree(0) +} diff --git a/sbt/src/sbt-test/plugins/scala-js-macro/macro-provider/Provider.scala b/sbt/src/sbt-test/plugins/scala-js-macro/macro-provider/Provider.scala new file mode 100644 index 000000000..ee55bfdd3 --- /dev/null +++ b/sbt/src/sbt-test/plugins/scala-js-macro/macro-provider/Provider.scala @@ -0,0 +1,13 @@ +package macros + +import scala.language.experimental.macros +import scala.reflect.macros.blackbox +import java.io.File + +object Provider { + def tree(args: Any): File = macro treeImpl + def treeImpl(c: blackbox.Context)(args: c.Expr[Any]): c.Expr[File] = { + import c.universe._ + c.Expr(q"""new java.io.File(".")""") + } +} diff --git a/sbt/src/sbt-test/plugins/scala-js-macro/macro-provider/changes/Provider.scala b/sbt/src/sbt-test/plugins/scala-js-macro/macro-provider/changes/Provider.scala new file mode 100644 index 000000000..92842db5d --- /dev/null +++ b/sbt/src/sbt-test/plugins/scala-js-macro/macro-provider/changes/Provider.scala @@ -0,0 +1,8 @@ +package macros +import scala.language.experimental.macros +import scala.reflect.macros.blackbox + +object Provider { + def tree(args: Any): Any = macro treeImpl + def treeImpl(c: blackbox.Context)(args: c.Expr[Any]) = sys.error("no macro for you!") +} diff --git a/sbt/src/sbt-test/plugins/scala-js-macro/project/plugins.sbt b/sbt/src/sbt-test/plugins/scala-js-macro/project/plugins.sbt new file mode 100644 index 000000000..8365c11cc --- /dev/null +++ b/sbt/src/sbt-test/plugins/scala-js-macro/project/plugins.sbt @@ -0,0 +1 @@ +addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.0.0") diff --git a/sbt/src/sbt-test/plugins/scala-js-macro/test b/sbt/src/sbt-test/plugins/scala-js-macro/test new file mode 100644 index 000000000..7a3d278a8 --- /dev/null +++ b/sbt/src/sbt-test/plugins/scala-js-macro/test @@ -0,0 +1,16 @@ +# Marked as pending due to StackOverflow error, see +# https://github.com/sbt/sbt/issues/1544 for details + +> compile + +# replace macro with one that throws an error + +$ copy-file macro-provider/changes/Provider.scala macro-provider/Provider.scala + +> macroProvider/compile + +-> macroClient/compile + +> clean + +-> compile diff --git a/sbt/src/sbt-test/plugins/scala-js/build.sbt b/sbt/src/sbt-test/plugins/scala-js/build.sbt index 2c43a4b30..f8c7a3109 100644 --- a/sbt/src/sbt-test/plugins/scala-js/build.sbt +++ b/sbt/src/sbt-test/plugins/scala-js/build.sbt @@ -1,3 +1,7 @@ -scalaVersion := "2.12.3" -enablePlugins(ScalaJSPlugin) -libraryDependencies += "org.scala-js" %%% "scalajs-java-time" % "0.2.2" +ThisBuild / scalaVersion := "2.13.1" + +lazy val root = (project in file(".")) + .enablePlugins(ScalaJSPlugin) + .settings( + libraryDependencies += "org.scala-js" %%% "scalajs-java-time" % "1.0.0" + ) diff --git a/sbt/src/sbt-test/plugins/scala-js/project/extra.sbt b/sbt/src/sbt-test/plugins/scala-js/project/extra.sbt deleted file mode 100644 index 4f6de4f49..000000000 --- a/sbt/src/sbt-test/plugins/scala-js/project/extra.sbt +++ /dev/null @@ -1 +0,0 @@ -addSbtPlugin("org.scala-js" % "sbt-scalajs" % "0.6.19") diff --git a/sbt/src/sbt-test/plugins/scala-js/project/plugins.sbt b/sbt/src/sbt-test/plugins/scala-js/project/plugins.sbt new file mode 100644 index 000000000..8365c11cc --- /dev/null +++ b/sbt/src/sbt-test/plugins/scala-js/project/plugins.sbt @@ -0,0 +1 @@ +addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.0.0")