diff options
author | Hubert Plociniczak <hubert.plociniczak@epfl.ch> | 2010-10-01 17:10:27 +0000 |
---|---|---|
committer | Hubert Plociniczak <hubert.plociniczak@epfl.ch> | 2010-10-01 17:10:27 +0000 |
commit | 256aca612204f1316e5281af6d10a14300d58ad1 (patch) | |
tree | 207ec6cdb99b473b9a21811d4d903ed75a289ed7 /src/compiler/scala/tools/nsc/ast/TreeGen.scala | |
parent | 1148daec9c6aeba69d5d37fde877ab20b310db5b (diff) | |
download | scala-256aca612204f1316e5281af6d10a14300d58ad1.tar.gz scala-256aca612204f1316e5281af6d10a14300d58ad1.tar.bz2 scala-256aca612204f1316e5281af6d10a14300d58ad1.zip |
Another attempt for #1591.
Diffstat (limited to 'src/compiler/scala/tools/nsc/ast/TreeGen.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/ast/TreeGen.scala | 27 |
1 files changed, 7 insertions, 20 deletions
diff --git a/src/compiler/scala/tools/nsc/ast/TreeGen.scala b/src/compiler/scala/tools/nsc/ast/TreeGen.scala index a886e7468f..34f07baef2 100644 --- a/src/compiler/scala/tools/nsc/ast/TreeGen.scala +++ b/src/compiler/scala/tools/nsc/ast/TreeGen.scala @@ -259,30 +259,17 @@ abstract class TreeGen { ) } - // var m$: T = null; or, if class member: local var m$: T = _; - /*!!! - def mkModuleValDef(accessor: Symbol) = { - val mval = accessor.owner.newValue(accessor.pos.focus, nme.moduleVarName(accessor.name)) + def mkModuleVarDef(accessor: Symbol) = { + val mval = accessor.owner.newVariable(accessor.pos.focus, nme.moduleVarName(accessor.name)) .setInfo(accessor.tpe.finalResultType) - .setFlag(LAZY); + .setFlag(LAZY) + .setFlag(MODULEVAR) + mval.setLazyAccessor(accessor) if (mval.owner.isClass) { mval setFlag (PRIVATE | LOCAL | SYNTHETIC) mval.owner.info.decls.enter(mval) } - ValDef(mval, New(TypeTree(mval.tpe), List(List()))) - } - */ - - // var m$: T = null; or, if class member: local var m$: T = _; - def mkModuleVarDef(accessor: Symbol) = { - val mvar = accessor.owner.newVariable(accessor.pos.focus, nme.moduleVarName(accessor.name)) - .setInfo(accessor.tpe.finalResultType) - .setFlag(MODULEVAR); - if (mvar.owner.isClass) { - mvar setFlag (PRIVATE | LOCAL | SYNTHETIC) - mvar.owner.info.decls.enter(mvar) - } - ValDef(mvar, if (mvar.owner.isClass) EmptyTree else Literal(Constant(null))) + ValDef(mval, EmptyTree) } // def m: T = { if (m$ eq null) m$ = new m$class(...) m$ } @@ -295,7 +282,7 @@ abstract class TreeGen { def mkModuleAccessDef(accessor: Symbol, tpe: Type) = DefDef(accessor, newModule(accessor, tpe)) - private def newModule(accessor: Symbol, tpe: Type) = + def newModule(accessor: Symbol, tpe: Type) = New(TypeTree(tpe), List(for (pt <- tpe.typeSymbol.primaryConstructor.info.paramTypes) yield This(accessor.owner.enclClass))) |