On Thursday, 12 October 2017 at 20:27:03 UTC, Jonathan M Davis wrote:
On Thursday, October 12, 2017 20:15:41 kdevel via
---
void main ()
{
    assert (false);
}
---

qualifies as "invalid, and therefore has undefined behaviour." A statement, which makes no sense to me. Either it is a "debugging aid", that implies defined behavior, or it is undefined behavior, then assert (false) cannot aid debugging.

assert(false) is a bit special in that it's never removed (it becomes a HLT instruction with -release),

Confirmed. I should have written something like this instead:

---
import std.stdio;
import std.string;
import std.conv;
void main ()
{
   int i;
   i = readln.chomp.to!int;
   assert (i != 3);
   writeln ("i = <", i, ">");
}
---

Is it defined that this program throws an AssertError in debug mode if 3 is fed to stdin? If not, assert (...) could not aid debugging.

Reply via email to