summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/ast/TreeGen.scala
diff options
context:
space:
mode:
authorHubert Plociniczak <hubert.plociniczak@epfl.ch>2010-10-01 17:10:27 +0000
committerHubert Plociniczak <hubert.plociniczak@epfl.ch>2010-10-01 17:10:27 +0000
commit256aca612204f1316e5281af6d10a14300d58ad1 (patch)
tree207ec6cdb99b473b9a21811d4d903ed75a289ed7 /src/compiler/scala/tools/nsc/ast/TreeGen.scala
parent1148daec9c6aeba69d5d37fde877ab20b310db5b (diff)
downloadscala-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.scala27
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)))