Consensus on goto's into catch blocks

Timon Gehr timon.gehr at gmx.ch
Thu Jun 13 12:43:49 PDT 2013


On 06/13/2013 08:50 PM, 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.

+1.


More information about the Digitalmars-d mailing list