From b9ac439608eac6fd31082b14bac90064b42521dc Mon Sep 17 00:00:00 2001 From: Tiark Rompf Date: Sun, 19 Feb 2012 23:52:57 +0100 Subject: fixes SI-5506. better cps type propagation for polymorphic and multi-argument list methods. --- test/files/continuations-run/t5506.check | 7 ++++ test/files/continuations-run/t5506.scala | 58 ++++++++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 test/files/continuations-run/t5506.check create mode 100644 test/files/continuations-run/t5506.scala (limited to 'test/files/continuations-run') diff --git a/test/files/continuations-run/t5506.check b/test/files/continuations-run/t5506.check new file mode 100644 index 0000000000..38b76c63f1 --- /dev/null +++ b/test/files/continuations-run/t5506.check @@ -0,0 +1,7 @@ +List(1, 2, 3) +List(1, 2, 3) +List(1, 2, 3) +List(1, 2, 3) +List(1, 2, 3) +List(1, 2, 3) +List(1, 2, 3) diff --git a/test/files/continuations-run/t5506.scala b/test/files/continuations-run/t5506.scala new file mode 100644 index 0000000000..2b5c1118f7 --- /dev/null +++ b/test/files/continuations-run/t5506.scala @@ -0,0 +1,58 @@ +import scala.util.continuations._ + +object Test { + +def g: List[Int] @suspendable = List(1,2,3) + +def fp10: List[Int] @suspendable = { +g.map(x => x) +} + +def fp11: List[Int] @suspendable = { +val z = g.map(x => x) +z +} + + +def fp12: List[Int] @suspendable = { +val z = List(1,2,3) +z.map(x => x) +} + + + +def fp20: List[Int] @suspendable = { +g.map[Int,List[Int]](x => x) +} + + +def fp21: List[Int] @suspendable = { +val z = g.map[Int,List[Int]](x => x) +z +} + +def fp22: List[Int] @suspendable = { +val z = g.map[Int,List[Int]](x => x)(List.canBuildFrom[Int]) +z +} + +def fp23: List[Int] @suspendable = { +val z = g.map(x => x)(List.canBuildFrom[Int]) +z +} + + +def main(args: Array[String]) = { + reset { + println(fp10) + println(fp11) + println(fp12) + + println(fp20) + println(fp21) + println(fp22) + println(fp23) + } +} + +} -- cgit v1.2.3