Permalink
Browse files

SI-6455 under -Xfuture, don't rewrite .withFilter to .filter

This has been deprecated for two major releases now,
but `filter`'s still preferred over `withFilter` in the wild.
  • Loading branch information...
1 parent 2ead4d6 commit 62560b16765bdfe74212446e8ccb50dbeb06d457 @adriaanm committed Feb 20, 2014
@@ -4714,7 +4714,7 @@ trait Typers extends Adaptations with Tags with TypersTracking with PatternTyper
UnstableTreeError(qualTyped)
)
val tree1 = name match {
- case nme.withFilter => tryWithFilterAndFilter(tree, qualStableOrError)
+ case nme.withFilter if !settings.future => tryWithFilterAndFilter(tree, qualStableOrError)
case _ => typedSelect(tree, qualStableOrError, name)
}
def sym = tree1.symbol
@@ -0,0 +1,4 @@
+t6455.scala:5: error: value withFilter is not a member of object O
+ O.withFilter(f => true)
+ ^
+one error found
@@ -0,0 +1 @@
+-Xfuture
@@ -0,0 +1,6 @@
+object O { def filter(p: Int => Boolean): O.type = this }
+
+class Test {
+ // should not compile because we no longer rewrite withFilter => filter under -Xfuture
+ O.withFilter(f => true)
+}
@@ -44,7 +44,7 @@ object TypecheckedProps extends QuasiquoteProperties("typechecked") {
val enums = fq"foo <- new Foo" :: fq"if foo != null" :: Nil
val body = q"foo"
val q"$_; for(..$enums1) yield $body1" = typecheck(q"""
- class Foo { def map(f: Any => Any) = this; def filter(cond: Any => Boolean) = this }
+ class Foo { def map(f: Any => Any) = this; def withFilter(cond: Any => Boolean) = this }
for(..$enums) yield $body
""")
assert(enums1 ≈ enums)

0 comments on commit 62560b1

Please sign in to comment.