From 6cb021f4aeeb67e8bae2f626159e206f7a706d22 Mon Sep 17 00:00:00 2001 From: David Halter Date: Wed, 10 Jul 2013 08:55:23 +0200 Subject: [PATCH] add memoize decorator to an Instance method, fixes RecursionError of #239 --- jedi/evaluate_representation.py | 1 + test/completion/import_tree/recurse_class1.py | 5 +++++ test/completion/import_tree/recurse_class2.py | 4 ++++ test/completion/imports.py | 10 +++++++++- 4 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 test/completion/import_tree/recurse_class1.py create mode 100644 test/completion/import_tree/recurse_class2.py 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