[Issue 2943] New: Struct copying in presence of alias member this	only copies alias this member
    d-bugmail at puremagic.com 
    d-bugmail at puremagic.com
       
    Tue May  5 16:40:56 PDT 2009
    
    
  
http://d.puremagic.com/issues/show_bug.cgi?id=2943
           Summary: Struct copying in presence of alias member this only
                    copies alias this member
           Product: D
           Version: 2.029
          Platform: PC
        OS/Version: Windows
            Status: NEW
          Keywords: wrong-code
          Severity: critical
          Priority: P2
         Component: DMD
        AssignedTo: bugzilla at digitalmars.com
        ReportedBy: dsimcha at yahoo.com
When a struct has a member that is alias this'd and that struct is assigned the
value of another struct of the same type, only the member of the struct that is
alias this'd is copied.  Apparently, D tries conversion via alias this *before*
assigning as the full struct.  
Marking this as critical because it can lead to extremely subtle, hard to find
bugs in user code with absolutely no warning.
import std.stdio;
struct Foo {
    int a;
    int b;
    alias b this;
}
void main() {
    Foo foo, foo2;
    foo.a = 1;
    foo.b = 2;
    foo2.a = 3;
    foo2.b = 4;
    writeln(foo2.a, "\t", foo2.b);  // 3    4
    foo2 = foo;
    writeln(foo2.a, "\t", foo2.b);  // 3    2
}
-- 
    
    
More information about the Digitalmars-d-bugs
mailing list