[Issue 14694] Functions nested within functions need their body in the generated .di file
https://issues.dlang.org/show_bug.cgi?id=14694 RazvanN changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED --
[Issue 14694] Functions nested within functions need their body in the generated .di file
https://issues.dlang.org/show_bug.cgi?id=14694 --- Comment #4 from RazvanN --- PR: https://github.com/dlang/dmd/pull/14529 --
[Issue 14694] Functions nested within functions need their body in the generated .di file
https://issues.dlang.org/show_bug.cgi?id=14694 RazvanN changed: What|Removed |Added CC||razvan.nitu1...@gmail.com Severity|enhancement |normal --
[Issue 14694] Functions nested within functions need their body in the generated .di file
https://issues.dlang.org/show_bug.cgi?id=14694 Vladimir Panteleev thecybersha...@gmail.com changed: What|Removed |Added CC||thecybersha...@gmail.com --- Comment #2 from Vladimir Panteleev thecybersha...@gmail.com --- (In reply to Walter Bright from comment #1) Instead of asking people to carefully examine moderately complex code looking for a mistake, and wondering how many and which you mean, please be explicit. Is it not obvious? Here: (In reply to Andrei Alexandrescu from comment #0) 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; } These two nested functions (min and max) have a body. 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); Here, the bodies of the nested functions was stripped. 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). --
[Issue 14694] Functions nested within functions need their body in the generated .di file
https://issues.dlang.org/show_bug.cgi?id=14694 Walter Bright bugzi...@digitalmars.com changed: What|Removed |Added CC||bugzi...@digitalmars.com --- Comment #1 from Walter Bright bugzi...@digitalmars.com --- (In reply to Andrei Alexandrescu from comment #0) Obviously that's not going to work for more than one reason :o). Instead of asking people to carefully examine moderately complex code looking for a mistake, and wondering how many and which you mean, please be explicit. --
[Issue 14694] Functions nested within functions need their body in the generated .di file
https://issues.dlang.org/show_bug.cgi?id=14694 --- Comment #3 from Andrei Alexandrescu and...@erdani.com --- (In reply to Walter Bright from comment #1) (In reply to Andrei Alexandrescu from comment #0) Obviously that's not going to work for more than one reason :o). Instead of asking people to carefully examine moderately complex code looking for a mistake, and wondering how many and which you mean, please be explicit. Well it won't work because it's impossible to define a nested function outside the function it's in. So the definition must go there. --
[Issue 14694] Functions nested within functions need their body in the generated .di file
https://issues.dlang.org/show_bug.cgi?id=14694 Andrei Alexandrescu and...@erdani.com changed: What|Removed |Added Blocks||14680 --