digitalmars.D.bugs - [Issue 13229] New: RangeError in inlined function prints wrong
- via Digitalmars-d-bugs (46/46) Jul 30 2014 https://issues.dlang.org/show_bug.cgi?id=13229
https://issues.dlang.org/show_bug.cgi?id=13229 Issue ID: 13229 Summary: RangeError in inlined function prints wrong module name (but right line) Product: D Version: D2 Hardware: All OS: All Status: NEW Severity: normal Priority: P1 Component: DMD Assignee: nobody puremagic.com Reporter: gassa mail.ru When a range violation occurs in an inlined function, the error message mentions the module which calls that function, not the module where it is defined. However, the line number corresponds to the file where the function is defined. As this points to a wrong line of the source, the error can be very confusing the first time you encounter it. It surely looks like "debug capabilities broken". -----caller.d----- module caller; import other; // lines 3-5 contain no code void main () { fun (2); } ----- -----other.d----- module other; int [2] x; void fun (int i) { x[i]++; } ----- When we run "dmd caller.d other.d", we get the correct message: core.exception.RangeError other.d(4): Range violation However, add -inline, as in "dmd -inline caller.d other.d", and we see the error: core.exception.RangeError caller.d(4): Range violation As you can see, line 4 of caller.d contains only a comment and so can not generate any errors. This is reproducible for me on DMD 2.065.0 and DMD 2.066.0-b6 on Win32 and Win64. --
Jul 30 2014