Bug 2916 – struct constructor use syntax undocumented

Status
RESOLVED
Resolution
DUPLICATE
Severity
normal
Priority
P2
Component
dmd
Product
D
Version
D2
Platform
x86
OS
Windows
Creation time
2009-04-30T05:09:00Z
Last change time
2015-06-09T01:26:26Z
Keywords
accepts-invalid
Assigned to
nobody
Creator
steve.teale

Comments

Comment #0 by steve.teale — 2009-04-30T05:09:12Z
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.
Comment #1 by bugzilla — 2012-01-23T00:57:33Z
This is a compiler bug that a(n) is accepted, it is not a documentation problem.
Comment #2 by k.hara.pg — 2012-01-23T04:59:33Z
The constructor call from an instance is invalid. *** This issue has been marked as a duplicate of issue 6036 ***