>> >While we're in the same general area, why wasn't the exit statement
>> >permitted to exit a block statement?
>> Having spent a lot of effort to get this to work, I can assure that
>> is no such limitation in Ada 83 or in Ada 95.
>I think you may have misinterpreted the question.
>I suspect the question was why can't you use "exit foo;" to go to
>the statement immediately following the end of the enclosing block
>named foo, since blocks can have labels just like loops?
>I.e., why is "exit" only defined for loops?
Having seen your answer, I think you are correct.
I think of a block more or less like an if statement, and I don't think in
terms of "exiting" such things. (Loops are special; you have to break the
iteration somehow, or you go on forever.) What you're thinking of is more
like "return" to me, but calling it that wouldn't be possible.
In any case, I think we both agree that such things aren't worth the
effort. A few well-placed Gotos handle the rare cases where this is
Having said how useless I find a block exit statement, I just noticed that
all 5 gotos in Claw (to two labels) are essentially block exits. The
labels are on the line after the end of a block, and
the gotos go there. Perhaps it would have been useful! :)