diff --git a/evaluate.py b/evaluate.py index 08b93baf..fdca64cc 100644 --- a/evaluate.py +++ b/evaluate.py @@ -759,7 +759,9 @@ def get_defined_names_for_position(obj, position=(float('inf'), float('inf'))): :param position: the position as a row/column tuple, default is infinity. """ names = obj.get_defined_names() - if not position: + # instances have special rules, always return all the possible completions, + # because class variables are always valid and the `self.` variables, too. + if not position or isinstance(obj, Instance): return names names_new = [] for n in names: diff --git a/test/completion/ordering.py b/test/completion/ordering.py index 9500b059..12128d17 100644 --- a/test/completion/ordering.py +++ b/test/completion/ordering.py @@ -104,7 +104,7 @@ class A(object): a.upper #? [] a.append - a = list + a = list() def __init__(self): self.b = "" self.b = 3 @@ -119,15 +119,21 @@ class A(object): def before(self): self.a = 1 - #? int() str() + #? list() str() int() self.a #? ['after'] self.after + self.c = 3 + #? set() int() + self.c + def after(self): self.a = '' + c = set() + #? list() A.a