aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/ast
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2013-08-16 20:06:00 +0200
committerMartin Odersky <odersky@gmail.com>2013-08-16 20:06:00 +0200
commit28464328fbbc2a7575d819dcb98be0c9f11f7cee (patch)
treed8a24ac1f89e02be501c8695638f1b89b1b9c7c5 /src/dotty/tools/dotc/ast
parenta871c91aac6c46124b0ce9d118f6ba50496d9694 (diff)
downloaddotty-28464328fbbc2a7575d819dcb98be0c9f11f7cee.tar.gz
dotty-28464328fbbc2a7575d819dcb98be0c9f11f7cee.tar.bz2
dotty-28464328fbbc2a7575d819dcb98be0c9f11f7cee.zip
Eliminating getter generation in namer/typer.
The idea is that getters shoul dbe generated later (probably during UnCurry). This is much better for handling modules, and also obviates the need to have LocalNames. Getters can be generated as soon in the compilation pipeline as methoda always get a parameter list. That way, we can distinguihs getters from fields without playing any tricks with names.
Diffstat (limited to 'src/dotty/tools/dotc/ast')
-rw-r--r--src/dotty/tools/dotc/ast/Desugar.scala27
-rw-r--r--src/dotty/tools/dotc/ast/TreeInfo.scala2
2 files changed, 9 insertions, 20 deletions
diff --git a/src/dotty/tools/dotc/ast/Desugar.scala b/src/dotty/tools/dotc/ast/Desugar.scala
index 0e1de4b1b..68219bd7d 100644
--- a/src/dotty/tools/dotc/ast/Desugar.scala
+++ b/src/dotty/tools/dotc/ast/Desugar.scala
@@ -19,24 +19,13 @@ object desugar {
def valDef(vdef: ValDef)(implicit ctx: Context): Tree = {
val ValDef(mods, name, tpt, rhs) = vdef
- if (!ctx.owner.isClass || (mods is Private)) vdef
- else flatTree {
- val (field, getterRhs) =
- if (rhs.isEmpty)
- (EmptyTree, EmptyTree)
- else {
- val lname = name.toLocalName
- (cpy.ValDef(vdef, mods, lname, tpt, rhs), Ident(lname))
- }
- val getter = cpy.DefDef(vdef, mods | Accessor, name, Nil, Nil, tpt, getterRhs)
- if (!(mods is Mutable)) field :: getter :: Nil
- else {
- val setterParam = makeSyntheticParameter(tpt = TypeTree(getter))
- val setter = cpy.DefDef(vdef,
- mods | Accessor, name.getterToSetter, Nil, (setterParam :: Nil) :: Nil,
- EmptyTree, refOfDef(setterParam))
- field :: getter :: setter :: Nil
- }
+ if (!ctx.owner.isClass || (mods is Private) || !(mods is Mutable)) vdef
+ else {
+ val setterParam = makeSyntheticParameter(tpt = TypeTree(vdef))
+ val setter = cpy.DefDef(vdef,
+ mods | Accessor, name.setterName, Nil, (setterParam :: Nil) :: Nil,
+ EmptyTree, refOfDef(setterParam))
+ Thicket(vdef, setter)
}
}
@@ -233,7 +222,7 @@ object desugar {
val clsSelf = cpy.ValDef(self, self.mods, self.name, SingletonTypeTree(Ident(name)), self.rhs)
val clsTmpl = cpy.Template(tmpl, constr, parents, clsSelf, body)
val cls = TypeDef(mods.toTypeFlags & AccessFlags | ModuleClassCreationFlags, clsName, clsTmpl)
- Thicket(valDef(modul), cls)
+ Thicket(modul, cls)
}
def memberDef(tree: Tree)(implicit ctx: Context): Tree = tree match {
diff --git a/src/dotty/tools/dotc/ast/TreeInfo.scala b/src/dotty/tools/dotc/ast/TreeInfo.scala
index 4dba38e0e..416c64079 100644
--- a/src/dotty/tools/dotc/ast/TreeInfo.scala
+++ b/src/dotty/tools/dotc/ast/TreeInfo.scala
@@ -323,7 +323,7 @@ trait TypedTreeInfo extends TreeInfo[Type] {self: Trees.Instance[Type] =>
def sym = tree.symbol
def isVar = sym is Mutable
def isGetter =
- mayBeVarGetter(sym) && sym.owner.info.member(sym.name.asTermName.getterToSetter).exists
+ mayBeVarGetter(sym) && sym.owner.info.member(sym.name.asTermName.setterName).exists
tree match {
case Ident(_) => isVar