Kaydet (Commit) 400aedac authored tarafından Neal Norwitz's avatar Neal Norwitz

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.
üst cd6bfab4
......@@ -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)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment