fixed double-loading of plugins. reinstated not-enabled error msg for cps plugin. review by community.
git-svn-id: http://lampsvn.epfl.ch/svn-repos/scala/scala/trunk@21271 5e8d7ff9-d8ef-0310-90f0-a4852d11357a
This commit is contained in:
parent
1bdb15ae2a
commit
bf8688554f
|
@ -632,7 +632,7 @@ QUICK BUILD (QUICK)
|
|||
<scalacfork
|
||||
destdir="${build-quick.dir}/classes/library"
|
||||
compilerpathref="locker.classpath"
|
||||
params="${scalac.args.quick} -Xplugin:${build-quick.dir}/plugins/continuations.jar -Xplugin-require:continuations -P:continuations:enable"
|
||||
params="${scalac.args.quick} -Xpluginsdir ${build-quick.dir}/plugins -Xplugin-require:continuations -P:continuations:enable"
|
||||
srcdir="${src.dir}/continuations/library"
|
||||
jvmargs="${scalacfork.jvmargs}">
|
||||
<include name="**/*.scala"/>
|
||||
|
@ -1135,7 +1135,7 @@ BOOTSTRAPPING BUILD (STRAP)
|
|||
<scalacfork
|
||||
destdir="${build-strap.dir}/classes/library"
|
||||
compilerpathref="pack.classpath"
|
||||
params="${scalac.args.quick} -Xplugin:${build-strap.dir}/plugins/continuations.jar -Xplugin-require:continuations -P:continuations:enable"
|
||||
params="${scalac.args.quick} -Xpluginsdir ${build-quick.dir}/plugins -Xplugin-require:continuations -P:continuations:enable"
|
||||
srcdir="${src.dir}/continuations/library"
|
||||
jvmargs="${scalacfork.jvmargs}">
|
||||
<include name="**/*.scala"/>
|
||||
|
@ -1554,7 +1554,7 @@ BOOTRAPING TEST AND TEST SUITE
|
|||
<partest showlog="yes" erroronfailed="yes" javacmd="${java.home}/bin/java"
|
||||
timeout="2400000" javaccmd="${javac.cmd}"
|
||||
srcdir="${partest.srcdir}"
|
||||
scalacopts="${scalac.args.optimise} -Xplugin:${build-pack.dir}/plugins/continuations.jar -Xplugin-require:continuations -P:continuations:enable">
|
||||
scalacopts="${scalac.args.optimise} -Xpluginsdir ${build-quick.dir}/plugins -Xplugin-require:continuations -P:continuations:enable">
|
||||
<compilationpath>
|
||||
<path refid="pack.classpath"/>
|
||||
<fileset dir="${partest.dir}/files/lib" includes="*.jar" />
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -380,7 +380,11 @@ abstract class CPSAnnotationChecker extends CPSUtils {
|
|||
* for a tree. All this should do is add annotations. */
|
||||
|
||||
override def addAnnotations(tree: Tree, tpe: Type): Type = {
|
||||
if (!cpsEnabled) return tpe
|
||||
if (!cpsEnabled) {
|
||||
if (tpe.hasAnnotation(MarkerCPSTypes))
|
||||
global.reporter.error(tree.pos, "this code must be compiled with the Scala continuations plugin enabled")
|
||||
return tpe
|
||||
}
|
||||
|
||||
// if (tree.tpe.hasAnnotation(MarkerCPSAdaptPlus))
|
||||
// println("addAnnotation " + tree + "/" + tpe)
|
||||
|
|
|
@ -33,6 +33,7 @@ class SelectiveCPSPlugin(val global: Global) extends Plugin {
|
|||
}
|
||||
global.addAnnotationChecker(checker.checker)
|
||||
|
||||
global.log("instantiated cps plugin: " + this)
|
||||
|
||||
def setEnabled(flag: Boolean) = {
|
||||
checker.cpsEnabled = flag
|
||||
|
@ -56,6 +57,4 @@ class SelectiveCPSPlugin(val global: Global) extends Plugin {
|
|||
|
||||
override val optionsHelp: Option[String] =
|
||||
Some(" -P:continuations:enable Enable continuations")
|
||||
// " -sourcepath <path> Specify where to find input source files"
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue