Creating immutable arrays in @safe code

Dennis dkorpel at gmail.com
Sat Jul 17 11:05:11 UTC 2021


On Saturday, 17 July 2021 at 05:44:24 UTC, ag0aep6g wrote:
> I tried doing that, but `-preview=dip1000` causes trouble. This 
> fails:
> (...)
> I'm not sure what's going on.

I'm not completely caught up, but from what I see, pure and 
immutable have a history of issues:

[Issue 11503 - Type system breaking caused by implicit conversion 
for the value returned from pure 
function](https://issues.dlang.org/show_bug.cgi?id=11503)
[Issue 11909 - Struct members and static arrays break pure 
function escape analysis (immutability 
violation)](https://issues.dlang.org/show_bug.cgi?id=11909)
[Issue 15660 - break immutable with pure function and mutable 
reference params](https://issues.dlang.org/show_bug.cgi?id=15660)

There used to be a complex `isReturnIsolated` check, but the [fix 
for issue 15660](https://github.com/dlang/dmd/pull/8048) reduced 
it to a check 'is the function strongly `pure`' which means 
'parameters are values or immutable'. To reduce code breakage, 
the 'strong pure' requirement is only needed with -dip1000, which 
is why your example doesn't work with it.


More information about the Digitalmars-d-learn mailing list