http://d.puremagic.com/issues/show_bug.cgi?id=10482
--- Comment #4 from Andrej Mitrovic <[email protected]> 2013-06-30 09:56:33 PDT --- (In reply to comment #3) > IMHO this is invalid / won't fix. See my comments: http://d.puremagic.com/issues/show_bug.cgi?id=10150#c4 http://d.puremagic.com/issues/show_bug.cgi?id=10150#c5 I'm reposting them here: (In reply to comment #4) > I disagree with this change, this is extremely dangerous behavior when > interfacing with C. Take a look at the following: > > ----- > extern(C) const int *foo(); > > void main() > { > *foo() = 1; // compiles > } > ----- > > The proper definition should have been: > > ----- > extern(C) const(int)* foo(); > > void main() > { > *foo() = 1; // fails > } > ----- > > It is very easy to make this mistake, it should not be silent, at least not > for > module-scoped functions. > > Alternatively as a compromise I suggest we at least add this check for > extern(C) functions, because this is where this problem can occur very > frequently. (In reply to comment #4) > I disagree with this change, this is extremely dangerous behavior when > interfacing with C. Take a look at the following: > > ----- > extern(C) const int *foo(); > > void main() > { > *foo() = 1; // compiles > } > ----- > > The proper definition should have been: > > ----- > extern(C) const(int)* foo(); > > void main() > { > *foo() = 1; // fails > } > ----- > > It is very easy to make this mistake, it should not be silent, at least not > for > module-scoped functions. > > Alternatively as a compromise I suggest we at least add this check for > extern(C) functions, because this is where this problem can occur very > frequently. (In reply to comment #5) > Another alternative is to make the compiler smarter, and only disallow const > where it's only applied to one function, for example: > > ----- > const int * foo(); // disallowed > > const > { > int * foo(); // ok > int * bar(); // ok > } > > const: > int * foo(); // ok > ----- > > This would be for the sake of convenience, to avoid breaking existing code. -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
