Issue #18518: timeit now rejects statements which can't be compiled outside

a function or a loop (e.g. "return" or "break").
This commit is contained in:
Serhiy Storchaka 2015-01-26 12:09:17 +02:00
parent 21d7533c4c
commit 2bef58577f
4 changed files with 21 additions and 6 deletions

View file

@ -109,6 +109,12 @@ class Timer:
self.timer = timer
ns = {}
if isinstance(stmt, str):
# Check that the code can be compiled outside a function
if isinstance(setup, str):
compile(setup, dummy_src_name, "exec")
compile(setup + '\n' + stmt, dummy_src_name, "exec")
else:
compile(stmt, dummy_src_name, "exec")
stmt = reindent(stmt, 8)
if isinstance(setup, str):
setup = reindent(setup, 4)