Notes from C++ static analysis
Adam D. Ruppe
destructionator at gmail.com
Wed Jun 26 12:07:30 PDT 2013
On Wednesday, 26 June 2013 at 18:54:17 UTC, H. S. Teoh wrote:
>> import std.stdio;
>> void main() {
>> size_t x = 10;
>> writefln("%d", x, x);
>> }
>>
>> In a modern statically typed language I'd like such code to
>> give a compile-time error.
>
> This looks like a bug to me. Please file one. :)
Not necessarily, since you might want a format string to be a
runtime variable, like when doing translations. I could live with
there being another function that does runtime though.
Things might be confusing too because of positional parameters
(%1$d). You might offer something that isn't necessarily used:
config.dateFormat = "%3$d/%2$d";
writeln(config.dateFormat, year, month, day);
> Anyway, in the end I decided that naming member function
> arguments after member variables is a Very Stupid Idea,
Blargh, I do it a lot. But I would be ok with the lhs of a member
when there's a parameter of the same name requiring that you call
it this.x.
> How would the compiler catch such cases in general, though? I
> mean, like in arbitrarily complex boolean expressions.
The Microsoft compiler warned about it, after constant folding,
working out to if(1).
I'm a little concerned that it would complain about some false
positives though, which can be quite deliberate in D, like
if(__ctfe).
More information about the Digitalmars-d
mailing list