Heh, I just tried to outsmart the compiler by mixing in a version declaration from another file, but it complains about version being defined after use. E.g. ctfe.d: version = foo; main.d: mixin(import("ctfe.d")); version(foo) // won't fly, version foo defined after use { }