From a3a39c07576c95096ea09f22c90350b3d39267c8 Mon Sep 17 00:00:00 2001 From: Dave Halter Date: Sun, 4 Mar 2018 11:29:25 +0100 Subject: [PATCH] Always pop nodes in recursion detector --- jedi/evaluate/recursion.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/jedi/evaluate/recursion.py b/jedi/evaluate/recursion.py index 9691f5b0..5be3f8be 100644 --- a/jedi/evaluate/recursion.py +++ b/jedi/evaluate/recursion.py @@ -49,6 +49,7 @@ per_function_recursion_limit = 2 A function may not be executed more than this number of times recursively. """ + class RecursionDetector(object): def __init__(self): self.pushed_nodes = [] @@ -67,9 +68,11 @@ def execution_allowed(evaluator, node): node.start_pos) yield False else: - pushed_nodes.append(node) - yield True - pushed_nodes.pop() + try: + pushed_nodes.append(node) + yield True + finally: + pushed_nodes.pop() def execution_recursion_decorator(default=NO_CONTEXTS):