1
0
forked from VimPlug/jedi

Removed the dynamic_arrays_for_instances setting, because it's a subset of dynamic_array_additions, which is more concise.

This commit is contained in:
Dave Halter
2014-12-08 16:36:37 +01:00
parent 936a3c9dfe
commit 4c3584ed3c
2 changed files with 21 additions and 24 deletions

View File

@@ -539,14 +539,12 @@ def _check_array_additions(evaluator, compare_array, module, is_list):
def check_array_instances(evaluator, instance): def check_array_instances(evaluator, instance):
"""Used for set() and list() instances.""" """Used for set() and list() instances."""
if not settings.dynamic_array_additions:
return instance.var_args
if not settings.dynamic_arrays_instances:
return instance.var_args return instance.var_args
ai = ArrayInstance(evaluator, instance) ai = ArrayInstance(evaluator, instance)
return [ai] from jedi.evaluate import param
return param.Arguments(evaluator, [AlreadyEvaluated([ai])])
class ArrayInstance(IterableWrapper): class ArrayInstance(IterableWrapper):
@@ -567,22 +565,27 @@ class ArrayInstance(IterableWrapper):
""" """
items = [] items = []
from jedi.evaluate.representation import Instance from jedi.evaluate.representation import Instance
for stmt in self.var_args: for key, nodes in self.var_args.unpack():
for typ in self._evaluator.eval_statement(stmt): for node in nodes:
if isinstance(typ, Instance) and len(typ.var_args): for typ in self._evaluator.eval_element(node):
array = typ.var_args[0] if isinstance(typ, Instance) and len(typ.var_args):
if isinstance(array, ArrayInstance): array = typ.var_args[0]
# Certain combinations can cause recursions, see tests. if isinstance(array, ArrayInstance):
if not self._evaluator.recursion_detector.push_stmt(self.var_args): # Certain combinations can cause recursions, see tests.
items += array.iter_content() if not self._evaluator.recursion_detector.push_stmt(self.var_args):
self._evaluator.recursion_detector.pop_stmt() items += array.iter_content()
items += get_iterator_types([typ]) self._evaluator.recursion_detector.pop_stmt()
items += get_iterator_types([typ])
# TODO remove?
"""
# TODO check if exclusion of tuple is a problem here. # TODO check if exclusion of tuple is a problem here.
if isinstance(self.var_args, tuple) or self.var_args.parent is None: if isinstance(self.var_args, tuple) or self.var_args.parent is None:
return [] # generated var_args should not be checked for arrays return [] # generated var_args should not be checked for arrays
"""
module = self.var_args.get_parent_until() module = self.var_args.argument_node.get_parent_until()
is_list = str(self.instance.name) == 'list' is_list = str(self.instance.name) == 'list'
items += _check_array_additions(self._evaluator, self.instance, module, is_list) items += _check_array_additions(self._evaluator, self.instance, module, is_list)
return items return items

View File

@@ -37,7 +37,6 @@ Parser
Dynamic stuff Dynamic stuff
~~~~~~~~~~~~~ ~~~~~~~~~~~~~
.. autodata:: dynamic_arrays_instances
.. autodata:: dynamic_array_additions .. autodata:: dynamic_array_additions
.. autodata:: dynamic_params .. autodata:: dynamic_params
.. autodata:: dynamic_params_for_other_modules .. autodata:: dynamic_params_for_other_modules
@@ -148,14 +147,9 @@ function is being reparsed.
# dynamic stuff # dynamic stuff
# ---------------- # ----------------
dynamic_arrays_instances = True
"""
Check for `append`, etc. on array instances like list()
"""
dynamic_array_additions = True dynamic_array_additions = True
""" """
check for `append`, etc. on arrays: [], {}, () check for `append`, etc. on arrays: [], {}, () as well as list/set calls.
""" """
dynamic_params = True dynamic_params = True