forked from VimPlug/jedi
Fixed a very nasty bug in deep_ast_copy.
This commit is contained in:
@@ -51,7 +51,7 @@ def deep_ast_copy(obj, new_elements_default=None):
|
|||||||
# tree in there.
|
# tree in there.
|
||||||
items = sorted(items, key=sort_stmt)
|
items = sorted(items, key=sort_stmt)
|
||||||
else:
|
else:
|
||||||
items = sorted(items, key=lambda x: x[0] != 'params')
|
items = sorted(items, key=lambda x: (x[0] != 'params', x[0] == 'names_dict'))
|
||||||
|
|
||||||
# Actually copy and set attributes.
|
# Actually copy and set attributes.
|
||||||
new_obj = copy.copy(obj)
|
new_obj = copy.copy(obj)
|
||||||
|
|||||||
@@ -92,6 +92,11 @@ class Instance(use_metaclass(CachedMetaClass, Executed)):
|
|||||||
"""
|
"""
|
||||||
def __init__(self, evaluator, base, var_args, is_generated=False):
|
def __init__(self, evaluator, base, var_args, is_generated=False):
|
||||||
super(Instance, self).__init__(evaluator, base, var_args)
|
super(Instance, self).__init__(evaluator, base, var_args)
|
||||||
|
self.decorates = None
|
||||||
|
# Generated instances are classes that are just generated by self
|
||||||
|
# (No var_args) used.
|
||||||
|
self.is_generated = is_generated
|
||||||
|
|
||||||
if base.name.get_code() in ['list', 'set'] \
|
if base.name.get_code() in ['list', 'set'] \
|
||||||
and compiled.builtin == base.get_parent_until():
|
and compiled.builtin == base.get_parent_until():
|
||||||
# compare the module path with the builtin name.
|
# compare the module path with the builtin name.
|
||||||
@@ -105,10 +110,6 @@ class Instance(use_metaclass(CachedMetaClass, Executed)):
|
|||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
evaluator.execute(method, self.var_args)
|
evaluator.execute(method, self.var_args)
|
||||||
# Generated instances are classes that are just generated by self
|
|
||||||
# (No var_args) used.
|
|
||||||
self.is_generated = is_generated
|
|
||||||
self.decorates = None
|
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def py__call__(self):
|
def py__call__(self):
|
||||||
@@ -622,6 +623,7 @@ class FunctionExecution(Executed):
|
|||||||
@common.safe_property
|
@common.safe_property
|
||||||
@underscore_memoization
|
@underscore_memoization
|
||||||
def names_dict(self):
|
def names_dict(self):
|
||||||
|
self.children
|
||||||
d = {}
|
d = {}
|
||||||
for key, values in self.base.names_dict.items():
|
for key, values in self.base.names_dict.items():
|
||||||
d[key] = self._copy_list(values)
|
d[key] = self._copy_list(values)
|
||||||
@@ -697,9 +699,10 @@ class FunctionExecution(Executed):
|
|||||||
@common.safe_property
|
@common.safe_property
|
||||||
@memoize_default([])
|
@memoize_default([])
|
||||||
def children(self):
|
def children(self):
|
||||||
children = self.base.children
|
|
||||||
if isinstance(self.base, InstanceElement):
|
if isinstance(self.base, InstanceElement):
|
||||||
children = self.base.var.children
|
children = self.base.var.children
|
||||||
|
else:
|
||||||
|
children = self.base.children
|
||||||
return self._copy_list(children)
|
return self._copy_list(children)
|
||||||
|
|
||||||
@common.safe_property
|
@common.safe_property
|
||||||
|
|||||||
Reference in New Issue
Block a user