[Issue 15166] [REG2.069-devel] spurious statement not reachable warning in static foreach loop
    via Digitalmars-d-bugs 
    digitalmars-d-bugs at puremagic.com
       
    Mon Oct 12 15:47:07 PDT 2015
    
    
  
https://issues.dlang.org/show_bug.cgi?id=15166
--- Comment #3 from Martin Nowak <code at dawg.eu> ---
I think something along this line could work.
override void visit(ConditionalStatement s)
{
    if (s.condition.include(null, null))
    {
        result = s.ifbody.blockExit(func, mustNotThrow);
        // mark as conditional fallthru, see Bugzilla 14835
        if (!s.elsebody) result |= BEconditional;
    }
    else if (s.elsebody)
        result = s.elsebody.blockExit(func, mustNotThrow);
    else
        result = BEfallthru;
}
if (!(result & (BEfallthru | BEconditional)) && !s.comeFrom())
{
    if (s.blockExit(func, mustNotThrow) != BEhalt && s.hasCode())
        s.warning("statement is not reachable");
}
But for this to work ConditionalStatement must no longer be flattened before
computing blockExit, thus making this change very big (and somewhat risky).
--
    
    
More information about the Digitalmars-d-bugs
mailing list