forked from VimPlug/jedi
Remove the need for the check_first param in deep_ast_copy.
This commit is contained in:
@@ -4,7 +4,7 @@ from itertools import chain
|
|||||||
from jedi.parser import tree as pr
|
from jedi.parser import tree as pr
|
||||||
|
|
||||||
|
|
||||||
def deep_ast_copy(obj, new_elements_default=None, check_first=False):
|
def deep_ast_copy(obj, new_elements=None, check_first=False):
|
||||||
"""
|
"""
|
||||||
Much, much faster than copy.deepcopy, but just for Parser elements (Doesn't
|
Much, much faster than copy.deepcopy, but just for Parser elements (Doesn't
|
||||||
copy parents).
|
copy parents).
|
||||||
@@ -12,7 +12,8 @@ def deep_ast_copy(obj, new_elements_default=None, check_first=False):
|
|||||||
def sort_stmt(key_value):
|
def sort_stmt(key_value):
|
||||||
return key_value[0] not in ('_expression_list', '_assignment_details')
|
return key_value[0] not in ('_expression_list', '_assignment_details')
|
||||||
|
|
||||||
new_elements = new_elements_default or {}
|
if new_elements is None:
|
||||||
|
new_elements = {}
|
||||||
|
|
||||||
def recursion(obj, check_first=False):
|
def recursion(obj, check_first=False):
|
||||||
# If it's already in the cache, just return it.
|
# If it's already in the cache, just return it.
|
||||||
|
|||||||
@@ -569,10 +569,13 @@ class FunctionExecution(Executed):
|
|||||||
|
|
||||||
def __init__(self, evaluator, base, *args, **kwargs):
|
def __init__(self, evaluator, base, *args, **kwargs):
|
||||||
super(FunctionExecution, self).__init__(evaluator, base, *args, **kwargs)
|
super(FunctionExecution, self).__init__(evaluator, base, *args, **kwargs)
|
||||||
# for deep_ast_copy
|
self._copy_dict = {}
|
||||||
func = base.base_func
|
new_func = helpers.deep_ast_copy(base.base_func, self._copy_dict)
|
||||||
self._copy_dict = {func: self, func.parent: func.parent}
|
for child in new_func.children:
|
||||||
helpers.deep_ast_copy(self.base.base_func, self._copy_dict, check_first=True)
|
if isinstance(child, (pr.Name, pr.BaseNode)):
|
||||||
|
child.parent = self
|
||||||
|
self.children = new_func.children
|
||||||
|
self.names_dict = new_func.names_dict
|
||||||
|
|
||||||
@memoize_default(default=())
|
@memoize_default(default=())
|
||||||
@recursion.execution_recursion_decorator
|
@recursion.execution_recursion_decorator
|
||||||
@@ -610,9 +613,9 @@ class FunctionExecution(Executed):
|
|||||||
return types
|
return types
|
||||||
|
|
||||||
def names_dicts(self, search_global):
|
def names_dicts(self, search_global):
|
||||||
self.children
|
|
||||||
yield dict((k, [self._copy_dict[v] for v in values])
|
yield dict((k, [self._copy_dict[v] for v in values])
|
||||||
for k, values in self.base.names_dict.items())
|
for k, values in self.base.names_dict.items())
|
||||||
|
#yield self.names_dict # Replace with this!
|
||||||
|
|
||||||
@memoize_default(default=NO_DEFAULT)
|
@memoize_default(default=NO_DEFAULT)
|
||||||
def _get_params(self):
|
def _get_params(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user