summaryrefslogtreecommitdiff
path: root/test/files/run/t5040.check
diff options
context:
space:
mode:
authorJames Iry <jamesiry@gmail.com>2013-01-18 16:24:41 -0800
committerJames Iry <jamesiry@gmail.com>2013-01-25 12:53:39 -0800
commit0b52a5199ba8b949bd80de1eaf589420ef91d6f6 (patch)
tree1b73dec3b1804df969f19a63ff8af744135995a6 /test/files/run/t5040.check
parent2fa859e1b3eb2ac57058feaba87d96adfbac9209 (diff)
downloadscala-0b52a5199ba8b949bd80de1eaf589420ef91d6f6.tar.gz
scala-0b52a5199ba8b949bd80de1eaf589420ef91d6f6.tar.bz2
scala-0b52a5199ba8b949bd80de1eaf589420ef91d6f6.zip
SI-6863 Fix verify error in captured var inited from expr with try/catch
If a captured var was inited from a try/catch we did something reasonable. But if the var was inited from a more complicated expression (if/else, a block, match/case, etc) that ended with a try/catch then we didn't and we were generating faulty byte code. This fix patches LambdaLift to add the missing cases. For known simple expressions, the translation is just new *Ref(expr). For try/catch, if/else, match/case, and blocks this recursively walks down the internal result expressions to translate them. E.g. if(cond) trueExpr else falseExpr becomes if(cone) translate(trueExpr) else translate(falseExpr) For unknown expression types, the translation is {val temp = expr; new *Ref(expr) }
Diffstat (limited to 'test/files/run/t5040.check')
0 files changed, 0 insertions, 0 deletions