[Issue 2916] New: struct constructor use syntax undocumented

d-bugmail at puremagic.com d-bugmail at puremagic.com
Thu Apr 30 03:09:03 PDT 2009


http://d.puremagic.com/issues/show_bug.cgi?id=2916

           Summary: struct constructor use syntax undocumented
           Product: D
           Version: 2.029
          Platform: PC
        OS/Version: Windows
            Status: NEW
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: bugzilla at digitalmars.com
        ReportedBy: steve.teale at britseyeview.com


This is probably just a documentation issue.

struct A
{
   int a;
   this(int n) { a = n; }
}

struct B
{
   int b;
   this(int n) { b = n; }
}

struct C
{
   A a;
   B b;
   this(int n, int m)
   {
      a = A(n);
      b = B(m);
   }
}


struct D
{
   A a;
   B b;
   this(int n, int m)
   {
      a(n);
      b(m);
   }
}

void main()
{
   C c = C(2, 3);
   writefln("C:a = %d, C:b = %d", c.a.a, c.b.b);

   D d = D(2, 3);
   writefln("D:a = %d, D:b = %d", d.a.a, d.b.b);
}

D is essentially the same as C, but uses a(n) instead of a = A(n).  Both
compile, but the former has no effect on the A member.

Output:
C:a = 2, C:b = 3
D:a = 0, D:b = 0

The documentation should mention the correct syntax, and explain what a(n)
means, or the compiler should object to that form.


-- 



More information about the Digitalmars-d-bugs mailing list