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
|
||||
-----------------
|
||||
|
||||
- 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
|
||||
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)
|
||||
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);
|
||||
end = compiler_new_block(c);
|
||||
if (end == NULL)
|
||||
|
|
Loading…
Reference in New Issue