[Issue 23375] enum is not considered global mutable state
    d-bugmail at puremagic.com 
    d-bugmail at puremagic.com
       
    Mon Sep 26 09:59:57 UTC 2022
    
    
  
https://issues.dlang.org/show_bug.cgi?id=23375
Dennis <dkorpel at live.nl> changed:
           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |dkorpel at live.nl
--- Comment #1 from Dennis <dkorpel at live.nl> ---
I thought it would allocate a new array literal in f(), but it really modifies
global state:
```
class C
{
    string s;
    this(string a) pure @safe nothrow  { s = a; }
    override string toString() {return s;}
}
enum C[] cs = [ new C("a"), new C("b") ];
void f() pure @safe @nogc nothrow
{
    cs[0].s = "c";
}
import std.writeln;
void main()
{
    writeln(cs); // [a, b]
    f();
    writeln(cs); // [c, b]
}
```
I think the could should be accepted without @nogc, and it would modify a copy
of the array.
--
    
    
More information about the Digitalmars-d-bugs
mailing list