scope failure
Regan Heath
regan at netwin.co.nz
Tue Jun 20 14:35:22 PDT 2006
On Tue, 20 Jun 2006 08:59:53 -0700, BCS <BCS at pathlink.com> wrote:
> Sorry for that empty post <:-P
>
> What might be happening (under 0.160) is that under some conditions DMD
> will insert an assert(0) at then end of a function to catch the
> no-return-statement bug. It's not supposed to do that with a void
> function but who knows.
I thought that at first, but there are 2 scopes involved. The main
function and a 2nd scope inside it. The scope(failure) is inside the 2nd
scope so should trigger if there is an exception in that scope, not if
there is one in main. I added a return value to double check :)
Regan
>
> nobody wrote:
>> In article <optbfpq9sx23k2f5 at nrage>, Regan Heath says...
>>
>>> On Tue, 20 Jun 2006 07:52:00 +0000 (UTC), nobody
>>> <nobody_member at pathlink.com> wrote:
>>>
>>>> i try to learn the scope statements.
>>>>
>>>> import std.stdio;
>>>>
>>>> void main() {
>>>> {
>>>> scope(failure) writefln("5");
>>>> //writefln("Hallo");
>>>> }
>>>> }
>>>>
>>>> The output from the program is 5. If i comment the writefln in, then
>>>> it only
>>>> print Hallo.
>>>> Is this the correct behavier?
>>>> I have thougt scope(failure) will only execute when the scope exit
>>>> abnormaly by throw. The 5 should never be occur by thi example.
>>>
>>> It seems to trigger when the scope is empty, putting any other valid
>>> statement in the scope with the scope(failure) statement stops the
>>> output of "5". I suspect this is a bug.
>>>
>>> Regan
>> He, funny
>> Under dmd 161, it run correct now.
>> Thank you
>>
More information about the Digitalmars-d-learn
mailing list