summaryrefslogtreecommitdiff
path: root/Lib
diff options
context:
space:
mode:
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>2019-05-17 03:59:48 -0700
committerGitHub <noreply@github.com>2019-05-17 03:59:48 -0700
commit85ed1712e428f93408f56fc684816f9a85b0ebc0 (patch)
treeab6f277a93255f5d7a7caa4af7d99d136a568be1 /Lib
parent94704048e2467dbb4c53ca02d103eab5671e84b3 (diff)
downloadcpython-git-85ed1712e428f93408f56fc684816f9a85b0ebc0.tar.gz
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. (cherry picked from commit af8646c8054d0f4180a2013383039b6a472f9698) Co-authored-by: Pablo Galindo <Pablogsal@gmail.com>
Diffstat (limited to 'Lib')
-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 2b96a94401..4918e5c4c4 100644
--- a/Lib/test/test_syntax.py
+++ b/Lib/test/test_syntax.py
@@ -650,6 +650,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)