The code: void main() { return true; } Results in the compiler error: test.d(3): Error: long has no effect in expression (true) Which makes sense, but doesn't really indicate the reasoning very well. Shouldn't it be instead downgraded to a warning? ie - based on GCC's message: test.c:(3): Warning: ignoring return value in function returning void This currently blocks some old D software from building (that, I know, should really be updated. :) Regards Iain
1. Walter hates warnings. He pretty much thinks that everything should either be an error or not. So, you're generally going to have a hard time getting him to make anything a warning. 2. Returning a value from a void function is outright incorrect. It's not that it _might_ be incorrect or that it _might_ cause errors. It is _definitely_ incorrect. I have no idea why gcc wouldn't make that an outright error. It should be. Then again, C is historically lax about a lot of things that you'd think that it would consider errors, so that's probably why. Still, I see no reason to make D match gcc is this regard. D makes the correct choice here.
(In reply to comment #1) > 1. Walter hates warnings. He pretty much thinks that everything should either > be an error or not. So, you're generally going to have a hard time getting him > to make anything a warning. > I beg to differ, but it's his language, so he is allowed to enforce that. > 2. Returning a value from a void function is outright incorrect. It's not that > it _might_ be incorrect or that it _might_ cause errors. It is _definitely_ > incorrect. I have no idea why gcc wouldn't make that an outright error. It > should be. Then again, C is historically lax about a lot of things that you'd > think that it would consider errors, so that's probably why. Still, I see no > reason to make D match gcc is this regard. D makes the correct choice here. OK then, when the package maintainer goes chasing up my street for the software affected by the update, I'll let him know it's his fault. ;-) I still think this should be a diagnostic bug though, as the error message does not relate in any way to what the programmer is trying to do.
(In reply to comment #2) > I still think this should be a diagnostic bug though, as the error message does > not relate in any way to what the programmer is trying to do. Or accidentally did.
This is always bug, no need for warnings here. The error message is indeed wrong, on it I have bug 3922 So I think this bug report may be closed.
Thanks, marked as dupe. :-) *** This issue has been marked as a duplicate of issue 3922 ***