Skip to content

Commit

Permalink
Merge pull request #554 from edreamleo/ekr-getarguments
Browse files Browse the repository at this point in the history
PR for #553: Fix potential crasher in _getarguments
  • Loading branch information
lieryan committed Nov 28, 2022
2 parents a2ce7dd + 5c4bba5 commit 61c2b05
Show file tree
Hide file tree
Showing 2 changed files with 17 additions and 1 deletion.
2 changes: 1 addition & 1 deletion rope/refactor/extract.py
Expand Up @@ -949,7 +949,7 @@ def _handle_loop_context(self, node):
def _get_argnames(arguments):
result = [node.arg for node in arguments.args if isinstance(node, ast.arg)]
if arguments.vararg:
result.append(vararg.arg)
result.append(arguments.vararg.arg)
if arguments.kwarg:
result.append(arguments.kwarg.arg)
return result
Expand Down
16 changes: 16 additions & 0 deletions ropetest/refactor/extracttest.py
Expand Up @@ -271,6 +271,22 @@ def new_func(self, a_var):
""")
self.assertEqual(expected, refactored)

def test_extract_method_args_and_kwargs(self):
code = dedent("""\
def a_func(a, *args, **kwargs):
print(a, args, kwargs)
""")
start, end = self._convert_line_range_to_offset(code, 2, 2)
refactored = self.do_extract_method(code, start, end, "new_func")
expected = dedent("""\
def a_func(a, *args, **kwargs):
new_func(a, args, kwargs)
def new_func(a, args, kwargs):
print(a, args, kwargs)
""")
self.assertEqual(expected, refactored)

def test_extract_method_with_self_as_argument(self):
code = dedent("""\
class AClass(object):
Expand Down

0 comments on commit 61c2b05

Please sign in to comment.