On Saturday, 9 August 2014 at 11:51:06 UTC, Idan Arye wrote:
On Saturday, 9 August 2014 at 00:17:07 UTC, Jonathan M Davis
wrote:
I suspect that it says that because someone complained about
the error talking about finally when they had used scope(exit)
and not finally. The fact that scope statements get lower to
try-catch-finally blocks allow for a few screwy things that
were not intended. Whether those things will be left in or
made illegal at this point is another matter, but I'm sure
that it was never the intention that anyone be allowed to
return from any kind of scope statement or do anything else
which would cause the exception to not be rethrown.
- Jonathan M Davis
If that was the case, the error would have said it's illegal to
throw from "finally or scope bodies". The fact that it
specifically specifies `scope(exit)` and `scope(success)` and
leave out `scope(failure)` means that whoever wrote that error
message made a conscious decision that it's OK to return in
`scope(failure)`.
Nope. The current wording of the error message resp. the source
code for handling it simply resulted from a conservative fix for
rewrite internals being leaked into the diagnostics:
https://issues.dlang.org/show_bug.cgi?id=6889
In other words, nobody made a "conscious decision" that it is
okay to return in scope(failure). It's just a consequence from
the fact that it is rewritten into a catch block instead of
finally {} like the others.
Cheers,
David