1
0
forked from VimPlug/jedi

Make sure that del_stmt as a name can be handled, see #313

This commit is contained in:
Dave Halter
2020-01-23 23:58:45 +01:00
parent 290e2151df
commit 11b61596e0
4 changed files with 32 additions and 3 deletions

View File

@@ -64,6 +64,11 @@ def filter_names(inference_state, completion_names, stack, like_name, fuzzy, cac
k = (new.name, new.complete) # key
if k not in comp_dct:
comp_dct.add(k)
tree_name = name.tree_name
if tree_name is not None:
definition = tree_name.get_definition()
if definition is not None and definition.type == 'del_stmt':
continue
yield new

View File

@@ -20,7 +20,6 @@ from parso.python.tree import Name
from jedi import settings
from jedi.inference.arguments import TreeArguments
from jedi.inference import helpers
from jedi.inference.value import iterable
from jedi.inference.base_value import NO_VALUES
from jedi.parser_utils import is_scope
@@ -38,7 +37,17 @@ def filter_name(filters, name_or_str):
if names:
break
return list(names)
return list(_remove_del_stmt(names))
def _remove_del_stmt(names):
# Catch del statements and remove them from results.
for name in names:
if name.tree_name is not None:
definition = name.tree_name.get_definition()
if definition is not None and definition.type == 'del_stmt':
continue
yield name
def check_flow_information(value, flow, search_name, pos):

View File

@@ -725,7 +725,9 @@ def tree_name_to_values(inference_state, context, tree_name):
# the static analysis report.
exceptions = context.infer_node(tree_name.get_previous_sibling().get_previous_sibling())
types = exceptions.execute_with_values()
elif node.type == 'param':
elif typ == 'param':
types = NO_VALUES
elif typ == 'del_stmt':
types = NO_VALUES
else:
raise ValueError("Should not happen. type: %s" % typ)

View File

@@ -203,6 +203,19 @@ if r:
#? int()
r
# -----------------
# del
# -----------------
deleted_var = 3
del deleted_var
#? int()
deleted_var
#? ['deleted_var']
deleted_var
#! ['deleted_var = 3']
deleted_var
# -----------------
# within docstrs
# -----------------