[Issue 9461] New: Ability to break typesystem with `inout`

d-bugmail at puremagic.com d-bugmail at puremagic.com
Wed Feb 6 04:17:44 PST 2013


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

           Summary: Ability to break typesystem with `inout`
           Product: D
           Version: D2
          Platform: All
        OS/Version: All
            Status: NEW
          Keywords: accepts-invalid
          Severity: critical
          Priority: P2
         Component: DMD
        AssignedTo: nobody at puremagic.com
        ReportedBy: verylonglogin.reg at gmail.com


--- Comment #0 from Denis Shelomovskij <verylonglogin.reg at gmail.com> 2013-02-06 15:17:44 MSK ---
Implicit conversion from `inout(<derived class>)[]` to `inout(<base class>)[]`
must not be allowed (just like for unqualified case) as `inout` can be `<no
qualifier>` (i.e. mutable):
---
class A { }
class B: A { }

inout(A)[] getBArrayAsAArray(inout(B)[] bArr)
{ return bArr; }

void main()
{
    B[] bArr = [new B()];
    getBArrayAsAArray(bArr)[0] = new A(); // bArr[0] not a `B` any more...
}
---

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


More information about the Digitalmars-d-bugs mailing list