[3.7] bpo-37500: Revert commit 85ed1712e4
(GH-14605)
https://bugs.python.org/issue37500
This commit is contained in:
parent
d5a72923c2
commit
7d93effeb4
|
@ -650,20 +650,6 @@ 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)
|
||||
|
|
|
@ -2301,12 +2301,13 @@ compiler_if(struct compiler *c, stmt_ty s)
|
|||
return 0;
|
||||
|
||||
constant = expr_constant(s->v.If.test);
|
||||
/* constant = 0: "if 0" Leave the optimizations to
|
||||
* the pephole optimizer to check for syntax errors
|
||||
* in the block.
|
||||
/* constant = 0: "if 0"
|
||||
* constant = 1: "if 1", "if 2", ...
|
||||
* constant = -1: rest */
|
||||
if (constant == 1) {
|
||||
if (constant == 0) {
|
||||
if (s->v.If.orelse)
|
||||
VISIT_SEQ(c, stmt, s->v.If.orelse);
|
||||
} else if (constant == 1) {
|
||||
VISIT_SEQ(c, stmt, s->v.If.body);
|
||||
} else {
|
||||
if (asdl_seq_LEN(s->v.If.orelse)) {
|
||||
|
|
|
@ -304,18 +304,11 @@ PyCode_Optimize(PyObject *code, PyObject* consts, PyObject *names,
|
|||
case LOAD_CONST:
|
||||
cumlc = lastlc + 1;
|
||||
if (nextop != POP_JUMP_IF_FALSE ||
|
||||
!ISBASICBLOCK(blocks, op_start, i + 1)) {
|
||||
!ISBASICBLOCK(blocks, op_start, i + 1) ||
|
||||
!PyObject_IsTrue(PyList_GET_ITEM(consts, get_arg(codestr, i))))
|
||||
break;
|
||||
}
|
||||
PyObject* cnt = PyList_GET_ITEM(consts, get_arg(codestr, i));
|
||||
int is_true = PyObject_IsTrue(cnt);
|
||||
if (is_true == -1) {
|
||||
goto exitError;
|
||||
}
|
||||
if (is_true == 1) {
|
||||
fill_nops(codestr, op_start, nexti + 1);
|
||||
cumlc = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
/* Try to fold tuples of constants.
|
||||
|
|
Loading…
Reference in New Issue