diff options
author | Martin Odersky <odersky@gmail.com> | 2006-08-21 19:27:19 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2006-08-21 19:27:19 +0000 |
commit | e15e544b0947d91942fe890cca1ad45479a42e3c (patch) | |
tree | 5936e8bda6fb1bd55ea7d7e7696aafb7ecf4fc72 | |
parent | 3197c82a56dd43a3916511a41af5a4ddd1b2e1b3 (diff) | |
download | scala-e15e544b0947d91942fe890cca1ad45479a42e3c.tar.gz scala-e15e544b0947d91942fe890cca1ad45479a42e3c.tar.bz2 scala-e15e544b0947d91942fe890cca1ad45479a42e3c.zip |
-rw-r--r-- | src/compiler/scala/tools/nsc/transform/Mixin.scala | 10 |
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 _ => |