[Issue 2140] New: static if as final statement with no code causes containing code to be skipped
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Tue Jun 3 11:53:15 PDT 2008
http://d.puremagic.com/issues/show_bug.cgi?id=2140
Summary: static if as final statement with no code causes
containing code to be skipped
Product: D
Version: 1.027
Platform: PC
OS/Version: Windows
Status: NEW
Keywords: wrong-code
Severity: normal
Priority: P2
Component: DMD
AssignedTo: bugzilla at digitalmars.com
ReportedBy: jarrett.billingsley at gmail.com
Hard to describe.
---------------------
void foo()
{
Stdout.formatln("I'm transient.");
static if(true)
{
// Comment me.
Stdout.formatln("true.");
}
else
{
}
}
void main(char[][] args)
{
foo();
}
---------------------
This code prints
I'm transient.
true.
As expected.
Comment the "comment me" line, however, and the "I'm transient" is never
printed.
Alternatively, change the "static if(true)" to "static if(false)" and the same
thing happens since the 'else' is empty.
Ways to make it go away:
- Have at least one statement in the static if clause that is selected. Even a
no-op statement such as "int x = void;".
- Have more than one statement before the static if.
- Have at least one statement after the static if.
I'm really kind of flabbergasted.
--
More information about the Digitalmars-d-bugs
mailing list