summaryrefslogtreecommitdiff
path: root/src/compiler
diff options
context:
space:
mode:
authorIulian Dragos <jaguarul@gmail.com>2007-01-04 16:04:58 +0000
committerIulian Dragos <jaguarul@gmail.com>2007-01-04 16:04:58 +0000
commit78d2e50495215b8c451660e6804ddc8c264446b4 (patch)
tree35e613ad3fa552e2588c256aefe251102924ecf7 /src/compiler
parentd1042e7f425c352e20cec779377b895faefb9521 (diff)
downloadscala-78d2e50495215b8c451660e6804ddc8c264446b4.tar.gz
scala-78d2e50495215b8c451660e6804ddc8c264446b4.tar.bz2
scala-78d2e50495215b8c451660e6804ddc8c264446b4.zip
Reverted Nik's changes from revision 9152
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/scala/tools/nsc/transform/Constructors.scala50
1 files changed, 15 insertions, 35 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/Constructors.scala b/src/compiler/scala/tools/nsc/transform/Constructors.scala
index 54ea55dde8..9ec52c2273 100644
--- a/src/compiler/scala/tools/nsc/transform/Constructors.scala
+++ b/src/compiler/scala/tools/nsc/transform/Constructors.scala
@@ -10,11 +10,6 @@ import scala.collection.mutable.ListBuffer
import symtab.Flags._
import util.TreeSet
-/** The abstract class <code>Constructors</code> ...
- *
- * @author Martin Odersky
- * @version 1.0
- */
abstract class Constructors extends Transform {
import global._
import definitions._
@@ -68,36 +63,22 @@ abstract class Constructors extends Transform {
val intoConstructorTransformer = new Transformer {
override def transform(tree: Tree): Tree = tree match {
case Apply(Select(This(_), _), List()) =>
- if ((tree.symbol hasFlag PARAMACCESSOR) && tree.symbol.owner == clazz) {
- thisRefSeen = false
+ if ((tree.symbol hasFlag PARAMACCESSOR) && tree.symbol.owner == clazz)
gen.mkAttributedIdent(parameter(tree.symbol.accessed)) setPos tree.pos
- }
- else if (tree.symbol.outerSource == clazz && !clazz.isImplClass) {
- thisRefSeen = false
+ else if (tree.symbol.outerSource == clazz && !clazz.isImplClass)
gen.mkAttributedIdent(parameterNamed(nme.OUTER)) setPos tree.pos
- }
else
super.transform(tree)
case Select(This(_), _)
if ((tree.symbol hasFlag PARAMACCESSOR) && tree.symbol.owner == clazz) =>
- thisRefSeen = false
gen.mkAttributedIdent(parameter(tree.symbol)) setPos tree.pos
- case Apply(fun, args) =>
- var tmpRefSeen = thisRefSeen
- val fun1 = transform(fun)
- thisRefSeen = tmpRefSeen || thisRefSeen
- val args1 = List.mapConserve(args){ tree =>
- tmpRefSeen = thisRefSeen
- val res = transform(tree)
- thisRefSeen = tmpRefSeen || thisRefSeen
- res
- }
- copy.Apply(tree, fun1, args1)
- case Block(_, _) =>
- val res = super.transform(tree)
+ case Select(_, _) =>
thisRefSeen = true
- res
- case This(_) | Super(_, _) | Select(_, _) =>
+ super.transform(tree)
+ case This(_) =>
+ thisRefSeen = true
+ super.transform(tree)
+ case Super(_, _) =>
thisRefSeen = true
super.transform(tree)
case _ =>
@@ -119,7 +100,7 @@ abstract class Constructors extends Transform {
localTyper.typed {
Assign(Select(This(clazz), to), from)
}
- }
+ }
def copyParam(to: Symbol, from: Symbol): Tree = {
var result = mkAssign(to, Ident(from))
@@ -155,7 +136,7 @@ abstract class Constructors extends Transform {
assert(stat.symbol.getter(stat.symbol.owner) != NoSymbol, stat)
else {
if (rhs != EmptyTree) {
- val rhs1 = intoConstructor(stat.symbol, rhs)
+ val rhs1 = intoConstructor(stat.symbol, rhs);
(if (canBeMoved(stat)) constrPrefixBuf else constrStatBuf) += mkAssign(
stat.symbol, rhs1)
}
@@ -169,11 +150,12 @@ abstract class Constructors extends Transform {
val accessed = new TreeSet[Symbol]((x, y) => x isLess y)
- def isAccessed(sym: Symbol) =
+ def isAccessed(sym: Symbol) = (
sym.owner != clazz ||
!(sym hasFlag PARAMACCESSOR) ||
!(sym hasFlag LOCAL) ||
(accessed contains sym)
+ );
val accessTraverser = new Traverser {
override def traverse(tree: Tree) = {
@@ -186,7 +168,7 @@ abstract class Constructors extends Transform {
}
}
- for (val stat <- defBuf.elements) accessTraverser.traverse(stat)
+ for (val stat <- defBuf.elements) accessTraverser.traverse(stat);
val paramInits = for (val acc <- paramAccessors; isAccessed(acc))
yield copyParam(acc, parameter(acc))
@@ -198,14 +180,12 @@ abstract class Constructors extends Transform {
paramInits ::: constrPrefixBuf.toList ::: constrStatBuf.toList,
constrBody.expr));
- copy.Template(impl, impl.parents,
- defBuf.toList filter (stat => isAccessed(stat.symbol)))
+ copy.Template(impl, impl.parents, defBuf.toList filter (stat => isAccessed(stat.symbol)))
}
override def transform(tree: Tree): Tree = {
tree match {
- case ClassDef(mods, name, tparams, tpt, impl)
- if !tree.symbol.hasFlag(INTERFACE) =>
+ case ClassDef(mods, name, tparams, tpt, impl) if !tree.symbol.hasFlag(INTERFACE) =>
copy.ClassDef(tree, mods, name, tparams, tpt, transformClassTemplate(impl))
case _ =>
super.transform(tree)