Consensus on goto's into catch blocks

Iain Buclaw ibuclaw at ubuntu.com
Thu Jun 13 12:22:47 PDT 2013


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?


More information about the Digitalmars-d mailing list