From 552b6234dbbb4ff1e971e2c0f87ecd4090dd36a5 Mon Sep 17 00:00:00 2001 From: Jason Zaugg Date: Wed, 13 Mar 2013 23:30:05 +0100 Subject: SI-7249 Reign in overzealous Function0 optimization. The fix for SI-1247 went too far, and could result in premature evaluation of the expression that yields the Function0. This commit checks that said expression is safe to inline. If not, a wrapper `() => ....` is still required. The optimization is still enabled in sitations like the original test case, run/t1247.scala. --- test/files/run/t7249.scala | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 test/files/run/t7249.scala (limited to 'test/files/run/t7249.scala') diff --git a/test/files/run/t7249.scala b/test/files/run/t7249.scala new file mode 100644 index 0000000000..375df5c3ad --- /dev/null +++ b/test/files/run/t7249.scala @@ -0,0 +1,7 @@ +object Test extends App { + def bnToLambda(s: => String): () => String = () => s + var x: () => String = () => sys.error("Nope") + val y = bnToLambda { x() } + x = () => "Yup!" + println(y()) +} -- cgit v1.2.3