forked from VimPlug/jedi
Fix a recursion issue.
This commit is contained in:
@@ -127,9 +127,15 @@ class Evaluator(object):
|
|||||||
return f.filter_name(filters)
|
return f.filter_name(filters)
|
||||||
return f.find(filters, attribute_lookup=not search_global)
|
return f.find(filters, attribute_lookup=not search_global)
|
||||||
|
|
||||||
|
def eval_statement(self, context, stmt, seek_name=None):
|
||||||
|
with recursion.execution_allowed(self, stmt) as allowed:
|
||||||
|
if allowed or context.get_root_context() == self.BUILTINS:
|
||||||
|
return self._eval_stmt(context, stmt, seek_name)
|
||||||
|
return set()
|
||||||
|
|
||||||
#@memoize_default(default=[], evaluator_is_first_arg=True)
|
#@memoize_default(default=[], evaluator_is_first_arg=True)
|
||||||
@debug.increase_indent
|
@debug.increase_indent
|
||||||
def eval_statement(self, context, stmt, seek_name=None):
|
def _eval_stmt(self, context, stmt, seek_name=None):
|
||||||
"""
|
"""
|
||||||
The starting point of the completion. A statement always owns a call
|
The starting point of the completion. A statement always owns a call
|
||||||
list, which are the calls, that a statement does. In case multiple
|
list, which are the calls, that a statement does. In case multiple
|
||||||
@@ -236,13 +242,11 @@ class Evaluator(object):
|
|||||||
return result
|
return result
|
||||||
else:
|
else:
|
||||||
return self._eval_element_if_evaluated(context, element)
|
return self._eval_element_if_evaluated(context, element)
|
||||||
return self._eval_element_cached(context, element)
|
|
||||||
else:
|
else:
|
||||||
if predefined_if_name_dict:
|
if predefined_if_name_dict:
|
||||||
return self._eval_element_not_cached(context, element)
|
return self._eval_element_not_cached(context, element)
|
||||||
else:
|
else:
|
||||||
return self._eval_element_if_evaluated(context, element)
|
return self._eval_element_if_evaluated(context, element)
|
||||||
return self._eval_element_cached(context, element)
|
|
||||||
|
|
||||||
def _eval_element_if_evaluated(self, context, element):
|
def _eval_element_if_evaluated(self, context, element):
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -49,3 +49,30 @@ class FooListComp():
|
|||||||
|
|
||||||
#? int()
|
#? int()
|
||||||
FooListComp().recursive[0]
|
FooListComp().recursive[0]
|
||||||
|
|
||||||
|
|
||||||
|
class InstanceAttributeIfs:
|
||||||
|
def b(self):
|
||||||
|
self.a1 = 1
|
||||||
|
self.a2 = 1
|
||||||
|
|
||||||
|
def c(self):
|
||||||
|
self.a2 = ''
|
||||||
|
|
||||||
|
def x(self):
|
||||||
|
self.b()
|
||||||
|
|
||||||
|
if self.a1 == 1:
|
||||||
|
self.a1 = self.a1 + 1
|
||||||
|
if self.a2 == UNDEFINED:
|
||||||
|
self.a2 = self.a2 + 1
|
||||||
|
|
||||||
|
#? int()
|
||||||
|
self.a1
|
||||||
|
#? int() str()
|
||||||
|
self.a2
|
||||||
|
|
||||||
|
#? int()
|
||||||
|
InstanceAttributeIfs().a1
|
||||||
|
#? int() str()
|
||||||
|
InstanceAttributeIfs().a2
|
||||||
|
|||||||
Reference in New Issue
Block a user