diff --git a/jedi/parsing.py b/jedi/parsing.py index f2775277..96df4a3f 100644 --- a/jedi/parsing.py +++ b/jedi/parsing.py @@ -1865,6 +1865,7 @@ class PyFuzzyParser(object): self.start_pos[0]) # returns elif tok in ['return', 'yield']: + s = self.start_pos self.freshscope = False # add returns to the scope func = self.scope.get_parent_until(Function) @@ -1876,6 +1877,8 @@ class PyFuzzyParser(object): stmt.parent = set_parent_scope try: func.returns.append(stmt) + # start_pos is the one of the return statement + stmt.start_pos = s except AttributeError: debug.warning('return in non-function') # globals diff --git a/jedi/refactoring.py b/jedi/refactoring.py index eb70be86..16e9b1dc 100644 --- a/jedi/refactoring.py +++ b/jedi/refactoring.py @@ -92,7 +92,6 @@ def extract(script, new_name): # TODO care for multiline extracts dct = {} if user_stmt: - indent = user_stmt.start_pos[0] pos = script.pos line_index = pos[0] - 1 import parsing @@ -141,6 +140,7 @@ def extract(script, new_name): text = '(%s)' % text # add new line before statement + indent = user_stmt.start_pos[1] new = "%s%s = %s" % (' ' * indent, new_name, text) new_lines.insert(line_index, new) dct[script.source_path] = script.source_path, old_lines, new_lines diff --git a/test/refactor/extract.py b/test/refactor/extract.py index e523e6e8..f4967ded 100644 --- a/test/refactor/extract.py +++ b/test/refactor/extract.py @@ -15,7 +15,7 @@ def test(): + 1) # +++ def test(): - x = ((30 + b, c) + 1 + x = ((30 + b, c) + 1) - return test(x + return test(1, x )