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:59 +02:00
commit c959b0cd30
4 changed files with 21 additions and 6 deletions

View file

@ -115,6 +115,12 @@ class Timer:
local_ns = {}
global_ns = _globals() if globals is None else globals
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)