D-Programming-Language/dmd — pull request #1086 by mleise (2012-08-15 10:32:51+00:00)
Title: fix for #4082

Bug: http://d.puremagic.com/issues/show_bug.cgi?id=4082

The finally block of a try-finally wasn't checked in blockExit(). This may have had other symptoms as well, but it is difficult to search bugzilla in that fashion. In this case it didn't bubble up that the destructor of a struct throws, when the surrounding function was labeled nothrow.
The other fix concerns the automatically inserted try-finally for by-value parameters that have a destructor that has to be called before function exit. A quick check on the destructor call now determines if any destructor invalidates nothrow. It is a copy and paste from the original nothrow-check a few pages further up.