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

Reply via email to