www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 16313] New: Duplicate symbol generated

https://issues.dlang.org/show_bug.cgi?id=16313

          Issue ID: 16313
           Summary: Duplicate symbol generated
           Product: D
           Version: D2
          Hardware: x86_64
                OS: Mac OS X
            Status: NEW
          Severity: major
          Priority: P1
         Component: dmd
          Assignee: nobody puremagic.com
          Reporter: jmalima69 gmail.com

The compiler generates duplicated symbols for "my_array" in the following code
snippet and causes the linker to fail. 
The issue is triggered by the circular reference in line 18 (which is perfectly
legal btw). Commenting that line and the error goes away. This issue is present
in 2.071.1 on OSX and windows at least, but not present in version 2.067.1, at
least not in OSX or linux.   

01  struct Foo {
02      int a;
03      immutable(Foo[])* b;
04      this(int _a, immutable(Foo[])* _b)
05      {
06          a = _a;
07          b = _b;
08      }
09      this(int _a)
10      {
11          this(_a, null);
12      }
13  };
14
15  immutable Foo[] my_array = [
16      Foo(1),
17      Foo(2),
18      Foo(3, &my_array),
19  ];
20
21  void main()
22  {
23      int a = my_array[0].a;
24  }

--
Jul 23 2016