diff --git a/project/Sbt.scala b/project/Sbt.scala index a4e93d5af..f3a48ab52 100644 --- a/project/Sbt.scala +++ b/project/Sbt.scala @@ -143,7 +143,8 @@ object Sbt extends Build val loader = classpath.ClasspathUtilities.toLoader(scriptedSbtClasspath.files, scriptedSbtInstance.loader) val m = ModuleUtilities.getObject("sbt.test.ScriptedTests", loader) val r = m.getClass.getMethod("run", classOf[File], classOf[Boolean], classOf[String], classOf[String], classOf[String], classOf[Array[String]], classOf[File], classOf[Array[String]]) - try { r.invoke(m, sourcePath, true: java.lang.Boolean, v, sv, ssv, args.toArray[String], launcher, Array[String]()) } + val launcherVmOptions = Array("-XX:MaxPermSize=256M") // increased after a failure in scripted source-dependencies/macro + try { r.invoke(m, sourcePath, true: java.lang.Boolean, v, sv, ssv, args.toArray[String], launcher, launcherVmOptions) } catch { case ite: java.lang.reflect.InvocationTargetException => throw ite.getCause } } } diff --git a/sbt/src/sbt-test/source-dependencies/macro/macro-client/Client.scala b/sbt/src/sbt-test/source-dependencies/macro/macro-client/Client.scala new file mode 100644 index 000000000..90932d136 --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/macro/macro-client/Client.scala @@ -0,0 +1,5 @@ +package macro + +object Client { + Provider.tree(0) +} diff --git a/sbt/src/sbt-test/source-dependencies/macro/macro-provider/Provider.scala b/sbt/src/sbt-test/source-dependencies/macro/macro-provider/Provider.scala new file mode 100644 index 000000000..93764e1b4 --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/macro/macro-provider/Provider.scala @@ -0,0 +1,5 @@ +package macro + +object Provider { + def macro tree(args: Any) = reify(args) +} diff --git a/sbt/src/sbt-test/source-dependencies/macro/macro-provider/changes/Provider.scala b/sbt/src/sbt-test/source-dependencies/macro/macro-provider/changes/Provider.scala new file mode 100644 index 000000000..53a086bb8 --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/macro/macro-provider/changes/Provider.scala @@ -0,0 +1,5 @@ +package macro + +object Provider { + def macro tree(args: Any) = sys.error("no macro for you!") +} diff --git a/sbt/src/sbt-test/source-dependencies/macro/project/build.scala b/sbt/src/sbt-test/source-dependencies/macro/project/build.scala new file mode 100644 index 000000000..1f95fbeb9 --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/macro/project/build.scala @@ -0,0 +1,29 @@ +import sbt._ +import Keys._ + +object build extends Build { + val defaultSettings = Seq( + scalaVersion := "2.10.0-M2", + scalacOptions += "-Xmacros" + ) + + lazy val root = Project( + base = file("."), + id = "macro", + aggregate = Seq(macroProvider, macroClient), + settings = Defaults.defaultSettings ++ defaultSettings + ) + + lazy val macroProvider = Project( + base = file("macro-provider"), + id = "macro-provider", + settings = Defaults.defaultSettings ++ defaultSettings + ) + + lazy val macroClient = Project( + base = file("macro-client"), + id = "macro-client", + dependencies = Seq(macroProvider), + settings = Defaults.defaultSettings ++ defaultSettings + ) +} diff --git a/sbt/src/sbt-test/source-dependencies/macro/test b/sbt/src/sbt-test/source-dependencies/macro/test new file mode 100644 index 000000000..b3755d4ee --- /dev/null +++ b/sbt/src/sbt-test/source-dependencies/macro/test @@ -0,0 +1,13 @@ +> compile + +# replace macro with one that throws an error + +$ copy-file macro-provider/changes/Provider.scala macro-provider/Provider.scala + +> macro-provider/compile + +-> macro-client/compile + +> clean + +-> compile