diff --git a/jedi/evaluate/representation.py b/jedi/evaluate/representation.py index 9d13c901..ab58f3aa 100644 --- a/jedi/evaluate/representation.py +++ b/jedi/evaluate/representation.py @@ -242,6 +242,12 @@ class Instance(use_metaclass(CachedMetaClass, Executed)): def names_dicts(self, search_global): yield self._self_names_dict() + for s in self.base.py__mro__(self._evaluator)[1:]: + if not isinstance(s, compiled.CompiledObject): + # Compiled objects don't have `self.` names. + for inst in self._evaluator.execute(s): + yield inst._self_names_dict(add_mro=False) + for names_dict in self.base.names_dicts(search_global=False): yield LazyInstanceDict(self._evaluator, self, names_dict) diff --git a/jedi/parser/tree.py b/jedi/parser/tree.py index 8cc38583..8c3e5e22 100644 --- a/jedi/parser/tree.py +++ b/jedi/parser/tree.py @@ -1260,7 +1260,7 @@ class CompFor(Simple): arr.append(name) return dct - def names_dicts(self): + def names_dicts(self, search_global): yield self.names_dict def get_defined_names(self): diff --git a/test/completion/usages.py b/test/completion/usages.py index bf476975..22bc0a31 100644 --- a/test/completion/usages.py +++ b/test/completion/usages.py @@ -164,7 +164,7 @@ class Super(object): def base_method(self): #< 13 (0,13), (20,13) self.base_var = 1 - #< 13 (0,13), (24,13), (29,13) + #< 13 (0,13), self.instance_var = 1 #< 8 (0,8), @@ -188,12 +188,12 @@ class TestClass(Super): TestClass.base_var - #< 13 (5,13), (0,13), (-24,13) + #< 13 (5,13), (0,13) self.instance_var = 3 #< 9 (0,8), def just_a_method(self): - #< (-5,13), (0,13), (-29,13) + #< (-5,13), (0,13) self.instance_var