summaryrefslogtreecommitdiff
path: root/src/compiler
diff options
context:
space:
mode:
authorMiguel Garcia <magarcia@epfl.ch>2011-03-25 14:40:35 +0000
committerMiguel Garcia <magarcia@epfl.ch>2011-03-25 14:40:35 +0000
commit70e6dc980f923501733ec1617964f66fcfbceee4 (patch)
treec35b7eac65e8346251a9fbaea4ff1df36ec7de4c /src/compiler
parent88fd5b92799fb26b12001c84b17781610b1dd59b (diff)
downloadscala-70e6dc980f923501733ec1617964f66fcfbceee4.tar.gz
scala-70e6dc980f923501733ec1617964f66fcfbceee4.tar.bz2
scala-70e6dc980f923501733ec1617964f66fcfbceee4.zip
for Scala.NET bootstrapping.
forJVM behavior remains unchanged.
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/scala/tools/nsc/transform/CleanUp.scala30
1 files changed, 22 insertions, 8 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/CleanUp.scala b/src/compiler/scala/tools/nsc/transform/CleanUp.scala
index 8d0ecd247b..9980db6ff5 100644
--- a/src/compiler/scala/tools/nsc/transform/CleanUp.scala
+++ b/src/compiler/scala/tools/nsc/transform/CleanUp.scala
@@ -512,17 +512,31 @@ abstract class CleanUp extends Transform with ast.TreeDSL {
* constructor. */
case Template(parents, self, body) =>
localTyper = typer.atOwner(tree, currentClass)
+ var savedNewStaticMembers : mutable.Buffer[Tree] = null
+ var savedNewStaticInits : mutable.Buffer[Tree] = null
+ var savedSymbolsStoredAsStatic : mutable.Map[String, Symbol] = null
+ if(forMSIL) {
+ savedNewStaticMembers = newStaticMembers.clone
+ savedNewStaticInits = newStaticInits.clone
+ savedSymbolsStoredAsStatic = symbolsStoredAsStatic.clone
+ }
newStaticMembers.clear
newStaticInits.clear
symbolsStoredAsStatic.clear
- val transformedTemplate: Template =
- if (!forMSIL || forMSIL) {
- var newBody =
- transformTrees(body)
- treeCopy.Template(tree, parents, self, transformTrees(newStaticMembers.toList) ::: newBody)
- }
- else super.transform(tree).asInstanceOf[Template]
- addStaticInits(transformedTemplate) // postprocess to include static ctors
+ val transformedTemplate: Template = {
+ var newBody = transformTrees(body)
+ treeCopy.Template(tree, parents, self, transformTrees(newStaticMembers.toList) ::: newBody)
+ }
+ val res = addStaticInits(transformedTemplate) // postprocess to include static ctors
+ newStaticMembers.clear
+ newStaticInits.clear
+ symbolsStoredAsStatic.clear
+ if(forMSIL) {
+ newStaticMembers ++= savedNewStaticMembers
+ newStaticInits ++= savedNewStaticInits
+ symbolsStoredAsStatic ++= savedSymbolsStoredAsStatic
+ }
+ res
case Literal(c) if (c.tag == ClassTag) && !forMSIL=>
val tpe = c.typeValue