summaryrefslogtreecommitdiff
path: root/test/files/run/bug3516.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2010-06-01 17:44:33 +0000
committerPaul Phillips <paulp@improving.org>2010-06-01 17:44:33 +0000
commitf3d87c08f6bcdb864e6990194668ad6dc16826a9 (patch)
treee2ce1bae13f4e9a62b267884dcb7824329b46388 /test/files/run/bug3516.scala
parent8acca208ae541e44f306a50c210e2626f571332b (diff)
downloadscala-f3d87c08f6bcdb864e6990194668ad6dc16826a9.tar.gz
scala-f3d87c08f6bcdb864e6990194668ad6dc16826a9.tar.bz2
scala-f3d87c08f6bcdb864e6990194668ad6dc16826a9.zip
Make Iterator.toStream be properly lazy.
Diffstat (limited to 'test/files/run/bug3516.scala')
-rw-r--r--test/files/run/bug3516.scala13
1 files changed, 13 insertions, 0 deletions
diff --git a/test/files/run/bug3516.scala b/test/files/run/bug3516.scala
new file mode 100644
index 0000000000..aa302ce85a
--- /dev/null
+++ b/test/files/run/bug3516.scala
@@ -0,0 +1,13 @@
+object Test {
+ def mkIterator = (1 to 5).iterator map (x => { println(x) ; x })
+ def mkInfinite = Iterator continually { println(1) ; 1 }
+
+ def main(args: Array[String]): Unit = {
+ // Stream is strict in its head so we should see 1 from each of them.
+ val s1 = mkIterator.toStream
+ val s2 = mkInfinite.toStream
+ // back and forth without slipping into nontermination.
+ println((Stream from 1).toIterator.drop(10).toStream.drop(10).toIterator.next)
+ ()
+ }
+}