why scope(success)?

Sean Kelly sean at f4.ca
Thu May 11 09:19:08 PDT 2006


Ben Hinkle wrote:
> "Stewart Gordon" <smjg_1998 at yahoo.com> wrote in message 
> news:e3vkhn$1kq5$1 at digitaldaemon.com...
>> James Dunne wrote:
>> <snip>
>>> Then the implementation according to D's language specs is incorrect. 
>>> Nothing is mentioned about new scopes created by if-statements or 
>>> while-statements.  New scopes are only created from block { } statements 
>>> when inside a function body.  Scope is mentioned (in passing) for the 
>>> for-statement; the initializer is noted as a special case.  Did I miss a 
>>> blanket statement somewhere else in the docs about this?
>> I think you're meant to use a bit of common sense here.  What sense does 
>> it make for a declaration to be conditional at runtime?
>>
>> To be honest, I think a naked declaration as the body of a runtime control 
>> statement should be illegal.
> 
> You're probably right. I had tried dmc and cl and they both complained about 
> the use of 'a' without a declaration but in fact I was expecting an error 
> that a declaration can't be the body of an 'if' statement. Since both 
> compiler didn't say boo about the declaration I figured that declarations 
> are considered statements. The C99 spec doesn't consider a declaration a 
> statement so I suspect the compilers are giving poor errors. 

What about this:

     if( auto i = doSomething() )
         printError( i );

I don't think anyone would expect 'i' to survive after the printError 
expression.


Sean



More information about the Digitalmars-d mailing list