summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2010-05-25 15:57:21 +0000
committerMartin Odersky <odersky@gmail.com>2010-05-25 15:57:21 +0000
commitbb83cb8ba76643d3e8de9d34351efbd4fc963f84 (patch)
tree5ce8fdb8cb47bfd179b62c9a76659b74bac1f95c /src
parent885f76fd054d5e71202112bae75c313bbad269ab (diff)
downloadscala-bb83cb8ba76643d3e8de9d34351efbd4fc963f84.tar.gz
scala-bb83cb8ba76643d3e8de9d34351efbd4fc963f84.tar.bz2
scala-bb83cb8ba76643d3e8de9d34351efbd4fc963f84.zip
Closes #3469. Review by rytz.
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/transform/Constructors.scala10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/Constructors.scala b/src/compiler/scala/tools/nsc/transform/Constructors.scala
index af9c28232d..c9049d9ab1 100644
--- a/src/compiler/scala/tools/nsc/transform/Constructors.scala
+++ b/src/compiler/scala/tools/nsc/transform/Constructors.scala
@@ -78,18 +78,22 @@ abstract class Constructors extends Transform with ast.TreeDSL {
// A transformer for expressions that go into the constructor
val intoConstructorTransformer = new Transformer {
+ def isParamRef(sym: Symbol) =
+ (sym hasFlag PARAMACCESSOR) &&
+ sym.owner == clazz &&
+ !(sym.isGetter && sym.accessed.isVariable) &&
+ !sym.isSetter
override def transform(tree: Tree): Tree = tree match {
case Apply(Select(This(_), _), List()) =>
// references to parameter accessor methods of own class become references to parameters
// outer accessors become references to $outer parameter
- if ((tree.symbol hasFlag PARAMACCESSOR) && tree.symbol.owner == clazz)
+ if (isParamRef(tree.symbol))
gen.mkAttributedIdent(parameter(tree.symbol.accessed)) setPos tree.pos
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.isSetter && tree.symbol.owner == clazz) =>
+ case Select(This(_), _) if (isParamRef(tree.symbol)) =>
// references to parameter accessor field of own class become references to parameters
gen.mkAttributedIdent(parameter(tree.symbol)) setPos tree.pos
case Select(_, _) =>