summaryrefslogtreecommitdiff
path: root/Lib/test
diff options
context:
space:
mode:
authorPablo Galindo <Pablogsal@gmail.com>2019-10-30 11:53:26 +0000
committerGitHub <noreply@github.com>2019-10-30 11:53:26 +0000
commit6c3e66a34b95fff07df0ad5086104dd637a091ce (patch)
tree3717be95d4016c94d16cce66aa4581a7cfb14a4e /Lib/test
parent24c6258269acd842914450f55491690ba87dded9 (diff)
downloadcpython-git-6c3e66a34b95fff07df0ad5086104dd637a091ce.tar.gz
bpo-38640: Allow break and continue in always false while loops (GH-16992)
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/test_compile.py18
1 files changed, 18 insertions, 0 deletions
diff --git a/Lib/test/test_compile.py b/Lib/test/test_compile.py
index 9d77f7af05..566ca27fca 100644
--- a/Lib/test/test_compile.py
+++ b/Lib/test/test_compile.py
@@ -731,6 +731,24 @@ if 1:
self.assertEqual(None, opcodes[0].argval)
self.assertEqual('RETURN_VALUE', opcodes[1].opname)
+ def test_false_while_loop(self):
+ def break_in_while():
+ while False:
+ break
+
+ def continue_in_while():
+ while False:
+ continue
+
+ funcs = [break_in_while, continue_in_while]
+
+ # Check that we did not raise but we also don't generate bytecode
+ for func in funcs:
+ opcodes = list(dis.get_instructions(func))
+ self.assertEqual(2, len(opcodes))
+ self.assertEqual('LOAD_CONST', opcodes[0].opname)
+ self.assertEqual(None, opcodes[0].argval)
+ self.assertEqual('RETURN_VALUE', opcodes[1].opname)
class TestExpressionStackSize(unittest.TestCase):
# These tests check that the computed stack size for a code object