summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2011-06-12 02:25:07 +0000
committerPaul Phillips <paulp@improving.org>2011-06-12 02:25:07 +0000
commitb96094446302a59b850dbb7d4ad9c593e9dddd9b (patch)
treef7472ea8b75092a442b02aaf177ae6012b51b10a
parent83c0929417261c900100b57c19d5172f4d5bf665 (diff)
downloadscala-b96094446302a59b850dbb7d4ad9c593e9dddd9b.tar.gz
scala-b96094446302a59b850dbb7d4ad9c593e9dddd9b.tar.bz2
scala-b96094446302a59b850dbb7d4ad9c593e9dddd9b.zip
Fix for wrong results from groupBy on views.
-rw-r--r--src/library/scala/collection/TraversableViewLike.scala2
-rw-r--r--test/files/run/bug4660.scala11
2 files changed, 12 insertions, 1 deletions
diff --git a/src/library/scala/collection/TraversableViewLike.scala b/src/library/scala/collection/TraversableViewLike.scala
index 23e967aea0..36fe6251df 100644
--- a/src/library/scala/collection/TraversableViewLike.scala
+++ b/src/library/scala/collection/TraversableViewLike.scala
@@ -169,7 +169,7 @@ trait TraversableViewLike[+A,
newForced(thisSeq.scanRight(z)(op)).asInstanceOf[That]
override def groupBy[K](f: A => K): immutable.Map[K, This] =
- thisSeq.groupBy(f).mapValues(xs => newForced(thisSeq))
+ thisSeq groupBy f mapValues (xs => newForced(xs))
override def toString = viewToString
}
diff --git a/test/files/run/bug4660.scala b/test/files/run/bug4660.scala
new file mode 100644
index 0000000000..e57bb4bf25
--- /dev/null
+++ b/test/files/run/bug4660.scala
@@ -0,0 +1,11 @@
+object Test {
+ def main(args: Array[String]): Unit = {
+ val traversable = 1 to 20 map (_.toString)
+ def normalize(m: Map[Char, Traversable[String]]) = m.map { case (k,v) => (k, v.toList) }
+
+ val groupedFromView = (traversable view).groupBy(_(0))
+ val groupedFromStrict = traversable.groupBy(_(0))
+
+ assert(normalize(groupedFromView) == normalize(groupedFromStrict))
+ }
+}