summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2006-08-21 19:27:19 +0000
committerMartin Odersky <odersky@gmail.com>2006-08-21 19:27:19 +0000
commite15e544b0947d91942fe890cca1ad45479a42e3c (patch)
tree5936e8bda6fb1bd55ea7d7e7696aafb7ecf4fc72 /src
parent3197c82a56dd43a3916511a41af5a4ddd1b2e1b3 (diff)
downloadscala-e15e544b0947d91942fe890cca1ad45479a42e3c.tar.gz
scala-e15e544b0947d91942fe890cca1ad45479a42e3c.tar.bz2
scala-e15e544b0947d91942fe890cca1ad45479a42e3c.zip
Diffstat (limited to 'src')
-rw-r--r--src/compiler/scala/tools/nsc/transform/Mixin.scala10
1 files changed, 7 insertions, 3 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/Mixin.scala b/src/compiler/scala/tools/nsc/transform/Mixin.scala
index 28b6342e1e..2dca9c0ea8 100644
--- a/src/compiler/scala/tools/nsc/transform/Mixin.scala
+++ b/src/compiler/scala/tools/nsc/transform/Mixin.scala
@@ -298,14 +298,18 @@ abstract class Mixin extends InfoTransform {
def implementPrivateObject(stat: Tree): List[Tree] = {
val sym = stat.symbol
stat match {
- case _: DefDef if (sym.isModule && sym.hasFlag(PRIVATE)) =>
+ case _: DefDef if (sym.isModule && sym.owner.isClass && sym.hasFlag(PRIVATE)) =>
+ Console.println("implementing "+sym+sym.locationString)//debug
val vdef = attributedDef(position(sym), gen.mkModuleVarDef(sym))
val adef = attributedDef(
position(sym),
- DefDef(sym, vparamss =>
+ DefDef(sym, { vparamss =>
+ val args = vparamss.head.map(Ident).take(
+ vdef.symbol.primaryConstructor.info.paramTypes.length)
gen.mkCached(
vdef.symbol,
- New(TypeTree(vdef.symbol.tpe), vparamss map (.map(Ident))))))
+ New(TypeTree(vdef.symbol.tpe), List(args)))
+ }))
sym resetFlag lateDEFERRED
List(vdef, adef)
case _ =>