1
0
forked from VimPlug/jedi

Fix a recursion issue.

This commit is contained in:
Dave Halter
2017-01-02 23:57:59 +01:00
parent c7241068e8
commit 306fd5b95b
2 changed files with 34 additions and 3 deletions

View File

@@ -127,9 +127,15 @@ class Evaluator(object):
return f.filter_name(filters)
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)
@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
list, which are the calls, that a statement does. In case multiple
@@ -236,13 +242,11 @@ class Evaluator(object):
return result
else:
return self._eval_element_if_evaluated(context, element)
return self._eval_element_cached(context, element)
else:
if predefined_if_name_dict:
return self._eval_element_not_cached(context, element)
else:
return self._eval_element_if_evaluated(context, element)
return self._eval_element_cached(context, element)
def _eval_element_if_evaluated(self, context, element):
"""

View File

@@ -49,3 +49,30 @@ class FooListComp():
#? int()
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