digitalmars.D.bugs - [Issue 14141] New: `pure` member function returning qualified member
- via Digitalmars-d-bugs (40/40) Feb 07 2015 https://issues.dlang.org/show_bug.cgi?id=14141
https://issues.dlang.org/show_bug.cgi?id=14141 Issue ID: 14141 Summary: `pure` member function returning qualified member result is implicitly convertible to unqualified Product: D Version: D2 Hardware: All OS: All Status: NEW Keywords: accepts-invalid Severity: major Priority: P1 Component: DMD Assignee: nobody puremagic.com Reporter: verylonglogin.reg gmail.com This code should compile: --- struct S { Object obj; const(Object) getObj() const pure { return obj; } } void main() { const S s; static assert(is(typeof(s.getObj()) == const Object)); // ok static assert(!__traits(compiles, { Object o = s.getObj(); })); // fails } --- As a result such function compiles but shouldn't: --- Object f(const Object o) { const S s = { obj: o }; return s.getObj(); } --- This results in type system breakage. --
Feb 07 2015