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.