summaryrefslogtreecommitdiff
path: root/src/compiler
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2013-05-20 06:32:49 -0700
committerJason Zaugg <jzaugg@gmail.com>2013-05-20 06:32:49 -0700
commit2da0576017c05bd07d3d1f1c773119adc4c7876b (patch)
tree3cae8517a96d27c460e314367e1e291ba3955684 /src/compiler
parent28f26fc5ee4b97657373334d910173961a91d275 (diff)
parent4ab66d1613da276712692001ed8f9f3c009736ab (diff)
downloadscala-2da0576017c05bd07d3d1f1c773119adc4c7876b.tar.gz
scala-2da0576017c05bd07d3d1f1c773119adc4c7876b.tar.bz2
scala-2da0576017c05bd07d3d1f1c773119adc4c7876b.zip
Merge pull request #2562 from som-snytt/issue/double-pluginv2.11.0-M3
SI-7494 Each plugin must only be instantiated once.
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/scala/tools/nsc/plugins/Plugin.scala11
1 files changed, 4 insertions, 7 deletions
diff --git a/src/compiler/scala/tools/nsc/plugins/Plugin.scala b/src/compiler/scala/tools/nsc/plugins/Plugin.scala
index b0113f7696..a584a4ed5d 100644
--- a/src/compiler/scala/tools/nsc/plugins/Plugin.scala
+++ b/src/compiler/scala/tools/nsc/plugins/Plugin.scala
@@ -93,15 +93,13 @@ object Plugin {
type AnyClass = Class[_]
/** Use a class loader to load the plugin class.
- *
- * @return `None` on failure
*/
- def load(pd: PluginDescription, loader: ClassLoader): Try[AnyClass] = {
+ def load(classname: String, loader: ClassLoader): Try[AnyClass] = {
Try[AnyClass] {
- loader loadClass pd.classname
+ loader loadClass classname
} recoverWith {
case _: Exception =>
- Failure(new RuntimeException(s"Warning: class not found: ${pd.classname}"))
+ Failure(new RuntimeException(s"Warning: class not found: ${classname}"))
}
}
@@ -137,9 +135,8 @@ object Plugin {
case _ => false
}
val (locs, pds) = ((explicit ::: exploded ::: included) filterNot ignored).unzip
-
val loader = loaderFor(locs.distinct)
- pds filter (_.isSuccess) map (_.get) map (Plugin load (_, loader))
+ (pds filter (_.isSuccess) map (_.get.classname)).distinct map (Plugin load (_, loader))
}
/** Instantiate a plugin class, given the class and