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')