diff options
author | Paul Phillips <paulp@improving.org> | 2010-08-07 21:06:46 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2010-08-07 21:06:46 +0000 |
commit | 40aafbdf1a9a52c1236f07e06d48fb24b5fa2169 (patch) | |
tree | 8140580613811d40665606a28e6d198934984b2f /src | |
parent | ed3dddae4e8b55917217b202f54d5b918ce4030e (diff) | |
download | scala-40aafbdf1a9a52c1236f07e06d48fb24b5fa2169.tar.gz scala-40aafbdf1a9a52c1236f07e06d48fb24b5fa2169.tar.bz2 scala-40aafbdf1a9a52c1236f07e06d48fb24b5fa2169.zip |
Modified r22702 to avoid tarring overloads with...
Modified r22702 to avoid tarring overloads with the same brush. No
review.
Diffstat (limited to 'src')
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala b/src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala index 16c6203474..7662e0a670 100644 --- a/src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala +++ b/src/compiler/scala/tools/nsc/typechecker/SuperAccessors.scala @@ -25,7 +25,10 @@ abstract class SuperAccessors extends transform.Transform with transform.TypingT // inherits abstract value `global' and class `Phase' from Transform import global._ - import definitions.{ IntClass, UnitClass, ByNameParamClass, Any_asInstanceOf, Object_## } + import definitions.{ + IntClass, UnitClass, ByNameParamClass, Any_asInstanceOf, + Any_isInstanceOf, Object_isInstanceOf, Object_##, Object_==, Object_!= + } /** the following two members override abstract members in Transform */ val phaseName: String = "superaccessors" @@ -124,10 +127,13 @@ abstract class SuperAccessors extends transform.Transform with transform.TypingT // Disallow some super.XX calls targeting Any methods which would // otherwise lead to either a compiler crash or runtime failure. - private def isDisallowed(name: Name) = name match { - case nme.HASHHASH | nme.EQ | nme.NE | nme.isInstanceOf_ => true - case _ => false - } + private def isDisallowed(sym: Symbol) = ( + (sym == Any_isInstanceOf) || + (sym == Object_isInstanceOf) || + (sym == Object_==) || + (sym == Object_!=) || + (sym == Object_##) + ) override def transform(tree: Tree): Tree = { val sym = tree.symbol @@ -205,7 +211,7 @@ abstract class SuperAccessors extends transform.Transform with transform.TypingT unit.error(tree.pos, "super may be not be used on "+ (if (sym.hasFlag(ACCESSOR)) sym.accessed else sym)) } - else if (isDisallowed(name)) { + else if (isDisallowed(sym)) { unit.error(tree.pos, "super not allowed here: use this." + name.decode + " instead") } transformSuperSelect(tree) |