D's greatest mistakes
    Andrei Alexandrescu 
    SeeWebsiteForEmail at erdani.org
       
    Mon Nov 29 13:43:01 PST 2010
    
    
  
On 11/29/10 3:25 PM, Manfred_Nowak wrote:
> Daniel Gibson wrote:
>
>> "with" shouldn't be much of a problem anymore.
>
> import std.stdio;
> struct X{ int a, b, c;}
> struct Y{ int a, b;}
> void main(){
>    X x;
>    Y y;
>    with( x){
>      c= 2;
>      with( y){
>        c= 1;
>      }
>    }
>    writeln( x.c);
> }
>
> Do you see the not "much of a problem"?
>
> -manfred
Great. Could you please submit this as a bug report?
In essence with should work as if this code was written:
with (value) statement
becomes
{
   auto field1 = value.field1;
   auto field2 = value.field1;
   ...
   auto fieldn = value.fieldn;
   statement
}
The rewritten code is not equivalent because the field names are really 
references, but they must obey the same visibility rules. If the 
rewritten code has any shadowing errors, the use of with should also be 
in error.
Andrei
    
    
More information about the Digitalmars-d
mailing list