forked from VimPlug/jedi
also moved scan_statement away from dynamic
This commit is contained in:
@@ -31,7 +31,6 @@ from jedi.evaluate import Evaluator, filter_private_variable
|
|||||||
from jedi.evaluate import representation as er
|
from jedi.evaluate import representation as er
|
||||||
from jedi.evaluate import builtin
|
from jedi.evaluate import builtin
|
||||||
from jedi.evaluate import imports
|
from jedi.evaluate import imports
|
||||||
from jedi.evaluate import dynamic
|
|
||||||
from jedi.evaluate import helpers
|
from jedi.evaluate import helpers
|
||||||
|
|
||||||
|
|
||||||
@@ -767,8 +766,8 @@ def usages(evaluator, definitions, search_name, mods):
|
|||||||
if set(f) & set(definitions):
|
if set(f) & set(definitions):
|
||||||
names.append(api_classes.Usage(evaluator, name_part, stmt))
|
names.append(api_classes.Usage(evaluator, name_part, stmt))
|
||||||
else:
|
else:
|
||||||
for call in dynamic._scan_statement(stmt, search_name,
|
for call in helpers.scan_statement(stmt, search_name,
|
||||||
assignment_details=True):
|
assignment_details=True):
|
||||||
names += check_call(call)
|
names += check_call(call)
|
||||||
return names
|
return names
|
||||||
|
|
||||||
|
|||||||
@@ -103,7 +103,7 @@ def search_params(evaluator, param):
|
|||||||
for stmt in possible_stmts:
|
for stmt in possible_stmts:
|
||||||
if isinstance(stmt, pr.Import):
|
if isinstance(stmt, pr.Import):
|
||||||
continue
|
continue
|
||||||
calls = _scan_statement(stmt, func_name)
|
calls = helpers.scan_statement(stmt, func_name)
|
||||||
for c in calls:
|
for c in calls:
|
||||||
# no execution means that params cannot be set
|
# no execution means that params cannot be set
|
||||||
call_path = list(c.generate_call_path())
|
call_path = list(c.generate_call_path())
|
||||||
@@ -182,39 +182,3 @@ def search_params(evaluator, param):
|
|||||||
func.listeners.remove(listener)
|
func.listeners.remove(listener)
|
||||||
|
|
||||||
return result
|
return result
|
||||||
|
|
||||||
|
|
||||||
def _scan_statement(stmt, search_name, assignment_details=False):
|
|
||||||
""" Returns the function Call that match search_name in an Array. """
|
|
||||||
def scan_array(arr, search_name):
|
|
||||||
result = []
|
|
||||||
if arr.type == pr.Array.DICT:
|
|
||||||
for key_stmt, value_stmt in arr.items():
|
|
||||||
result += _scan_statement(key_stmt, search_name)
|
|
||||||
result += _scan_statement(value_stmt, search_name)
|
|
||||||
else:
|
|
||||||
for stmt in arr:
|
|
||||||
result += _scan_statement(stmt, search_name)
|
|
||||||
return result
|
|
||||||
|
|
||||||
check = list(stmt.expression_list())
|
|
||||||
if assignment_details:
|
|
||||||
for expression_list, op in stmt.assignment_details:
|
|
||||||
check += expression_list
|
|
||||||
|
|
||||||
result = []
|
|
||||||
for c in check:
|
|
||||||
if isinstance(c, pr.Array):
|
|
||||||
result += scan_array(c, search_name)
|
|
||||||
elif isinstance(c, pr.Call):
|
|
||||||
s_new = c
|
|
||||||
while s_new is not None:
|
|
||||||
n = s_new.name
|
|
||||||
if isinstance(n, pr.Name) and search_name in n.names:
|
|
||||||
result.append(c)
|
|
||||||
|
|
||||||
if s_new.execution is not None:
|
|
||||||
result += scan_array(s_new.execution, search_name)
|
|
||||||
s_new = s_new.next
|
|
||||||
|
|
||||||
return result
|
|
||||||
|
|||||||
@@ -168,3 +168,39 @@ def search_call_signatures(stmt, pos):
|
|||||||
arr.parent.execution = None
|
arr.parent.execution = None
|
||||||
return call if isinstance(call, pr.Call) else None, index, False
|
return call if isinstance(call, pr.Call) else None, index, False
|
||||||
return None, 0, False
|
return None, 0, False
|
||||||
|
|
||||||
|
|
||||||
|
def scan_statement(stmt, search_name, assignment_details=False):
|
||||||
|
""" Returns the function Call that match search_name in an Array. """
|
||||||
|
def scan_array(arr, search_name):
|
||||||
|
result = []
|
||||||
|
if arr.type == pr.Array.DICT:
|
||||||
|
for key_stmt, value_stmt in arr.items():
|
||||||
|
result += scan_statement(key_stmt, search_name)
|
||||||
|
result += scan_statement(value_stmt, search_name)
|
||||||
|
else:
|
||||||
|
for stmt in arr:
|
||||||
|
result += scan_statement(stmt, search_name)
|
||||||
|
return result
|
||||||
|
|
||||||
|
check = list(stmt.expression_list())
|
||||||
|
if assignment_details:
|
||||||
|
for expression_list, op in stmt.assignment_details:
|
||||||
|
check += expression_list
|
||||||
|
|
||||||
|
result = []
|
||||||
|
for c in check:
|
||||||
|
if isinstance(c, pr.Array):
|
||||||
|
result += scan_array(c, search_name)
|
||||||
|
elif isinstance(c, pr.Call):
|
||||||
|
s_new = c
|
||||||
|
while s_new is not None:
|
||||||
|
n = s_new.name
|
||||||
|
if isinstance(n, pr.Name) and search_name in n.names:
|
||||||
|
result.append(c)
|
||||||
|
|
||||||
|
if s_new.execution is not None:
|
||||||
|
result += scan_array(s_new.execution, search_name)
|
||||||
|
s_new = s_new.next
|
||||||
|
|
||||||
|
return result
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ from jedi import settings
|
|||||||
from jedi._compatibility import use_metaclass, is_py3k
|
from jedi._compatibility import use_metaclass, is_py3k
|
||||||
from jedi.parser import representation as pr
|
from jedi.parser import representation as pr
|
||||||
from jedi.evaluate import builtin
|
from jedi.evaluate import builtin
|
||||||
|
from jedi.evaluate import helpers
|
||||||
from jedi.evaluate.cache import CachedMetaClass, memoize_default
|
from jedi.evaluate.cache import CachedMetaClass, memoize_default
|
||||||
|
|
||||||
|
|
||||||
@@ -329,9 +330,7 @@ def _check_array_additions(evaluator, compare_array, module, is_list):
|
|||||||
# check recursion
|
# check recursion
|
||||||
continue
|
continue
|
||||||
|
|
||||||
# TODO should be deleted in the future
|
res += check_calls(helpers.scan_statement(stmt, n), n)
|
||||||
from jedi.evaluate import dynamic
|
|
||||||
res += check_calls(dynamic._scan_statement(stmt, n), n)
|
|
||||||
evaluator.recursion_detector.pop_stmt()
|
evaluator.recursion_detector.pop_stmt()
|
||||||
# reset settings
|
# reset settings
|
||||||
settings.dynamic_params_for_other_modules = temp_param_add
|
settings.dynamic_params_for_other_modules = temp_param_add
|
||||||
|
|||||||
Reference in New Issue
Block a user