diff options
author | Paul Phillips <paulp@improving.org> | 2013-05-02 15:05:50 -0700 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2013-05-02 15:35:03 -0700 |
commit | 62cdd7ff9033eaa048fbdb72c58e7b9ac18461cd (patch) | |
tree | 269b167d0cf5e9f755a2f12cab5b452f0439ca76 /src/compiler | |
parent | 98972c95ab1e7c0ea2af9c9a958c0de60eb26b3d (diff) | |
download | scala-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')
-rw-r--r-- | src/compiler/scala/tools/nsc/typechecker/RefChecks.scala | 8 |
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 |