aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/transform/SuperAccessors.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2014-07-03 19:02:26 +0200
committerMartin Odersky <odersky@gmail.com>2014-07-17 11:02:00 +0200
commitdb88bf06958e33ae415ca227808ab1f3e48fed7f (patch)
treedef81047ef7f2bdf930e2a5561cfcd2403a61912 /src/dotty/tools/dotc/transform/SuperAccessors.scala
parentefe4f7e43652a303d16a5253f84316e547f45cca (diff)
downloaddotty-db88bf06958e33ae415ca227808ab1f3e48fed7f.tar.gz
dotty-db88bf06958e33ae415ca227808ab1f3e48fed7f.tar.bz2
dotty-db88bf06958e33ae415ca227808ab1f3e48fed7f.zip
Various cleanups and utility additions
- Some new functionality in tpd and in Symbols. - Added `sm` interpolator to print nicely. - Make use of nestedMap where possible. - Add IdentityDenotTransformer as a convencience class
Diffstat (limited to 'src/dotty/tools/dotc/transform/SuperAccessors.scala')
-rw-r--r--src/dotty/tools/dotc/transform/SuperAccessors.scala17
1 files changed, 7 insertions, 10 deletions
diff --git a/src/dotty/tools/dotc/transform/SuperAccessors.scala b/src/dotty/tools/dotc/transform/SuperAccessors.scala
index 27378f533..d6af96301 100644
--- a/src/dotty/tools/dotc/transform/SuperAccessors.scala
+++ b/src/dotty/tools/dotc/transform/SuperAccessors.scala
@@ -48,7 +48,7 @@ import Symbols._
*
* TODO: Rename phase to "Accessors" because it handles more than just super accessors
*/
-class SuperAccessors extends MacroTransform with DenotTransformer { thisTransformer =>
+class SuperAccessors extends MacroTransform with IdentityDenotTransformer { thisTransformer =>
import tpd._
@@ -58,9 +58,6 @@ class SuperAccessors extends MacroTransform with DenotTransformer { thisTransfor
protected def newTransformer(implicit ctx: Context): Transformer =
new SuperAccTransformer
- /** No transformation here, but new denotations are installed by the tree traversal */
- def transform(ref: SingleDenotation)(implicit ctx: Context): SingleDenotation = ref
-
class SuperAccTransformer extends Transformer {
/** validCurrentOwner arrives undocumented, but I reverse engineer it to be
@@ -444,10 +441,10 @@ class SuperAccessors extends MacroTransform with DenotTransformer { thisTransfor
val protectedAccessor = clazz.info.decl(accName).suchThat(_.signature == accType.signature).symbol orElse {
val newAcc = ctx.newSymbol(
clazz, accName, Artifact, accType, coord = tree.pos).enteredAfter(thisTransformer)
- val code = polyDefDef(newAcc, targs => argss => {
- val (receiver :: _) :: tail = argss
- val base = Select(receiver, sym).appliedToTypes(targs)
- (base /: argss)(Apply(_, _))
+ val code = polyDefDef(newAcc, trefs => vrefss => {
+ val (receiver :: _) :: tail = vrefss
+ val base = Select(receiver, sym).appliedToTypes(trefs)
+ (base /: vrefss)(Apply(_, _))
})
ctx.debuglog("created protected accessor: " + code)
storeAccessorDefinition(clazz, code)
@@ -474,8 +471,8 @@ class SuperAccessors extends MacroTransform with DenotTransformer { thisTransfor
val protectedAccessor = clazz.info.decl(accName).symbol orElse {
val newAcc = ctx.newSymbol(
clazz, accName, Artifact, accType, coord = tree.pos).enteredAfter(thisTransformer)
- val code = DefDef(newAcc, argss => {
- val (receiver :: value :: Nil) :: Nil = argss
+ val code = DefDef(newAcc, vrefss => {
+ val (receiver :: value :: Nil) :: Nil = vrefss
Assign(Select(receiver, field), value).withPos(tree.pos)
})
ctx.debuglog("created protected setter: " + code)