summaryrefslogtreecommitdiff
path: root/src/compiler
diff options
context:
space:
mode:
authorIulian Dragos <jaguarul@gmail.com>2011-01-04 14:52:45 +0000
committerIulian Dragos <jaguarul@gmail.com>2011-01-04 14:52:45 +0000
commit5c5657c29922fa2ac9eec763176fc2eda5c7b436 (patch)
tree650f04105833a3f471ae9df894e9aef3008dd84e /src/compiler
parent55d1ee6d8b4061d2c65b8c5e88bd59b4be9c5b5d (diff)
downloadscala-5c5657c29922fa2ac9eec763176fc2eda5c7b436.tar.gz
scala-5c5657c29922fa2ac9eec763176fc2eda5c7b436.tar.bz2
scala-5c5657c29922fa2ac9eec763176fc2eda5c7b436.zip
Closes #3869. no review.
Diffstat (limited to 'src/compiler')
-rw-r--r--src/compiler/scala/tools/nsc/backend/icode/GenICode.scala6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/backend/icode/GenICode.scala b/src/compiler/scala/tools/nsc/backend/icode/GenICode.scala
index 1157b1836d..7bfabc239f 100644
--- a/src/compiler/scala/tools/nsc/backend/icode/GenICode.scala
+++ b/src/compiler/scala/tools/nsc/backend/icode/GenICode.scala
@@ -691,10 +691,14 @@ abstract class GenICode extends SubComponent {
ctx1.bb.emit(STORE_LOCAL(tmp))
true
}
+
+ // duplicate finalizer (takes care of anchored labels)
+ val f1 = duplicateFinalizer(Set.empty ++ ctx1.labels.keySet, ctx1, f)
+
// we have to run this without the same finalizer in
// the list, otherwise infinite recursion happens for
// finalizers that contain 'return'
- ctx1 = genLoad(f, ctx1.removeFinalizer(f), UNIT)
+ ctx1 = genLoad(f1, ctx1.removeFinalizer(f), UNIT)
saved
}
}