diff --git a/parso/python/diff.py b/parso/python/diff.py index 2815afd..53dc37b 100644 --- a/parso/python/diff.py +++ b/parso/python/diff.py @@ -140,7 +140,7 @@ def _is_flow_node(node): value = node.children[0].value except AttributeError: return False - return value in ('if', 'for', 'while', 'try') + return value in ('if', 'for', 'while', 'try', 'with') class _PositionUpdatingFinished(Exception): diff --git a/test/test_diff_parser.py b/test/test_diff_parser.py index 23bb229..24bedf8 100644 --- a/test/test_diff_parser.py +++ b/test/test_diff_parser.py @@ -886,7 +886,7 @@ Some'random text: yeah differ.parse(code1, parsers=1, copies=1) -def test_l(differ): +def test_many_nested_ifs(differ): code1 = dedent('''\ class C: def f(self): @@ -919,3 +919,28 @@ def test_l(differ): differ.initialize(code1) differ.parse(code2, parsers=2, copies=1, expect_error_leaves=True) differ.parse(code1, parsers=1, copies=1) + + +def test_with_and_funcdef_in_call(differ): + code1 = dedent('''\ + with x: + la = C( + a=1, + b=2, + c=3, + ) + ''') + + code2 = dedent('''\ + with x: + la = C( + a=1, + def y(self, args): + b=2, + c=3, + ) + ''') + + differ.initialize(code1) + differ.parse(code2, parsers=3, copies=0, expect_error_leaves=True) + differ.parse(code1, parsers=1, copies=0)