mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-06 22:14:27 +08:00
Fix a recursion issue and add a test.
This commit is contained in:
@@ -275,7 +275,7 @@ class Evaluator(object):
|
|||||||
return self._eval_element_not_cached(element)
|
return self._eval_element_not_cached(element)
|
||||||
return self._eval_element_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):
|
def _eval_element_cached(self, element):
|
||||||
return self._eval_element_not_cached(element)
|
return self._eval_element_not_cached(element)
|
||||||
|
|
||||||
|
|||||||
@@ -183,7 +183,6 @@ class Comprehension(IterableWrapper):
|
|||||||
last_comp = list(comp_for.get_comp_fors())[-1]
|
last_comp = list(comp_for.get_comp_fors())[-1]
|
||||||
return helpers.deep_ast_copy(self._get_comprehension().children[index], parent=last_comp)
|
return helpers.deep_ast_copy(self._get_comprehension().children[index], parent=last_comp)
|
||||||
|
|
||||||
@memoize_default()
|
|
||||||
def _iterate(self):
|
def _iterate(self):
|
||||||
def nested(comp_fors):
|
def nested(comp_fors):
|
||||||
comp_for = comp_fors[0]
|
comp_for = comp_fors[0]
|
||||||
|
|||||||
@@ -15,7 +15,6 @@ from jedi.evaluate import iterable
|
|||||||
def recursion_decorator(func):
|
def recursion_decorator(func):
|
||||||
def run(evaluator, stmt, *args, **kwargs):
|
def run(evaluator, stmt, *args, **kwargs):
|
||||||
rec_detect = evaluator.recursion_detector
|
rec_detect = evaluator.recursion_detector
|
||||||
# print stmt, len(self.node_statements())
|
|
||||||
if rec_detect.push_stmt(stmt):
|
if rec_detect.push_stmt(stmt):
|
||||||
return set()
|
return set()
|
||||||
else:
|
else:
|
||||||
|
|||||||
@@ -308,6 +308,20 @@ Recursion().a
|
|||||||
#?
|
#?
|
||||||
Recursion().b
|
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
|
# ducktyping
|
||||||
# -----------------
|
# -----------------
|
||||||
|
|||||||
@@ -172,5 +172,3 @@ def x():
|
|||||||
#? 22
|
#? 22
|
||||||
[a for a in h if hio]
|
[a for a in h if hio]
|
||||||
if hio: pass
|
if hio: pass
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user