From 81c78662cb3b34041c97c169597d1f0552636298 Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Tue, 11 Dec 2007 20:26:42 +0000 Subject: fixed problem with Stream.flatMap, changed text... fixed problem with Stream.flatMap, changed text of error message for assume failure in Predef. --- src/library/scala/Predef.scala | 2 +- src/library/scala/Stream.scala | 13 +++---------- 2 files changed, 4 insertions(+), 11 deletions(-) (limited to 'src') diff --git a/src/library/scala/Predef.scala b/src/library/scala/Predef.scala index d099fbe8b0..2ecc8fa119 100644 --- a/src/library/scala/Predef.scala +++ b/src/library/scala/Predef.scala @@ -103,7 +103,7 @@ object Predef { def assume(assumption: Boolean, message: Any) { if (!assumption) - throw new IllegalArgumentException("assumption failed: " + message) + throw new IllegalArgumentException(message.toString) } // tupling ------------------------------------------------------------ diff --git a/src/library/scala/Stream.scala b/src/library/scala/Stream.scala index fb8f5e92bd..a771e1d217 100644 --- a/src/library/scala/Stream.scala +++ b/src/library/scala/Stream.scala @@ -431,16 +431,9 @@ trait Stream[+A] extends Seq.Projection[A] { * @return f(a0) ::: ... ::: f(an) if * this stream is [a0, ..., an]. */ - override def flatMap[B](f: A => Iterable[B]): Stream[B] = { - var acc: Stream[B] = Stream.empty - var these = this - while (!these.isEmpty) { - val those = f(these.head) - if (!those.isEmpty) acc = acc append those.toStream - these = these.tail - } - acc - } + override def flatMap[B](f: A => Iterable[B]): Stream[B] = + if (isEmpty) Stream.empty + else Stream.fromIterator(f(head).elements) append (tail flatMap f) override def toStream = this -- cgit v1.2.3