if there's a func listener, stop the execution of a function. This solves the issue of nested *args that were reported as having too many params in static analysis.

This commit is contained in:
Dave Halter
2014-05-29 12:15:07 +02:00
parent 4f66591227
commit 1899f16a4a
2 changed files with 20 additions and 0 deletions

View File

@@ -430,6 +430,12 @@ class FunctionExecution(Executable):
# Feed the listeners, with the params.
for listener in func.listeners:
listener.execute(self._get_params())
if func.listeners:
# If we do have listeners, that means that there's not a regular
# execution ongoing. In this case Jedi is interested in the
# inserted params, not in the actual execution of the function.
return []
if func.is_generator and not evaluate_generator:
return [iterable.Generator(self._evaluator, func, self.var_args)]
else:

View File

@@ -1,3 +1,7 @@
# -----------------
# *args
# -----------------
def simple(a):
return a
@@ -13,3 +17,13 @@ nested()
def nested_no_call_to_function(*args):
return simple(1, *args)
def simple2(a, b, c):
return b
def nested(*args):
return simple2(1, *args)
def nested_twice(*args1):
return nested(*args1)
nested_twice(2, 3)