Neither of the if's compile: int foo() { char[] s; if (s) { } if (s == null) { } if (s is null) { } if (s == "") { } if (s.length) { } return 0; } void main() { static x = foo(); } If s is initialized to a literal, only the last two if's compile successfully.
When filing bugs, please include the error messages rather than merely stating that something doesn't compile. bz1375.d(30): Error: cannot evaluate foo() at compile time
I wish the error message was informative enough to be worth writing. Anyway, thanks for pointing that out.
Another example of probably same bug: char[] copy(char[] x) { char[] ret; foreach(c; x) { ret ~= c; } return ret; } pragma(msg, copy(``)); Error: test_ext.d(83): pragma msg string expected for message, not 'null' Can work around by changing char[] ret; to char[] ret = ``;
This works for me in 1.039.
This works in DMD2.027 and DMD1.042.
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル