diff options
author | Iulian Dragos <jaguarul@gmail.com> | 2007-07-03 15:55:20 +0000 |
---|---|---|
committer | Iulian Dragos <jaguarul@gmail.com> | 2007-07-03 15:55:20 +0000 |
commit | 72597908f803fbf709bf8af8379ca10c7cfd7639 (patch) | |
tree | 201dc7851aa150f9854dafaf8a190bde52ce9d9a /src/compiler/scala/tools/nsc/typechecker/RefChecks.scala | |
parent | 5eb0d12474176dfa4c4ccca6e5f1221493c96387 (diff) | |
download | scala-72597908f803fbf709bf8af8379ca10c7cfd7639.tar.gz scala-72597908f803fbf709bf8af8379ca10c7cfd7639.tar.bz2 scala-72597908f803fbf709bf8af8379ca10c7cfd7639.zip |
Fixed lazy vals to allow for patterns.
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/RefChecks.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/RefChecks.scala | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala b/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala index 9880f88ff3..620c10cdc5 100644 --- a/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala +++ b/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala @@ -650,12 +650,13 @@ abstract class RefChecks extends InfoTransform { val vsym = tree.symbol val lazyDefSym = vsym.lazyAccessor assert(lazyDefSym != NoSymbol, vsym) + val ownerTransformer = new ChangeOwnerTraverser(vsym, lazyDefSym) val lazyDef = atPos(tree.pos)( - DefDef(lazyDefSym, vparamss => - if (tree.symbol.owner.isTrait) rhs // for traits, this is further tranformed in mixins + DefDef(lazyDefSym, vparamss => ownerTransformer( + if (tree.symbol.owner.isTrait) transform(rhs) // for traits, this is further tranformed in mixins else Block(List( - Assign(gen.mkAttributedRef(vsym), rhs)), - gen.mkAttributedRef(vsym)))) + Assign(gen.mkAttributedRef(vsym), transform(rhs))), + gen.mkAttributedRef(vsym))))) log("Made lazy def: " + lazyDef) typed(ValDef(vsym, EmptyTree)) :: typed(lazyDef) :: Nil } else { |