mirror of
https://github.com/davidhalter/jedi.git
synced 2025-12-09 23:34:45 +08:00
fix function execution mutable list issue
This commit is contained in:
@@ -5,5 +5,5 @@ class partial():
|
||||
self.__keywords = keywords
|
||||
|
||||
def __call__(self, *args, **kwargs):
|
||||
# I know this doesn't work in Python, but Jedi can this ;-)
|
||||
# I know this doesn't work in Python, but in Jedi it does ;-)
|
||||
return self.__func(*self.__args, *args, **self.keywords, **kwargs)
|
||||
|
||||
@@ -444,7 +444,7 @@ class FunctionExecution(Executable):
|
||||
if func.is_generator and not evaluate_generator:
|
||||
return [iterable.Generator(self._evaluator, func, self.var_args)]
|
||||
else:
|
||||
stmts = docstrings.find_return_types(self._evaluator, func)
|
||||
stmts = list(docstrings.find_return_types(self._evaluator, func))
|
||||
for r in self.returns:
|
||||
if r is not None:
|
||||
stmts += self._evaluator.eval_statement(r)
|
||||
|
||||
20
test/test_evaluate/test_representation.py
Normal file
20
test/test_evaluate/test_representation.py
Normal file
@@ -0,0 +1,20 @@
|
||||
from jedi import Script
|
||||
|
||||
|
||||
def test_function_execution():
|
||||
"""
|
||||
We've been having an issue of a mutable list that was changed inside the
|
||||
function execution. Test if an execution always returns the same result.
|
||||
"""
|
||||
|
||||
s = """
|
||||
def x():
|
||||
return str()
|
||||
x"""
|
||||
d = Script(s).goto_definitions()[0]
|
||||
# Now just use the internals of the result (easiest way to get a fully
|
||||
# usable function).
|
||||
func, evaluator = d._definition, d._evaluator
|
||||
# Should return the same result both times.
|
||||
assert len(evaluator.execute(func)) == 1
|
||||
assert len(evaluator.execute(func)) == 1
|
||||
Reference in New Issue
Block a user