summaryrefslogtreecommitdiffstats
path: root/Lib/test/test_syntax.py
diff options
context:
space:
mode:
authorPablo Galindo <Pablogsal@gmail.com>2019-05-17 10:37:08 (GMT)
committerGitHub <noreply@github.com>2019-05-17 10:37:08 (GMT)
commitaf8646c8054d0f4180a2013383039b6a472f9698 (patch)
treeceafae5989deb1ab62b8237593bd8752ab600e39 /Lib/test/test_syntax.py
parenta8b46944d72bba6dc76260ed61da5c78d3f9d9c0 (diff)
downloadcpython-af8646c8054d0f4180a2013383039b6a472f9698.zip
cpython-af8646c8054d0f4180a2013383039b6a472f9698.tar.gz
cpython-af8646c8054d0f4180a2013383039b6a472f9698.tar.bz2
bpo-1875: Raise SyntaxError in invalid blocks that will be optimised away (GH-13332)
Move the check for dead conditionals (if 0) to the peephole optimizer and make sure that the code block is still compiled to report any existing syntax errors within.
Diffstat (limited to 'Lib/test/test_syntax.py')
-rw-r--r--Lib/test/test_syntax.py14
1 files changed, 14 insertions, 0 deletions
diff --git a/Lib/test/test_syntax.py b/Lib/test/test_syntax.py
index 4a2899e..8451c07 100644
--- a/Lib/test/test_syntax.py
+++ b/Lib/test/test_syntax.py
@@ -696,6 +696,20 @@ class SyntaxTestCase(unittest.TestCase):
def test_break_outside_loop(self):
self._check_error("break", "outside loop")
+ def test_yield_outside_function(self):
+ self._check_error("if 0: yield", "outside function")
+ self._check_error("class C:\n if 0: yield", "outside function")
+
+ def test_return_outside_function(self):
+ self._check_error("if 0: return", "outside function")
+ self._check_error("class C:\n if 0: return", "outside function")
+
+ def test_break_outside_loop(self):
+ self._check_error("if 0: break", "outside loop")
+
+ def test_continue_outside_loop(self):
+ self._check_error("if 0: continue", "not properly in loop")
+
def test_unexpected_indent(self):
self._check_error("foo()\n bar()\n", "unexpected indent",
subclass=IndentationError)