summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--tests/basics/syntaxerror.py1
-rw-r--r--tests/basics/syntaxerror_return.py18
2 files changed, 18 insertions, 1 deletions
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')