diff options
author | Martin Odersky <odersky@gmail.com> | 2006-08-18 17:09:14 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2006-08-18 17:09:14 +0000 |
commit | d283455a24148f43d33f69f4be1b627705d35ab6 (patch) | |
tree | 91d5b9c6025077a542c0e3517a00927d86c241bb /src/compiler/scala/tools/nsc/typechecker/RefChecks.scala | |
parent | d5aee9e7a1dde5fd3215f8ee6c8a811745535a16 (diff) | |
download | scala-d283455a24148f43d33f69f4be1b627705d35ab6.tar.gz scala-d283455a24148f43d33f69f4be1b627705d35ab6.tar.bz2 scala-d283455a24148f43d33f69f4be1b627705d35ab6.zip |
fixed bug 704
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/RefChecks.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/RefChecks.scala | 30 |
1 files changed, 3 insertions, 27 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala b/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala index c745290cc9..5a2d7f8b7b 100644 --- a/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala +++ b/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala @@ -46,30 +46,6 @@ abstract class RefChecks extends InfoTransform { } else tp } - // var m$: T = null; or, if class member: local var m$: T = _; - def newModuleVarDef(accessor: Symbol) = { - val mvar = accessor.owner.newVariable(accessor.pos, 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))) - } - - // def m: T = { if (m$ == null) m$ = new m$class; m$ } - def newModuleAccessDef(accessor: Symbol, mvar: Symbol) = - DefDef(accessor, vparamss => - gen.mkCached(mvar, - New(TypeTree(mvar.tpe), - List(for (val pt <- mvar.tpe.symbol.primaryConstructor.info.paramTypes) - yield This(accessor.owner.enclClass))))) - - // def m: T; - def newModuleAccessDcl(accessor: Symbol) = - DefDef(accessor setFlag lateDEFERRED, vparamss => EmptyTree); - class RefCheckTransformer(unit: CompilationUnit) extends Transformer { var localTyper: analyzer.Typer = typer; @@ -458,15 +434,15 @@ abstract class RefChecks extends InfoTransform { val vdef = localTyper.typed { atPos(tree.pos) { - newModuleVarDef(sym) + gen.mkModuleVarDef(sym) } } val ddef = atPhase(phase.next) { localTyper.typed { - if (sym.owner.isTrait) newModuleAccessDcl(sym) - else newModuleAccessDef(sym, vdef.symbol) + if (sym.owner.isTrait) gen.mkModuleAccessDcl(sym) + else gen.mkModuleAccessDef(sym, vdef.symbol) } } |