summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2013-05-02 15:05:50 -0700
committerPaul Phillips <paulp@improving.org>2013-05-02 15:35:03 -0700
commit62cdd7ff9033eaa048fbdb72c58e7b9ac18461cd (patch)
tree269b167d0cf5e9f755a2f12cab5b452f0439ca76 /src/compiler/scala/tools/nsc/typechecker/RefChecks.scala
parent98972c95ab1e7c0ea2af9c9a958c0de60eb26b3d (diff)
downloadscala-62cdd7ff9033eaa048fbdb72c58e7b9ac18461cd.tar.gz
scala-62cdd7ff9033eaa048fbdb72c58e7b9ac18461cd.tar.bz2
scala-62cdd7ff9033eaa048fbdb72c58e7b9ac18461cd.zip
SI-6091 overeager warning for reference equality
Don't warn on eq and ne unless they're the real eq or ne.
Diffstat (limited to 'src/compiler/scala/tools/nsc/typechecker/RefChecks.scala')
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/RefChecks.scala8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala b/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala
index 4933b8e0cb..94d92af228 100644
--- a/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/RefChecks.scala
@@ -1063,9 +1063,13 @@ abstract class RefChecks extends InfoTransform with scala.reflect.internal.trans
case _ =>
}
+ private def isObjectOrAnyComparisonMethod(sym: Symbol) = sym match {
+ case Object_eq | Object_ne | Object_== | Object_!= | Any_== | Any_!= => true
+ case _ => false
+ }
def checkSensible(pos: Position, fn: Tree, args: List[Tree]) = fn match {
- case Select(qual, name @ (nme.EQ | nme.NE | nme.eq | nme.ne)) if args.length == 1 =>
- def isReferenceOp = name == nme.eq || name == nme.ne
+ case Select(qual, name @ (nme.EQ | nme.NE | nme.eq | nme.ne)) if args.length == 1 && isObjectOrAnyComparisonMethod(fn.symbol) =>
+ def isReferenceOp = fn.symbol == Object_eq || fn.symbol == Object_ne
def isNew(tree: Tree) = tree match {
case Function(_, _)
| Apply(Select(New(_), nme.CONSTRUCTOR), _) => true