summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala
diff options
context:
space:
mode:
authorIulian Dragos <jaguarul@gmail.com>2007-07-03 15:55:20 +0000
committerIulian Dragos <jaguarul@gmail.com>2007-07-03 15:55:20 +0000
commit72597908f803fbf709bf8af8379ca10c7cfd7639 (patch)
tree201dc7851aa150f9854dafaf8a190bde52ce9d9a /src/compiler/scala/tools/nsc/typechecker/RefChecks.scala
parent5eb0d12474176dfa4c4ccca6e5f1221493c96387 (diff)
downloadscala-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.scala9
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 {