diff options
author | Martin Odersky <odersky@gmail.com> | 2009-10-16 15:38:40 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2009-10-16 15:38:40 +0000 |
commit | 136c1cce62ab8a35d7f0a515d7456fe4764611c3 (patch) | |
tree | 8dd0f923e82158ea72f5ccd997bd96dba8185c7c /src/compiler | |
parent | 8ce658f6653bc6fedb7c7f43f9e307fe55847297 (diff) | |
download | scala-136c1cce62ab8a35d7f0a515d7456fe4764611c3.tar.gz scala-136c1cce62ab8a35d7f0a515d7456fe4764611c3.tar.bz2 scala-136c1cce62ab8a35d7f0a515d7456fe4764611c3.zip |
moved Range and GenericRange to collection.immu...
moved Range and GenericRange to collection.immutable, with alias for
Range in scala package object; made Range strict. moved from filter to
withFilter in translation for for expressions.
Diffstat (limited to 'src/compiler')
-rw-r--r-- | src/compiler/scala/tools/nsc/ast/parser/TreeBuilder.scala | 2 | ||||
-rw-r--r-- | src/compiler/scala/tools/nsc/symtab/StdNames.scala | 1 | ||||
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/Typers.scala | 22 |
3 files changed, 23 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/ast/parser/TreeBuilder.scala b/src/compiler/scala/tools/nsc/ast/parser/TreeBuilder.scala index 41dabd92d5..0b917fa925 100644 --- a/src/compiler/scala/tools/nsc/ast/parser/TreeBuilder.scala +++ b/src/compiler/scala/tools/nsc/ast/parser/TreeBuilder.scala @@ -368,7 +368,7 @@ abstract class TreeBuilder { makeFor(mapName, flatMapName, rest, body)) case ValFrom(pos, pat, rhs) :: Filter(_, test) :: rest => makeFor(mapName, flatMapName, - ValFrom(pos, pat, makeCombination(rhs.pos union test.pos, nme.filter, rhs, pat.duplicate, test)) :: rest, + ValFrom(pos, pat, makeCombination(rhs.pos union test.pos, nme.withFilter, rhs, pat.duplicate, test)) :: rest, body) case ValFrom(pos, pat, rhs) :: rest => val valeqs = rest.take(definitions.MaxTupleArity - 1).takeWhile(_.isInstanceOf[ValEq]); diff --git a/src/compiler/scala/tools/nsc/symtab/StdNames.scala b/src/compiler/scala/tools/nsc/symtab/StdNames.scala index 19cce08224..f356279e25 100644 --- a/src/compiler/scala/tools/nsc/symtab/StdNames.scala +++ b/src/compiler/scala/tools/nsc/symtab/StdNames.scala @@ -344,6 +344,7 @@ trait StdNames { val value = newTermName("value") val view_ = newTermName("view") val wait_ = newTermName("wait") + val withFilter = newTermName("withFilter") val zip = newTermName("zip") val ZAND = encode("&&") diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala index 3d88493c86..d9cdb79ea4 100644 --- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala +++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala @@ -3709,7 +3709,27 @@ trait Typers { self: Analyzer => if (util.Statistics.enabled) selcnt += 1 var qual1 = checkDead(typedQualifier(qual, mode)) if (name.isTypeName) qual1 = checkStable(qual1) - val tree1 = typedSelect(qual1, name) + + val tree1 = // temporarily use `filter' and an alternative for `withFilter' + if (name == nme.withFilter) + silent(_ => typedSelect(qual1, name)) match { + case result1: Tree => + result1 + case ex1: TypeError => + silent(_ => typed1(Select(qual1, nme.filter) setPos tree.pos, mode, pt)) match { + case result2: Tree => + unit.deprecationWarning( + tree.pos, "`withFilter' method does not yet exist on "+qual1.tpe.widen+ + ", using `filter' method instead") + result2 + case ex2: TypeError => + reportTypeError(tree.pos, ex1) + setError(tree) + } + } + else + typedSelect(qual1, name) + if (qual1.symbol == RootPackage) treeCopy.Ident(tree1, name) else tree1 |