mirror of
https://github.com/davidhalter/parso.git
synced 2025-12-06 12:54:29 +08:00
Fix: Dedent omission was wrong, see davidhalter/jedi#1499
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
from textwrap import dedent
|
||||
|
||||
from parso import parse, load_grammar
|
||||
|
||||
|
||||
@@ -83,3 +85,46 @@ def test_invalid_token_in_fstr():
|
||||
assert error1.type == 'error_leaf'
|
||||
assert error2.value == '"'
|
||||
assert error2.type == 'error_leaf'
|
||||
|
||||
|
||||
def test_dedent_issues1():
|
||||
code = dedent('''\
|
||||
class C:
|
||||
@property
|
||||
f
|
||||
g
|
||||
end
|
||||
''')
|
||||
module = load_grammar(version='3.8').parse(code)
|
||||
klass, endmarker = module.children
|
||||
suite = klass.children[-1]
|
||||
assert suite.children[2].type == 'error_leaf'
|
||||
assert suite.children[3].get_code(include_prefix=False) == 'f\n'
|
||||
assert suite.children[5].get_code(include_prefix=False) == 'g\n'
|
||||
assert suite.type == 'suite'
|
||||
|
||||
|
||||
def test_dedent_issues2():
|
||||
code = dedent('''\
|
||||
class C:
|
||||
@property
|
||||
if 1:
|
||||
g
|
||||
else:
|
||||
h
|
||||
end
|
||||
''')
|
||||
module = load_grammar(version='3.8').parse(code)
|
||||
klass, endmarker = module.children
|
||||
suite = klass.children[-1]
|
||||
assert suite.children[2].type == 'error_leaf'
|
||||
if_ = suite.children[3]
|
||||
assert if_.children[0] == 'if'
|
||||
assert if_.children[3].type == 'suite'
|
||||
assert if_.children[3].get_code() == '\n g\n'
|
||||
assert if_.children[4] == 'else'
|
||||
assert if_.children[6].type == 'suite'
|
||||
assert if_.children[6].get_code() == '\n h\n'
|
||||
|
||||
assert suite.children[4].get_code(include_prefix=False) == 'end\n'
|
||||
assert suite.type == 'suite'
|
||||
|
||||
Reference in New Issue
Block a user