diff options
author | Pablo Galindo <Pablogsal@gmail.com> | 2019-10-30 11:53:26 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-10-30 11:53:26 +0000 |
commit | 6c3e66a34b95fff07df0ad5086104dd637a091ce (patch) | |
tree | 3717be95d4016c94d16cce66aa4581a7cfb14a4e /Lib/test | |
parent | 24c6258269acd842914450f55491690ba87dded9 (diff) | |
download | cpython-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.py | 18 |
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 |