dmd test.d -w warning - Error: statement is not reachable === test.d === void foo() { assert(0); return 0; }
Please remember to assign keywords to bug reports. To everybody reading this: Please look through issues you've reported and check for missing keywords. This error is also an instance of issue 952.
It also hapens in more complicated situations. Out of curriosity I added -w to my project, and found few this "warning - Error: statment is not reachble" statments, and compilation failed. I have no idea where the problem is exactly, because this is big projects, with many templates. What is interesting for some of this warning i have lines numbers like: warning - corod.d(389): Error: statement is not reachable but for most: warning - Error: statement is not reachable And i can't find good rule when I have line number and when i don't. Small example: $ dmd2 -w A.d warning - Error: statement is not reachable === A.d ==== class A { void f() { while (true) {} return 0; } }
I forgot to add in my last Comment, that I'm using DMD 2.032
This is because statement.c, line 3515, at the end of ReturnStatement::semantic() sets loc to zero. //---- if (exp && tbret->ty == Tvoid && !implicit0) { /* Replace: * return exp; * with: * exp; return; */ Statement *s = new ExpStatement(loc, exp); exp = NULL; s = s->semantic(sc); - loc = 0; return new CompoundStatement(loc, s, this); } return this; }
changeset 364
Fixed dmd 1.057 and 2.041
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル