1
0
forked from VimPlug/jedi

Fix another special extract case

This commit is contained in:
Dave Halter
2020-02-20 01:29:04 +01:00
parent 26bf2ceb15
commit 3f86d803d2
2 changed files with 21 additions and 12 deletions

View File

@@ -250,14 +250,20 @@ def extract_variable(grammar, path, module_node, new_name, pos, until_pos):
first_definition_leaf = definition.get_first_leaf() first_definition_leaf = definition.get_first_leaf()
dct = {} dct = {}
for i, node in enumerate(nodes): extracted_prefix = _insert_line_before(
dct[node] = node.get_first_leaf().prefix, new_name if i == 0 else '' first_definition_leaf.prefix,
dct[first_definition_leaf] = _insert_line_before(
*dct.get(first_definition_leaf,
(first_definition_leaf.prefix, first_definition_leaf.value)),
new_name + ' = ' + extracted, new_name + ' = ' + extracted,
) )
file_to_node_changes = {path: _flatten_changes(dct)} first_node_leaf = nodes[0].get_first_leaf()
if first_node_leaf is first_definition_leaf:
dct[nodes[0]] = extracted_prefix + new_name
else:
dct[nodes[0]] = first_node_leaf.prefix + new_name
dct[first_definition_leaf] = extracted_prefix + first_definition_leaf.value
for node in nodes[1:]:
dct[node] = ''
file_to_node_changes = {path: dct}
return Refactoring(grammar, file_to_node_changes) return Refactoring(grammar, file_to_node_changes)
@@ -268,14 +274,10 @@ def _remove_indent_of_prefix(prefix):
return ''.join(split_lines(prefix, keepends=True)[:-1]) return ''.join(split_lines(prefix, keepends=True)[:-1])
def _insert_line_before(prefix, value, code): def _insert_line_before(prefix, code):
lines = split_lines(prefix, keepends=True) lines = split_lines(prefix, keepends=True)
lines[-1:-1] = [indent_block(code, lines[-1]) + '\n'] lines[-1:-1] = [indent_block(code, lines[-1]) + '\n']
return ''.join(lines), value return ''.join(lines)
def _flatten_changes(changes):
return {node: prefix + string for node, (prefix, string) in changes.items()}
def _get_parent_definition(node): def _get_parent_definition(node):

View File

@@ -112,3 +112,10 @@ if 1:
#? 4 text {'new_name': 'x'} #? 4 text {'new_name': 'x'}
x = None x = None
x x
# -------------------------------------------------- with-tuple
#? 4 text {'new_name': 'x'}
x + 1, 3
# ++++++++++++++++++++++++++++++++++++++++++++++++++
#? 4 text {'new_name': 'x'}
x = x + 1
x, 3