python-rope / rope

a python refactoring library
GNU Lesser General Public License v3.0
1.96k stars 164 forks source link

MismatchedTokenError when empty tuple has commented out line #789

Open apmorton opened 6 months ago

apmorton commented 6 months ago

Given code like:

a = (
    # foo,
)

get_patched_ast will incorrectly scan past the empty tuple and cause MismatchedTokenError.

The following test case will blow up in _consume_pattern because it does not match the pattern

    def test_empty_tuple_node4(self):
        source = "a = (\n# foo,\n)"
        ast_frag = patchedast.get_patched_ast(source, True)
        checker = _ResultChecker(self, ast_frag)
        checker.check_children("Tuple", ["()"])