mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-16 10:37:52 +08:00
precedence tests and a parse_tree method for Precedence objects
This commit is contained in:
@@ -1,26 +1,26 @@
|
||||
import pytest
|
||||
|
||||
from jedi.parser import Parser
|
||||
from jedi.evaluate import precedence
|
||||
cp = lambda *args: precedence.create_precedence(iter(args))
|
||||
|
||||
|
||||
@pytest.skip('sorry precedence stuff is still not implemented yet')
|
||||
def parse_tree(statement_string):
|
||||
p = Parser(statement_string, no_docstr=True)
|
||||
stmt = p.module.statements[0]
|
||||
iterable = iter(stmt.expression_list())
|
||||
pr = precedence.create_precedence(iterable)
|
||||
if isinstance(pr, precedence.Precedence):
|
||||
return pr.parse_tree(strip_literals=True)
|
||||
else:
|
||||
return pr
|
||||
|
||||
|
||||
def test_simple():
|
||||
p = cp(1, '+', 2)
|
||||
assert p.left == 1
|
||||
assert p.operator == '+'
|
||||
assert p.right == 2
|
||||
|
||||
p = cp('+', 2)
|
||||
assert p.left is None
|
||||
assert p.operator == '+'
|
||||
assert p.right == 2
|
||||
assert parse_tree('1+2') == (1, '+', 2)
|
||||
assert parse_tree('+2') == (None, '+', 2)
|
||||
|
||||
|
||||
@pytest.skip('sorry precedence stuff is still not implemented yet')
|
||||
def test_invalid():
|
||||
"""Should just return a simple operation."""
|
||||
assert cp(1, '+') == 1
|
||||
assert cp('+') is None
|
||||
assert parse_tree('1 +') == 1
|
||||
assert parse_tree('+') is None
|
||||
|
||||
assert cp('*', 1) == 1
|
||||
assert parse_tree('* 1') == 1
|
||||
|
||||
Reference in New Issue
Block a user