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