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.