assume, assert, enforce, @safe

Walter Bright via Digitalmars-d digitalmars-d at puremagic.com
Thu Jul 31 14:11:11 PDT 2014


On 7/31/2014 1:52 PM, Sean Kelly wrote:
> Could you expand on what you consider input?

All state processed by the program that comes from outside the program. That 
would include:

1. user input
2. the file system
3. uninitialized memory
4. interprocess shared memory
5. anything received from system APIs, device drivers, and DLLs that are not 
part of the program
6. resource availability and exhaustion


> For example, if a
> function has an "in" contract that validates input parameters, is
> the determination that a parameter is invalid a program bug or
> simply invalid input?

An "in" contract failure is a program bug. Contracts are ASSERTIONS ABOUT THE 
CORRECTNESS OF THE PROGRAM LOGIC. They are not assertions about the program's input.

> If you consider this invalid input that
> should be checked by enforce(), can you explain why?

This says it better than I can:

http://en.wikipedia.org/wiki/Design_by_contract




More information about the Digitalmars-d mailing list