On 7/30/14, 3:39 PM, Joseph Rushton Wakeling via Digitalmars-d wrote:
On 31/07/14 00:01, Walter Bright via Digitalmars-d wrote:
7. using enforce() to check for program bugs is utterly wrong.
enforce() is a
library creation, the core language does not recognize it.
A question on that.
There are various places in Phobos where enforce() statements are used
to validate function input or class constructor parameters.
Yah, Phobos is a bit inconsistent about that. TDPL discusses the matter:
if a library is deployed in separation from the program(s) it serves, it
may as well handle arguments as "input". That's what e.g. the Windows
API is doing - it consistently considers all function arguments
"inputs", scrubs them, and returns error codes for all invalid inputs it
detects. In contracts, the traditional libc/Unix interface does little
checking, even a strlen(NULL) will segfault.
Phobos is somewhere in the middle - sometimes it verifies arguments with
enforce(), some other times it just uses assert().
Andrei