diff options
Diffstat (limited to 'src/compiler/scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/plugins/Plugin.scala | 4 | ||||
-rw-r--r-- | src/compiler/scala/tools/nsc/plugins/Plugins.scala | 8 |
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 |