digitalmars.D.bugs - [Issue 9461] New: Ability to break typesystem with `inout`
- d-bugmail puremagic.com (31/31) Feb 06 2013 http://d.puremagic.com/issues/show_bug.cgi?id=9461
- d-bugmail puremagic.com (21/21) Feb 06 2013 http://d.puremagic.com/issues/show_bug.cgi?id=9461
- d-bugmail puremagic.com (10/10) Feb 06 2013 http://d.puremagic.com/issues/show_bug.cgi?id=9461
- d-bugmail puremagic.com (11/11) Feb 17 2013 http://d.puremagic.com/issues/show_bug.cgi?id=9461
- d-bugmail puremagic.com (9/9) Feb 17 2013 http://d.puremagic.com/issues/show_bug.cgi?id=9461
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 puremagic.com ReportedBy: verylonglogin.reg gmail.com 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: -------
Feb 06 2013
http://d.puremagic.com/issues/show_bug.cgi?id=9461 Similar problem exists in: - AA key conversion - AA value conversioin - Pointer target conversion - static to dynamic array conversion But, bare class conversion inout(B) to inout(A) still be allowed. Test case: ---- class A {} class B : A {} void conv1(inout(B)[] x) { inout(A)[] y = x; } // should be NG void conv2(int[inout(B)] x) { int[inout(A)] y = x; } // should be NG void conv3(inout(B)[int] x) { inout(A)[int] y = x; } // should be NG void conv4(inout(B)* x) { inout(A)* y = x; } // should be NG void conv5(ref inout(B)[1] x) { inout(A)[] y = x; } // should be NG void conv6(inout(B) x) { inout(A) y = x; } // should be OK -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Feb 06 2013
http://d.puremagic.com/issues/show_bug.cgi?id=9461 Kenji Hara <k.hara.pg gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |pull https://github.com/D-Programming-Language/dmd/pull/1633 -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Feb 06 2013
http://d.puremagic.com/issues/show_bug.cgi?id=9461 Commits pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/3241c48f8bfd1e3bd0be0ee88a9b961baf42ff93 fix Issue 9461 - Ability to break typesystem with `inout` https://github.com/D-Programming-Language/dmd/commit/62e77c805ab01043c01da76f5a7ec3d67341399c Issue 9461 - Ability to break typesystem with `inout` -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Feb 17 2013
http://d.puremagic.com/issues/show_bug.cgi?id=9461 Kenji Hara <k.hara.pg gmail.com> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution| |FIXED -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Feb 17 2013