diff options
author | Paul Phillips <paulp@improving.org> | 2012-07-30 07:56:12 -0700 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2013-01-29 19:18:20 +0100 |
commit | d3f3394fbdfbc82111b9aff71f0e32e2ad578d98 (patch) | |
tree | e505fc7dfbf12329cbf30c62bdee0c53ba09d5e4 | |
parent | eff78b852e8b866badf9b9738f896c2a31c05474 (diff) | |
download | scala-d3f3394fbdfbc82111b9aff71f0e32e2ad578d98.tar.gz scala-d3f3394fbdfbc82111b9aff71f0e32e2ad578d98.tar.bz2 scala-d3f3394fbdfbc82111b9aff71f0e32e2ad578d98.zip |
[backport] Fix for SI-6154, VerifyError originating in uncurry.
Lhs still might be an Ident. Miguel did all the work,
I just wrote it down in code form.
(cherry picked from commit 48f8235822a2a100d6c4e8d3d7349df565ac6d40)
-rw-r--r-- | src/compiler/scala/tools/nsc/transform/UnCurry.scala | 2 | ||||
-rw-r--r-- | test/files/run/t6154.check | 1 | ||||
-rw-r--r-- | test/files/run/t6154.scala | 10 |
3 files changed, 12 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/UnCurry.scala b/src/compiler/scala/tools/nsc/transform/UnCurry.scala index c07177ec10..f338e390bb 100644 --- a/src/compiler/scala/tools/nsc/transform/UnCurry.scala +++ b/src/compiler/scala/tools/nsc/transform/UnCurry.scala @@ -627,7 +627,7 @@ abstract class UnCurry extends InfoTransform } } - case Assign(Select(_, _), _) => + case Assign(_: RefTree, _) => withNeedLift(true) { super.transform(tree) } case Assign(lhs, _) if lhs.symbol.owner != currentMethod || lhs.symbol.hasFlag(LAZY | ACCESSOR) => diff --git a/test/files/run/t6154.check b/test/files/run/t6154.check new file mode 100644 index 0000000000..9766475a41 --- /dev/null +++ b/test/files/run/t6154.check @@ -0,0 +1 @@ +ok diff --git a/test/files/run/t6154.scala b/test/files/run/t6154.scala new file mode 100644 index 0000000000..02ef62905f --- /dev/null +++ b/test/files/run/t6154.scala @@ -0,0 +1,10 @@ +object Test { + def foo(a: Int) { + var bar: Int = 0 + bar = try { 0 } catch { case ex: Throwable => 0 } + new { foo(bar) } + } + + def main(args: Array[String]): Unit = + try foo(0) catch { case _: java.lang.StackOverflowError => println("ok") } +} |