[Issue 12777] const/immutable member function violating its const-ness - confusing error message

via Digitalmars-d-bugs digitalmars-d-bugs at puremagic.com
Wed May 21 01:29:57 PDT 2014


https://issues.dlang.org/show_bug.cgi?id=12777

Andrej Mitrovic <andrej.mitrovich at gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |andrej.mitrovich at gmail.com

--- Comment #2 from Andrej Mitrovic <andrej.mitrovich at gmail.com> ---
(In reply to Ivan Kazmenko from comment #0)
> First, member "v" is not constant - the method is.

No, it's not the 'method', it's the 'this' reference which is constant. And
const is transitive in D, which means all fields are constant. The above is
equivalent to:

-----
struct S {
    const(int) v;  // as seen from 'fun'
    void fun () const {v++;}
}

struct S {
    immutable(int) v;  // as seen from 'fun'
    void fun () immutable {v++;}
}
-----

However I do agree the diagnostic could be improved a bit.

--


More information about the Digitalmars-d-bugs mailing list