Consensus on goto's into catch blocks
Brad Roberts
braddr at puremagic.com
Thu Jun 13 15:53:35 PDT 2013
On 6/13/13 12:22 PM, Iain Buclaw wrote:
> On Thursday, 13 June 2013 at 18:51:01 UTC, Brad Roberts wrote:
>> On 6/13/13 10:35 AM, Iain Buclaw wrote:
>>> Can someone remind me again what was last agreed when I brought this up?
>>>
>>> I seem to recall that this should be disallowed as is practically always a bug, also, and it skips
>>> any initialisation of the exception object. (See: http://dlang.org/statement.html - "It is illegal
>>> for a GotoStatement to be used to skip initializations.")
>>>
>>> Current failing test I want to have removed from the test suite.
>>>
>>> test/runnable/eh.d:
>>> void test8()
>>> {
>>> int a;
>>> goto L2; // gdc Error: cannot goto into catch block
>>>
>>> try {
>>> a += 2;
>>> }
>>> catch (Exception e) {
>>> a += 3;
>>> L2: ;
>>> a += 100;
>>> }
>>> assert(a == 100);
>>> }
>>>
>>>
>>> Thanks
>>> Iain.
>>
>> I think it should be illegal, but not because it's a catch block but because of the initialization.
>> If the catch was just "catch (Exception)" then it shouldn't be illegal.
>
> This could be easily possible to do, and still keep 100% safe. But I must still ask why why why,
> Delilah, would you do that?
Oh, just minimizing what's illegal. _I_ wouldn't do that.
More information about the Digitalmars-d
mailing list