diff --git a/jedi/evaluate_representation.py b/jedi/evaluate_representation.py index e5766d21..f120e73e 100644 --- a/jedi/evaluate_representation.py +++ b/jedi/evaluate_representation.py @@ -84,6 +84,7 @@ class Instance(use_metaclass(cache.CachedMetaClass, Executable)): except IndexError: return None + @cache.memoize_default([]) def get_self_properties(self): def add_self_dot_name(name): n = copy.copy(name) diff --git a/test/completion/import_tree/recurse_class1.py b/test/completion/import_tree/recurse_class1.py new file mode 100644 index 00000000..773408c8 --- /dev/null +++ b/test/completion/import_tree/recurse_class1.py @@ -0,0 +1,5 @@ +import recurse_class2 + +class C(recurse_class2.C): + def a(self): + pass diff --git a/test/completion/import_tree/recurse_class2.py b/test/completion/import_tree/recurse_class2.py new file mode 100644 index 00000000..42f84efb --- /dev/null +++ b/test/completion/import_tree/recurse_class2.py @@ -0,0 +1,4 @@ +import recurse_class1 + +class C(recurse_class1.C): + pass diff --git a/test/completion/imports.py b/test/completion/imports.py index 83a4a721..19bebecb 100644 --- a/test/completion/imports.py +++ b/test/completion/imports.py @@ -196,7 +196,7 @@ import datetime. #? [] import datetime.date -#? 18 ['mod1', 'random', 'pkg', 'rename1', 'rename2', 'import'] +#? 18 ['mod1', 'random', 'pkg', 'rename1', 'rename2', 'import', 'recurse_class1', 'recurse_class2'] from import_tree. import pkg #? 18 ['pkg'] @@ -236,3 +236,11 @@ import json, datetime from import_tree.mod1 import c #? set c + +from import_tree import recurse_class1 + +#? ['a'] +recurse_class1.C.a +# github #239 RecursionError +#? ['a'] +recurse_class1.C().a