Skip to content

Commit 24f19a3

Browse files
authored
Merge pull request #1481 from weaversam8/bugfix/1476-symbol-eq
Fix `Symbol.__eq__` to return false when comparing with None
2 parents 24d0cf7 + 9d35d1b commit 24f19a3

File tree

2 files changed

+7
-3
lines changed

2 files changed

+7
-3
lines changed

lark/grammar.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ def __init__(self, name: str) -> None:
1616
self.name = name
1717

1818
def __eq__(self, other):
19-
assert isinstance(other, Symbol), other
19+
if not isinstance(other, Symbol):
20+
return NotImplemented
2021
return self.is_term == other.is_term and self.name == other.name
2122

2223
def __ne__(self, other):

tests/test_grammar.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
from lark import Lark, Token, Tree, ParseError, UnexpectedInput
77
from lark.load_grammar import GrammarError, GRAMMAR_ERRORS, find_grammar_errors, list_grammar_imports
88
from lark.load_grammar import FromPackageLoader
9-
9+
from lark.grammar import Symbol
1010

1111
class TestGrammar(TestCase):
1212
def setUp(self):
@@ -296,8 +296,11 @@ def test_line_breaks(self):
296296
p.parse('ab')
297297

298298

299+
def test_symbol_eq(self):
300+
a = None
301+
b = Symbol("abc")
299302

300-
303+
self.assertNotEqual(a, b)
301304

302305

303306
if __name__ == '__main__':

0 commit comments

Comments
 (0)