http://d.puremagic.com/issues/show_bug.cgi?id=3550

           Summary: array.dup violates const/invariant without a cast.
           Product: D
           Version: 2.036
          Platform: Other
        OS/Version: Linux
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nob...@puremagic.com
        ReportedBy: schvei...@yahoo.com


--- Comment #0 from Steven Schveighoffer <schvei...@yahoo.com> 2009-11-24 
19:47:31 PST ---
simple test case:

import std.stdio;

class C { int x; }

void foo(const(C)[] arg)
{
  auto arg2 = arg.dup;
  foreach(c; arg2) c.x = 5;
}

void main()
{
  C[] arr;
  arr ~= new C;
  foo(arr);
  writefln("%d", arr[0].x);
}

This compiles and outputs 5.

I believe dup should statically fail if the element type has any references in
it and the type is const or invariant.

Likewise, I think idup should fail if the element type has any references in
it.  These properties are not supposed to be "you're on your own" territory
IMO.

This is related to bug 1339

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------

Reply via email to