diff options
Diffstat (limited to 'tests/run/pure-args-byname-noinline.scala')
-rw-r--r-- | tests/run/pure-args-byname-noinline.scala | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/run/pure-args-byname-noinline.scala b/tests/run/pure-args-byname-noinline.scala new file mode 100644 index 000000000..3ed4c480b --- /dev/null +++ b/tests/run/pure-args-byname-noinline.scala @@ -0,0 +1,33 @@ +object Test { + //Were affected by SI-6306 + def f[A](a: =>A) = println(a.toString) + def f1[A <: AnyVal](a: =>A) = println(a.toString) + def f1a[A <: AnyVal](a: =>A) = println(a.##) + def f2[A <: AnyRef](a: =>A) = println(a.toString) + def f2a[A <: String](a: =>A) = println(a.toString) + //Works + def f3[A](a: =>Seq[A]) = println(a.toString) + + def foo() = println(2) + def client(f: () => Unit) = {f(); f()} + def attempt2(): Unit = { + val bar: () => Unit = foo _ + //The code causing SI-6306 was supposed to optimize code like this: + client(() => bar ()) + //to: + client(bar) + } + def main(args: Array[String]): Unit = { + attempt2() + f3(Seq(1)) + f3(Seq()) + f("") + f((1).toString) + f((1).##) + f1((1).##) + f2((1).toString) + f2a((1).toString) + } +} + +// vim: set ts=8 sw=2 et: |