On Saturday, October 06, 2012 20:02:13 denizzzka wrote: > huh, text should be from upper letter: Assert, Debug
No. Those are wrong. The code compiles, but those versions don't exist, so they're not compiled in. A version(Assert) or version(Debug) block will never be compiled in unless you define those versions. version(assert) is correct. For instance, this prints "yes" without -release and "no" with -release: import std.stdio; void main() { version(assert) { writeln("yes"); } else { writeln("no"); } } I am not seeing a compilation error with your example. What version of the compiler are you using? Maybe version(assert) is new (I'd never heard of it before), and your compiler is too old. The only reason that you would see an error due to an invalid version identifier would be if it's a keyword which isn't valid as a version identifier (e.g. debug). The fact that the compiler doesn't know about a version identifier doesn't produce an error. That just means that that particular block of code isn't compiled in. And debug isn't a valid version. It's not even in the list. The correct thing to do is to a use a debug block. For instance, this code import std.stdio; void main() { debug { writeln("yes"); } else { writeln("no"); } } will print "yes" when you compile with -debug and "no" otherwise. - Jonathan M Davis