mirror of https://github.com/python/cpython.git
Add a warning for code like:
assert (0, 'message') An empty tuple does not create a warning. While questionable usage: assert (), 'message' should not display a warning. Tested manually. The warning message could be improved. Feel free to update it.
This commit is contained in:
parent
cd6bfab410
commit
400aedacc0
|
@ -12,6 +12,8 @@ What's New in Python 2.6 alpha 2?
|
||||||
Core and builtins
|
Core and builtins
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
- Add a warning when asserting a non-empty tuple which is always true.
|
||||||
|
|
||||||
- Issue #2179: speed up with statement execution by storing the exit method
|
- Issue #2179: speed up with statement execution by storing the exit method
|
||||||
on the stack instead of in a temporary variable (patch by Jeffrey Yaskin)
|
on the stack instead of in a temporary variable (patch by Jeffrey Yaskin)
|
||||||
|
|
||||||
|
|
|
@ -2056,6 +2056,14 @@ compiler_assert(struct compiler *c, stmt_ty s)
|
||||||
if (assertion_error == NULL)
|
if (assertion_error == NULL)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
if (s->v.Assert.test->kind == Tuple_kind &&
|
||||||
|
asdl_seq_LEN(s->v.Assert.test->v.Tuple.elts) > 0) {
|
||||||
|
const char* msg =
|
||||||
|
"assertion is always true, perhaps remove parentheses?";
|
||||||
|
if (PyErr_WarnExplicit(PyExc_SyntaxWarning, msg, c->c_filename,
|
||||||
|
c->u->u_lineno, NULL, NULL) == -1)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
VISIT(c, expr, s->v.Assert.test);
|
VISIT(c, expr, s->v.Assert.test);
|
||||||
end = compiler_new_block(c);
|
end = compiler_new_block(c);
|
||||||
if (end == NULL)
|
if (end == NULL)
|
||||||
|
|
Loading…
Reference in New Issue