forked from VimPlug/jedi
fixed recursion problem with properties. However, this does not fix the problem, that things that are used like properties (closures with different inputs) still are not properly executed, due to recursion detection.
This commit is contained in:
@@ -137,7 +137,7 @@ class Instance(Executable):
|
||||
def __init__(self, base, var_args=parsing.Array(None, None)):
|
||||
super(Instance, self).__init__(base, var_args)
|
||||
if str(base.name) in ['list', 'set'] \
|
||||
and builtin.Builtin.name == base.get_parent_until().path:
|
||||
and builtin.Builtin.scope == base.get_parent_until():
|
||||
# compare the module path with the builtin name.
|
||||
self.var_args = dynamic.check_array_instances(self)
|
||||
else:
|
||||
|
||||
14
helpers.py
14
helpers.py
@@ -1,6 +1,9 @@
|
||||
import copy
|
||||
|
||||
import parsing
|
||||
import debug
|
||||
import copy
|
||||
import builtin
|
||||
|
||||
|
||||
class RecursionDecorator(object):
|
||||
""" A decorator to detect recursions in statements """
|
||||
@@ -10,11 +13,14 @@ class RecursionDecorator(object):
|
||||
self.current = None
|
||||
|
||||
def __call__(self, stmt, *args, **kwargs):
|
||||
# don't check param instances, they are not causing recursions
|
||||
if isinstance(stmt, parsing.Param):
|
||||
r = RecursionNode(stmt, self.current)
|
||||
|
||||
# Don't check param instances, they are not causing recursions
|
||||
# The same's true for the builtins, because the builtins are really
|
||||
# simple.
|
||||
if isinstance(stmt, parsing.Param) or r.script == builtin.Builtin.scope:
|
||||
return self.func(stmt, *args, **kwargs)
|
||||
|
||||
r = RecursionNode(stmt, self.current)
|
||||
if self.check_recursion(r):
|
||||
debug.warning('catched recursion', stmt, args, kwargs)
|
||||
return []
|
||||
|
||||
Reference in New Issue
Block a user