forked from VimPlug/jedi
use py__mro__ in a classes scope_names_generator
This commit is contained in:
@@ -114,7 +114,7 @@ class CompiledObject(Base):
|
|||||||
else:
|
else:
|
||||||
return type_names + self.instance_names()
|
return type_names + self.instance_names()
|
||||||
|
|
||||||
def scope_names_generator(self, position=None):
|
def scope_names_generator(self, position=None, add_class_vars=True):
|
||||||
yield self, self.get_defined_names()
|
yield self, self.get_defined_names()
|
||||||
|
|
||||||
@underscore_memoization
|
@underscore_memoization
|
||||||
|
|||||||
@@ -176,10 +176,9 @@ class Instance(use_metaclass(CachedMetaClass, Executed)):
|
|||||||
"""
|
"""
|
||||||
yield self, self.get_self_attributes()
|
yield self, self.get_self_attributes()
|
||||||
|
|
||||||
names = []
|
for scope, names in self.base.scope_names_generator(add_class_vars=False):
|
||||||
for var in self.base.instance_names():
|
yield self, [get_instance_el(self._evaluator, self, var, True)
|
||||||
names.append(get_instance_el(self._evaluator, self, var, True))
|
for var in names]
|
||||||
yield self, names
|
|
||||||
|
|
||||||
def get_index_types(self, index_array):
|
def get_index_types(self, index_array):
|
||||||
|
|
||||||
@@ -331,8 +330,7 @@ class Class(use_metaclass(CachedMetaClass, pr.IsScope)):
|
|||||||
def py__call__(self, evaluator, params):
|
def py__call__(self, evaluator, params):
|
||||||
return [Instance(evaluator, self, params)]
|
return [Instance(evaluator, self, params)]
|
||||||
|
|
||||||
@memoize_default(default=())
|
def scope_names_generator(self, position=None, add_class_vars=True):
|
||||||
def instance_names(self):
|
|
||||||
def in_iterable(name, iterable):
|
def in_iterable(name, iterable):
|
||||||
""" checks if the name is in the variable 'iterable'. """
|
""" checks if the name is in the variable 'iterable'. """
|
||||||
for i in iterable:
|
for i in iterable:
|
||||||
@@ -342,19 +340,18 @@ class Class(use_metaclass(CachedMetaClass, pr.IsScope)):
|
|||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
|
|
||||||
result = self.base.get_defined_names()
|
all_names = []
|
||||||
super_result = []
|
for cls in self.py__mro__(self._evaluator):
|
||||||
# TODO mro!
|
names = []
|
||||||
for cls in self.py_bases():
|
if isinstance(cls, compiled.CompiledObject):
|
||||||
# Get the inherited names.
|
x = cls.instance_names()
|
||||||
for i in cls.instance_names():
|
else:
|
||||||
if not in_iterable(i, result):
|
x = reversed(cls.base.get_defined_names())
|
||||||
super_result.append(i)
|
for n in x:
|
||||||
result += super_result
|
if not in_iterable(n, all_names):
|
||||||
return result
|
names.append(n)
|
||||||
|
yield cls, names
|
||||||
def scope_names_generator(self, position=None):
|
if add_class_vars:
|
||||||
yield self, self.instance_names()
|
|
||||||
yield self, compiled.type_names
|
yield self, compiled.type_names
|
||||||
|
|
||||||
def get_subscope_by_name(self, name):
|
def get_subscope_by_name(self, name):
|
||||||
|
|||||||
Reference in New Issue
Block a user