Call site 'ref'

Alex Rønne Petersen xtzgzorex at gmail.com
Sun Jan 15 05:36:53 PST 2012


Hi,

I don't know how many times I've made the mistake of passing a local 
variable to a function which takes a 'ref' parameter. Suddenly, local 
variables/fields are just mutating out of nowhere, because it's not at 
all obvious that a function you're calling is taking a 'ref' parameter. 
This is particularly true for std.utf.decode().

Yes, I realize I could look at the function declaration. Yes, I could 
read the docs too. But that doesn't prevent me from forgetting that a 
function takes a 'ref' parameter, and then doing the mistake again. The 
damage is done, and the time is wasted.

I think D should allow 'ref' on call sites to prevent these mistakes. 
For example:

string str = ...;
size_t pos;
auto chr = std.utf.decode(str, ref pos);

Now it's much more obvious that the parameter is passed by reference and 
is going to be mutated.

Ideally, this would not be optional, but rather *required*, but I 
realize that such a change would break a *lot* of code, so that's 
probably not a good idea.

Thoughts?

-- 
- Alex


More information about the Digitalmars-d mailing list