diff options
author | Martin Odersky <odersky@gmail.com> | 2016-08-24 08:21:38 +0200 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2016-08-26 11:13:16 +0200 |
commit | fcea3d54dd016600f5a96cda5d03f2a5ee81e7f1 (patch) | |
tree | 271c60eb4ee439c89c3bc1eb86e86d270bd4203a /tests/pos/for-filter.scala | |
parent | 6d4469a627244eb0620a51764a3494f8250a8e2b (diff) | |
download | dotty-fcea3d54dd016600f5a96cda5d03f2a5ee81e7f1.tar.gz dotty-fcea3d54dd016600f5a96cda5d03f2a5ee81e7f1.tar.bz2 dotty-fcea3d54dd016600f5a96cda5d03f2a5ee81e7f1.zip |
Implement alternative desugaring of for-if to filter.
Fallback to .filter if a .withFilter is not available, but do this
only for .withFilter calls generated from for expressions (this is
different from what scalac does; the latter can also rewrite
.withFilter calls given in source, which is not desirable.
Diffstat (limited to 'tests/pos/for-filter.scala')
-rw-r--r-- | tests/pos/for-filter.scala | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/tests/pos/for-filter.scala b/tests/pos/for-filter.scala new file mode 100644 index 000000000..3baac4f0c --- /dev/null +++ b/tests/pos/for-filter.scala @@ -0,0 +1,12 @@ +object Test { + + case class C[T](xs: List[T]) { + def filter(p: T => Boolean) = new C(xs.filter(p)) + def map[U](f: T => U) = new C(xs.map(f)) + } + + def main(args: Array[String]): Unit = + println(for (x <- C(List(1, 2, 3)) if x % 2 == 0) yield x) + // println(C(List(1, 2, 3)).withFilter(_ % 2 == 0)) // error + +} |