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: [email protected]
Reporter: [email protected]
This is related to PR 15831.
In this forum thread :
http://forum.dlang.org/post/[email protected]
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.
--