diff options
author | Jean-Remi Desjardins <jeanremi.desjardins@gmail.com> | 2012-11-22 00:59:43 -0500 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2012-12-28 16:56:06 -0800 |
commit | 24a033b2aa4174fe8e9c3c02372b6508ef404601 (patch) | |
tree | 11576d7d56057ad565af82a0896fb4a41d4d3e36 /test/files/run/streams.scala | |
parent | 1284c3c6f38cc419a0a39fd68b3d5cf81b36b1a5 (diff) | |
download | scala-24a033b2aa4174fe8e9c3c02372b6508ef404601.tar.gz scala-24a033b2aa4174fe8e9c3c02372b6508ef404601.tar.bz2 scala-24a033b2aa4174fe8e9c3c02372b6508ef404601.zip |
SI-6415, overly eager evaluation in Stream.
The lengthCompare method in LinearSeqOptimized was looking one
step further than it needed to in order to give the correct
result, which was creating some unwanted side effects related to
Streams.
Diffstat (limited to 'test/files/run/streams.scala')
-rw-r--r-- | test/files/run/streams.scala | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/test/files/run/streams.scala b/test/files/run/streams.scala index 51b4e5d76c..03b2622edd 100644 --- a/test/files/run/streams.scala +++ b/test/files/run/streams.scala @@ -2,6 +2,9 @@ object Test extends App { val s0: Stream[Int] = Stream.empty println(s0.take(1)) println(s0.takeWhile(_ > 0)) + println(s0.lengthCompare(-5) > 0) + println(s0.lengthCompare(0) == 0) + println(s0.lengthCompare(5) < 0) println val s1 = Stream.cons(1, Stream.empty) @@ -12,6 +15,10 @@ object Test extends App { println(s1.drop(2)) println(s1.drop(-1)) println(s1.dropWhile(_ > 0)) + println(s1.lengthCompare(-5) > 0) + println(s1.lengthCompare(0) > 0) + println(s1.lengthCompare(1) == 0) + println(s1.lengthCompare(5) < 0) println val s2 = s1.append(Stream.cons(2, Stream.empty)) @@ -20,6 +27,11 @@ object Test extends App { println(s2.drop(2)) println(s2.drop(-1)) println(s2.dropWhile(_ > 0)) + println(s2.lengthCompare(-5) > 0) + println(s2.lengthCompare(0) > 0) + println(s2.lengthCompare(1) > 0) + println(s2.lengthCompare(2) == 0) + println(s2.lengthCompare(5) < 0) println val s3 = Stream.range(1, 1000) //100000 (ticket #153: Stackoverflow) @@ -43,4 +55,12 @@ object Test extends App { println(Stream.from(1).take(size).foldLeft(0)(_ + _)) val arr = new Array[Int](size) Stream.from(1).take(size).copyToArray(arr, 0) + + println + + // ticket #6415 + lazy val x = { println("evaluated"); 1 } + val s4 = 0 #:: x #:: Stream.empty + + println(s4.isDefinedAt(0)) } |