@@ -29,7 +29,7 @@ class PropagatePositions: | |||||
if isinstance(res, Tree): | if isinstance(res, Tree): | ||||
for c in children: | for c in children: | ||||
if isinstance(c, Tree) and c.children and not c.meta.empty: | |||||
if isinstance(c, Tree) and not c.meta.empty: | |||||
res.meta.line = c.meta.line | res.meta.line = c.meta.line | ||||
res.meta.column = c.meta.column | res.meta.column = c.meta.column | ||||
res.meta.start_pos = c.meta.start_pos | res.meta.start_pos = c.meta.start_pos | ||||
@@ -43,7 +43,7 @@ class PropagatePositions: | |||||
break | break | ||||
for c in reversed(children): | for c in reversed(children): | ||||
if isinstance(c, Tree) and c.children and not c.meta.empty: | |||||
if isinstance(c, Tree) and not c.meta.empty: | |||||
res.meta.end_line = c.meta.end_line | res.meta.end_line = c.meta.end_line | ||||
res.meta.end_column = c.meta.end_column | res.meta.end_column = c.meta.end_column | ||||
res.meta.end_pos = c.meta.end_pos | res.meta.end_pos = c.meta.end_pos | ||||
@@ -10,7 +10,7 @@ from .test_reconstructor import TestReconstructor | |||||
try: | try: | ||||
from .test_nearley.test_nearley import TestNearley | from .test_nearley.test_nearley import TestNearley | ||||
except ImportError: | except ImportError: | ||||
logging.warn("Warning: Skipping tests for Nearley (js2py required)") | |||||
logging.warning("Warning: Skipping tests for Nearley grammar imports (js2py required)") | |||||
# from .test_selectors import TestSelectors | # from .test_selectors import TestSelectors | ||||
# from .test_grammars import TestPythonG, TestConfigG | # from .test_grammars import TestPythonG, TestConfigG | ||||
@@ -63,6 +63,14 @@ class TestParsers(unittest.TestCase): | |||||
r = g.parse('a') | r = g.parse('a') | ||||
self.assertEqual( r.children[0].meta.line, 1 ) | self.assertEqual( r.children[0].meta.line, 1 ) | ||||
g = Lark("""start: x | |||||
x: a | |||||
a: "a" | |||||
""", propagate_positions=True) | |||||
r = g.parse('a') | |||||
self.assertEqual( r.children[0].meta.line, 1 ) | |||||
def test_expand1(self): | def test_expand1(self): | ||||
g = Lark("""start: a | g = Lark("""start: a | ||||