1
0
forked from VimPlug/jedi

Fixed a very nasty bug in deep_ast_copy.

This commit is contained in:
Dave Halter
2014-12-02 04:19:22 +01:00
parent 235672efc1
commit 99febfe6c2
2 changed files with 9 additions and 6 deletions

View File

@@ -51,7 +51,7 @@ def deep_ast_copy(obj, new_elements_default=None):
# tree in there.
items = sorted(items, key=sort_stmt)
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.
new_obj = copy.copy(obj)

View File

@@ -92,6 +92,11 @@ class Instance(use_metaclass(CachedMetaClass, Executed)):
"""
def __init__(self, evaluator, base, var_args, is_generated=False):
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'] \
and compiled.builtin == base.get_parent_until():
# compare the module path with the builtin name.
@@ -105,10 +110,6 @@ class Instance(use_metaclass(CachedMetaClass, Executed)):
pass
else:
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
def py__call__(self):
@@ -622,6 +623,7 @@ class FunctionExecution(Executed):
@common.safe_property
@underscore_memoization
def names_dict(self):
self.children
d = {}
for key, values in self.base.names_dict.items():
d[key] = self._copy_list(values)
@@ -697,9 +699,10 @@ class FunctionExecution(Executed):
@common.safe_property
@memoize_default([])
def children(self):
children = self.base.children
if isinstance(self.base, InstanceElement):
children = self.base.var.children
else:
children = self.base.children
return self._copy_list(children)
@common.safe_property