diff options
author | Martin Odersky <odersky@gmail.com> | 2014-07-03 19:02:26 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2014-07-17 11:02:00 +0200 |
commit | db88bf06958e33ae415ca227808ab1f3e48fed7f (patch) | |
tree | def81047ef7f2bdf930e2a5561cfcd2403a61912 /src/dotty/tools/dotc/transform/SuperAccessors.scala | |
parent | efe4f7e43652a303d16a5253f84316e547f45cca (diff) | |
download | dotty-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.scala | 17 |
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) |