On Tuesday, 29 July 2025 at 23:18:18 UTC, Brother Bill wrote:

Your changes do work, but at the cost of making i NOT deeply immutable: no assignment, no changing any elements, no appending, no setting length.

if you insit on the type id suggest this code then

```d
import std.stdio;

immutable int[] i;

shared static this() {
    writeln("In shared static this()");
    int[] i_;
    i_~=43;
    foreach(j;0..10){
        i_~=j;
    }
    i = i_.dup;
}

void main()
{
        writeln("In main()");
        writeln("i: ", i);
}
```

---

this error message is ugly for a newer one; is this a regression? Programming in d is sorta spec tier

```d
2.101.2: Failure with output:
-----
/path/to/dmd.linux/dmd2/linux/bin64/../../src/druntime/import/core/internal/array/appending.d(49):
 Error: cannot modify `immutable` expression `px`
onlineapp.d(6): Error: template instance `core.internal.array.appending._d_arrayappendcTXImpl!(immutable(string), immutable(char))` error instantiating
-----

2.102.2 to 2.105.3: Failure with output:
-----
/path/to/dmd.linux/dmd2/linux/bin64/../../src/druntime/import/core/internal/array/appending.d(47):
 Error: cannot modify `immutable` expression `px`
onlineapp.d(6): Error: template instance `core.internal.array.appending._d_arrayappendcTXImpl!(immutable(string), immutable(char))` error instantiating
-----

Since      2.106.1: Failure with output:
-----
/path/to/dmd.linux/dmd2/linux/bin64/../../src/druntime/import/core/internal/array/appending.d(42):
 Error: cannot modify `immutable` expression `px`
onlineapp.d(6): Error: template instance `core.internal.array.appending._d_arrayappendcTX!(immutable(string), immutable(char))` error instantiating
```

Reply via email to