May 07, 2017 [Issue 17379] New: Mangle voldemort types as if they are defined in the outer scope to avoid exponential symbol name length with templates | ||||
---|---|---|---|---|
| ||||
https://issues.dlang.org/show_bug.cgi?id=17379 Issue ID: 17379 Summary: Mangle voldemort types as if they are defined in the outer scope to avoid exponential symbol name length with templates Product: D Version: D2 Hardware: All OS: All Status: NEW Severity: enhancement Priority: P1 Component: dmd Assignee: nobody@puremagic.com Reporter: georgid@outlook.com This is related to PR 15831. In this forum thread : http://forum.dlang.org/post/nhkje4$jlm$1@digitalmars.com there a workaround this removes the exponential growth with a linear growth. Example: auto foo(T)(T t) if (someConstraints) { static struct Result { T t; } return Result(t); } When changed to the functionally equivalent: template(T) foo if (someConstraints) { static struct Result { T t; } auto foo(T t) { return Result(t); } } The exponential growth is replaced with linear growth. It would be very good if DMD lowers the first case to the second when mangling voldemort types. -- |
Copyright © 1999-2021 by the D Language Foundation