diff mercurial/commands.py @ 45430:e47385ef4e17

grep: fix hash(linestate) to not include linenum linestate.__eq__() just compares the line values whereas __hash__() does hash both self.line and self.linenum, which violates the rule. __hash__() was added at fb502719c75c, "python 2.6 compatibility: add __hash__ to classes that have __eq__" with no additional remarks, so this would probably be a simple mistake. The test output changed because difflib.SequenceMatcher() internally uses a dict. As you can see, the line "export" is unchanged at the revision 2, so the new output is correct.
author Yuya Nishihara <yuya@tcha.org>
date Wed, 09 Sep 2020 11:41:18 +0900
parents 0652a533fe3c
children 453bc6ca9ab2
line wrap: on
line diff
--- a/mercurial/commands.py	Tue Sep 08 21:38:10 2020 +0900
+++ b/mercurial/commands.py	Wed Sep 09 11:41:18 2020 +0900
@@ -3400,7 +3400,7 @@
             self.colend = colend
 
         def __hash__(self):
-            return hash((self.linenum, self.line))
+            return hash(self.line)
 
         def __eq__(self, other):
             return self.line == other.line