https://issues.dlang.org/show_bug.cgi?id=14694
Issue ID: 14694 Summary: Functions nested within functions need their body in the generated .di file Product: D Version: D2 Hardware: All OS: All Status: NEW Severity: enhancement Priority: P1 Component: dmd Assignee: nob...@puremagic.com Reporter: and...@erdani.com Obvious in retrospect. Repro picked from std.array: inout(T)[] overlap(T)(inout(T)[] r1, inout(T)[] r2) @trusted pure nothrow { alias U = inout(T); static U* max(U* a, U* b) nothrow { return a > b ? a : b; } static U* min(U* a, U* b) nothrow { return a < b ? a : b; } auto b = max(r1.ptr, r2.ptr); auto e = min(r1.ptr + r1.length, r2.ptr + r2.length); return b < e ? b[0 .. e - b] : null; } After .di generation: pure nothrow @trusted inout(T)[] overlap(T)(inout(T)[] r1, inout(T)[] r2) { alias U = inout(T); static nothrow U* max(U* a, U* b); static nothrow U* min(U* a, U* b); auto b = max(r1.ptr, r2.ptr); auto e = min(r1.ptr + r1.length, r2.ptr + r2.length); return b < e ? b[0..e - b] : null; } Obviously that's not going to work for more than one reason :o). --