diff options
author | Iulian Dragos <jaguarul@gmail.com> | 2011-01-04 14:52:45 +0000 |
---|---|---|
committer | Iulian Dragos <jaguarul@gmail.com> | 2011-01-04 14:52:45 +0000 |
commit | 5c5657c29922fa2ac9eec763176fc2eda5c7b436 (patch) | |
tree | 650f04105833a3f471ae9df894e9aef3008dd84e /src/compiler | |
parent | 55d1ee6d8b4061d2c65b8c5e88bd59b4be9c5b5d (diff) | |
download | scala-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.scala | 6 |
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 } } |