On Monday, 30 January 2017 at 15:15:55 UTC, Stefan Koch wrote:
New bugs incoming:
uint fn(uint a)
{
final switch(a)
{
case 1 : {
while(a < 20)
// bool whileCondition;
// WhileBlockEvalCond :
// whileCondition = (a < 20);
{
// WhileBlockBegin:
a++;
if (a == 17) break;
/*
WhlieBlockEnd:
if(!whileCondition)
goto WhileBlockAfter
// break seems to go here :-/
goto WhileBlockEvalCond;
// break should go here!
*/
}
// WhileBlockAfter:
return a;
}
}
return 1;
}
pragma(msg, fn(1)); // should print 17
when executed with with newCTFE this will print 20
This bug is fixed now!!
it was a simple oversight were the mechanism I build to deal with
this was simply not invoked.
Luckily not a failure of the mechanism itself.