On Friday, 11 March 2016 at 12:10:53 UTC, Artur Skawina wrote:
On 03/11/16 09:21, Ali Çehreli via Digitalmars-d-learn wrote:
You've been bitten by a common usability issue. :)
On 03/11/2016 12:02 AM, Fynn Schröder wrote:
static if (is(U == ubyte)) {
} else if (is(U == ushort)) {
You mean 'else static if'. (Not your fault: I (and others)
wish the compiler warned about this problem.)
It can not warn about this "problem" - because it's a perfectly
fine and relatively common construct (a RT check guarded by a CT
check).
It can first deprecate and later disallow
static if(...) ... else if(...) ...
It's always possible (and IMO preferable) to write the clearer
static if(...) { ... } else { if(...) ... }
It already does this for similar error-prone cases, e.g.
if(...) ;
while(...) ;
// Error: use '{ }' for an empty statement, not a ';'