mirror of
https://github.com/python/cpython.git
synced 2025-09-03 15:31:08 +00:00
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.
This commit is contained in:
parent
a8b46944d7
commit
af8646c805
4 changed files with 33 additions and 9 deletions
|
@ -2546,13 +2546,12 @@ compiler_if(struct compiler *c, stmt_ty s)
|
|||
return 0;
|
||||
|
||||
constant = expr_constant(s->v.If.test);
|
||||
/* constant = 0: "if 0"
|
||||
/* constant = 0: "if 0" Leave the optimizations to
|
||||
* the pephole optimizer to check for syntax errors
|
||||
* in the block.
|
||||
* constant = 1: "if 1", "if 2", ...
|
||||
* constant = -1: rest */
|
||||
if (constant == 0) {
|
||||
if (s->v.If.orelse)
|
||||
VISIT_SEQ(c, stmt, s->v.If.orelse);
|
||||
} else if (constant == 1) {
|
||||
if (constant == 1) {
|
||||
VISIT_SEQ(c, stmt, s->v.If.body);
|
||||
} else {
|
||||
if (asdl_seq_LEN(s->v.If.orelse)) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue