DIP 1006 - Preliminary Review Round 1
Timon Gehr
timon.gehr at gmx.ch
Mon Mar 5 22:57:19 UTC 2018
On 05.03.2018 22:24, ag0aep6g wrote:
> On 03/05/2018 10:11 PM, Walter Bright wrote:
>> On 3/5/2018 11:34 AM, Timon Gehr wrote:
> [...]
>>> int[] x=[];
>>> writeln(x[0]); // range violation even with -release
>>> // defined behavior even with -boundscheck=off (!)
>>
>> It is not defined behavior with -boundscheck=off.
>
> Dereferencing null is not defined with -boundscheck=off?
This was my bad. It's not dereferencing null. The compiler is free to
assume 0<x.length, which means it is allowed to think that the main
function is dead code.
Anyway, a similar point can be made by considering contracts that say
that specific values are non-null. They will turn null values into UB
even though without them, null dereferences would have been defined to
crash.
More information about the Digitalmars-d
mailing list