digitalmars.D.bugs - [Issue 23904] New: Spurious "struct [...] already exists"
- d-bugmail puremagic.com (59/59) May 07 2023 https://issues.dlang.org/show_bug.cgi?id=23904
https://issues.dlang.org/show_bug.cgi?id=23904 Issue ID: 23904 Summary: Spurious "struct [...] already exists" Product: D Version: D2 Hardware: All OS: All Status: NEW Keywords: rejects-valid Severity: normal Priority: P1 Component: dmd Assignee: nobody puremagic.com Reporter: dlang-bugzilla thecybershadow.net //////////// test.d /////////// template f1(alias fun) { struct UnusedButConflicting { } auto f1() { } } template f2(T) { alias fun = {}; auto f2(auto ref T) { f1!fun(); } } auto f3(T)(T value) { f2(value); } void main() { f2(5); f3(5); } /////////////////////////////// Output: test.d(3): Error: struct `test.f1!(function () { } ).UnusedButConflicting` already exists at test.d(3). Perhaps in another function with the same name? test.d(18): Error: template instance `test.f1!(function () { } )` error instantiating test.d(24): instantiated from here: `f2!int` test.d(30): instantiated from here: `f3!int` ----- I think the "auto ref" is somehow to blame. The type is the same, but the "auto ref" is instantiated to with/without ref, which seems to cause two UnusedButConflicting instances with the same mangling? --
May 07 2023