pu$�le
    Jonathan M Davis 
    jmdavisprog at gmail.com
       
    Sun Jul 18 19:30:22 PDT 2010
    
    
  
On Sunday 18 July 2010 19:14:11 strtr wrote:
> I'm not sure whether you missed my point or are simple thinking out loud
> about unreachable code being a warning.
> My point was that the unreachable warning was wrong as there is no
> unreachable code.
Except that there _is_. You just can't see it. scope(X) creates a try-catch 
block. So,
scope(exit) whatever;
/* code */
becomes
try
{
*/ code */
}
finally
{
    whatever;
}
scope(success) whatever;
/* code */
becomes
/* code */
whatever;
scope(failure) whatever;
/* code */
becomes
try
{
/* code */
}
catch(Exception e)
{
    whatever;
    throw e;
}
So, something like
scope(failure) continue;
/* code */
becomes
try
{
    /* code */
}
catch(Exception e)
{
    continue;
    throw e;
}
The throw statement is then unreachable. So, the warning is correct. The problem 
is that it's not clear. Ideally, you would have a warning which specifically 
mentions the fact that you can't do that sort of thing in a scope statement. 
Unless the programmer is thinking about what exactly scope() becomes, the 
unreachable statement warning will be confusing. So, that's a problem. It is, 
however, correct. It probably merits its own bug report.
- Jonathan M Davis
    
    
More information about the Digitalmars-d-learn
mailing list