[Issue 16313] New: Duplicate symbol generated

via Digitalmars-d-bugs digitalmars-d-bugs at puremagic.com
Sat Jul 23 00:11:35 PDT 2016


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 at puremagic.com
          Reporter: jmalima69 at 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  }

--


More information about the Digitalmars-d-bugs mailing list