diff --git a/jedi/evaluate/__init__.py b/jedi/evaluate/__init__.py index 0ca47aee..37e0cd1c 100644 --- a/jedi/evaluate/__init__.py +++ b/jedi/evaluate/__init__.py @@ -275,7 +275,7 @@ class Evaluator(object): return self._eval_element_not_cached(element) return self._eval_element_cached(element) - @memoize_default(evaluator_is_first_arg=True) + @memoize_default(default=set(), evaluator_is_first_arg=True) def _eval_element_cached(self, element): return self._eval_element_not_cached(element) diff --git a/jedi/evaluate/iterable.py b/jedi/evaluate/iterable.py index 79adfcd2..9b06ab53 100644 --- a/jedi/evaluate/iterable.py +++ b/jedi/evaluate/iterable.py @@ -183,7 +183,6 @@ class Comprehension(IterableWrapper): last_comp = list(comp_for.get_comp_fors())[-1] return helpers.deep_ast_copy(self._get_comprehension().children[index], parent=last_comp) - @memoize_default() def _iterate(self): def nested(comp_fors): comp_for = comp_fors[0] diff --git a/jedi/evaluate/recursion.py b/jedi/evaluate/recursion.py index a95ba3e0..9b95fad5 100644 --- a/jedi/evaluate/recursion.py +++ b/jedi/evaluate/recursion.py @@ -15,7 +15,6 @@ from jedi.evaluate import iterable def recursion_decorator(func): def run(evaluator, stmt, *args, **kwargs): rec_detect = evaluator.recursion_detector - # print stmt, len(self.node_statements()) if rec_detect.push_stmt(stmt): return set() else: diff --git a/test/completion/classes.py b/test/completion/classes.py index 35b0619c..4308a1a5 100644 --- a/test/completion/classes.py +++ b/test/completion/classes.py @@ -308,6 +308,20 @@ Recursion().a #? Recursion().b + +class X(): + def __init__(self): + self.recursive = [1, 3] + + def annoying(self): + self.recursive = [self.recursive[0]] + + def recurse(self): + self.recursive = [self.recursive[1]] + +#? int() +X().recursive[0] + # ----------------- # ducktyping # ----------------- diff --git a/test/completion/comprehensions.py b/test/completion/comprehensions.py index 78e4f4b3..a5778a92 100644 --- a/test/completion/comprehensions.py +++ b/test/completion/comprehensions.py @@ -172,5 +172,3 @@ def x(): #? 22 [a for a in h if hio] if hio: pass - -