summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/plugins
diff options
context:
space:
mode:
authorTiark Rompf <tiark.rompf@epfl.ch>2010-03-25 16:14:56 +0000
committerTiark Rompf <tiark.rompf@epfl.ch>2010-03-25 16:14:56 +0000
commit1cedf8047ba9820277b2b9e546092918e6e0c7d1 (patch)
treec1bc414403baccde9a45715ec61609a456786ee1 /src/compiler/scala/tools/nsc/plugins
parent63103a5e1a4970d7984d15efe8db4c30fbb56828 (diff)
downloadscala-1cedf8047ba9820277b2b9e546092918e6e0c7d1.tar.gz
scala-1cedf8047ba9820277b2b9e546092918e6e0c7d1.tar.bz2
scala-1cedf8047ba9820277b2b9e546092918e6e0c7d1.zip
fixed double-loading of plugins.
Diffstat (limited to 'src/compiler/scala/tools/nsc/plugins')
-rw-r--r--src/compiler/scala/tools/nsc/plugins/Plugin.scala4
-rw-r--r--src/compiler/scala/tools/nsc/plugins/Plugins.scala8
2 files changed, 6 insertions, 6 deletions
diff --git a/src/compiler/scala/tools/nsc/plugins/Plugin.scala b/src/compiler/scala/tools/nsc/plugins/Plugin.scala
index 92dcd6c534..f527441c68 100644
--- a/src/compiler/scala/tools/nsc/plugins/Plugin.scala
+++ b/src/compiler/scala/tools/nsc/plugins/Plugin.scala
@@ -131,13 +131,13 @@ object Plugin {
dirs: List[Path],
ignoring: List[String]): List[AnyClass] =
{
- val alljars = jars ::: (for {
+ val alljars = (jars ::: (for {
dir <- dirs if dir.isDirectory
entry <- dir.toDirectory.files.toList sortBy (_.name)
if entry.extension == "jar"
pdesc <- loadDescription(entry)
if !(ignoring contains pdesc.name)
- } yield entry)
+ } yield entry)).distinct
val loader = loaderFor(alljars)
alljars map (loadFrom(_, loader)) flatten
diff --git a/src/compiler/scala/tools/nsc/plugins/Plugins.scala b/src/compiler/scala/tools/nsc/plugins/Plugins.scala
index 90d306614a..8a86c982d9 100644
--- a/src/compiler/scala/tools/nsc/plugins/Plugins.scala
+++ b/src/compiler/scala/tools/nsc/plugins/Plugins.scala
@@ -30,10 +30,10 @@ trait Plugins
val dirs = (settings.pluginsDir.value split File.pathSeparator).toList map Path.apply
val classes = Plugin.loadAllFrom(jars, dirs, settings.disable.value)
- classes foreach (c => Plugin.instantiate(c, this))
-
- for (plugClass <- Plugin.loadAllFrom(jars, dirs, settings.disable.value))
- yield Plugin.instantiate(plugClass, this)
+ // Lach plugin must only be instantiated once. A commong pattern
+ // is to register annotation checkers during object construction, so
+ // creating multiple plugin instances will leave behind stale checkers. s
+ classes map (Plugin.instantiate(_, this))
}
protected lazy val roughPluginsList: List[Plugin] = loadRoughPluginsList