diff --git a/tests/basics/syntaxerror.py b/tests/basics/syntaxerror.py index 8e706c6e23..c0702cb245 100644 --- a/tests/basics/syntaxerror.py +++ b/tests/basics/syntaxerror.py @@ -82,7 +82,6 @@ test_syntax("break") test_syntax("continue") # must be in a function -test_syntax("return") test_syntax("yield") test_syntax("nonlocal a") test_syntax("await 1") diff --git a/tests/basics/syntaxerror_return.py b/tests/basics/syntaxerror_return.py new file mode 100644 index 0000000000..a32bfbd33c --- /dev/null +++ b/tests/basics/syntaxerror_return.py @@ -0,0 +1,18 @@ +# With MICROPY_CPYTHON_COMPAT, the "return" statement can only appear in a +# function. +# Otherwise (in minimal builds), it ends execution of a module/class. + +try: + exec +except NameError: + print("SKIP") + raise SystemExit + +try: + exec('return; print("this should not be executed.")') + # if we get here then MICROPY_CPYTHON_COMPAT is disabled and test + # should be skipped. + print("SKIP") + raise SystemExit +except SyntaxError: + print('SyntaxError')