diff options
author | Lukas Rytz <lukas.rytz@typesafe.com> | 2015-07-16 13:32:56 +0200 |
---|---|---|
committer | Lukas Rytz <lukas.rytz@typesafe.com> | 2015-07-16 13:32:56 +0200 |
commit | f2e055f251d8c7169e8a84246d62d923fbcc8524 (patch) | |
tree | 127949e3d24dd94e8b6c6fd18d2340b9a0260373 | |
parent | 6b3c518667b13796ff41a2ad86041d2cd67b6fba (diff) | |
parent | c32ba936ac4f7c0e9f815fadeec84294354567be (diff) | |
download | scala-f2e055f251d8c7169e8a84246d62d923fbcc8524.tar.gz scala-f2e055f251d8c7169e8a84246d62d923fbcc8524.tar.bz2 scala-f2e055f251d8c7169e8a84246d62d923fbcc8524.zip |
Merge pull request #4595 from som-snytt/issue/9370
SI-9370 Xplugin scans plugin path for descriptor
-rw-r--r-- | src/compiler/scala/tools/nsc/plugins/Plugin.scala | 4 | ||||
-rw-r--r-- | test/files/pos/t9370/ThePlugin.scala | 31 | ||||
-rw-r--r-- | test/files/pos/t9370/sample_2.flags | 1 | ||||
-rw-r--r-- | test/files/pos/t9370/sample_2.scala | 6 | ||||
-rw-r--r-- | test/files/pos/t9370/scalac-plugin.xml | 5 |
5 files changed, 45 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/plugins/Plugin.scala b/src/compiler/scala/tools/nsc/plugins/Plugin.scala index 1a5529140c..dd17750cd4 100644 --- a/src/compiler/scala/tools/nsc/plugins/Plugin.scala +++ b/src/compiler/scala/tools/nsc/plugins/Plugin.scala @@ -158,8 +158,8 @@ object Plugin { def loop(qs: List[Path]): Try[PluginDescription] = qs match { case Nil => Failure(new MissingPluginException(ps)) case p :: rest => - if (p.isDirectory) loadDescriptionFromFile(p.toDirectory / PluginXML) - else if (p.isFile) loadDescriptionFromJar(p.toFile) + if (p.isDirectory) loadDescriptionFromFile(p.toDirectory / PluginXML) orElse loop(rest) + else if (p.isFile) loadDescriptionFromJar(p.toFile) orElse loop(rest) else loop(rest) } loop(ps) diff --git a/test/files/pos/t9370/ThePlugin.scala b/test/files/pos/t9370/ThePlugin.scala new file mode 100644 index 0000000000..cd800781dc --- /dev/null +++ b/test/files/pos/t9370/ThePlugin.scala @@ -0,0 +1,31 @@ +package scala.test.plugins + +import scala.tools.nsc +import nsc.Global +import nsc.Phase +import nsc.plugins.Plugin +import nsc.plugins.PluginComponent + +class ThePlugin(val global: Global) extends Plugin { + import global._ + + val name = "timebomb" + val description = "Explodes if run. Maybe I haven't implemented it yet." + val components = List[PluginComponent](thePhase1) + + private object thePhase1 extends PluginComponent { + val global = ThePlugin.this.global + + val runsAfter = List[String]("parser") + override val runsBefore = List[String]("namer") + val phaseName = ThePlugin.this.name + + def newPhase(prev: Phase) = new ThePhase(prev) + } + + private class ThePhase(prev: Phase) extends Phase(prev) { + override def name = ThePlugin.this.name + override def run = ??? + } +} + diff --git a/test/files/pos/t9370/sample_2.flags b/test/files/pos/t9370/sample_2.flags new file mode 100644 index 0000000000..03baca3030 --- /dev/null +++ b/test/files/pos/t9370/sample_2.flags @@ -0,0 +1 @@ +-Xplugin:/tmp:. -Xplugin-require:timebomb -Ystop-after:parser diff --git a/test/files/pos/t9370/sample_2.scala b/test/files/pos/t9370/sample_2.scala new file mode 100644 index 0000000000..7eb11b8204 --- /dev/null +++ b/test/files/pos/t9370/sample_2.scala @@ -0,0 +1,6 @@ + +package sample + +// just a sample that is compiled with the explosive plugin disabled +object Sample extends App { +} diff --git a/test/files/pos/t9370/scalac-plugin.xml b/test/files/pos/t9370/scalac-plugin.xml new file mode 100644 index 0000000000..2558d6fd03 --- /dev/null +++ b/test/files/pos/t9370/scalac-plugin.xml @@ -0,0 +1,5 @@ +<plugin> + <name>ignored</name> + <classname>scala.test.plugins.ThePlugin</classname> +</plugin> + |