digitalmars.D.bugs - [Issue 7240] New: Possibilities of throwing Throwable should be calculated
- d-bugmail puremagic.com (28/46) Jan 06 2012 http://d.puremagic.com/issues/show_bug.cgi?id=7240
http://d.puremagic.com/issues/show_bug.cgi?id=7240 Summary: Possibilities of throwing Throwable should be calculated Product: D Version: D2 Platform: All OS/Version: All Status: NEW Severity: enhancement Priority: P2 Component: DMD AssignedTo: nobody puremagic.com ReportedBy: k.hara.pg gmail.com --- Comment #0 from Kenji Hara <k.hara.pg gmail.com> 2012-01-06 09:20:03 PST --- (This issue is derived from bug 7232) In following code, statement #1 throws no exception, so #2 is never reachable. But current dmd cannot detect it, bool addArticle() { scope(failure) return false; // #2 return true; // #1 } My technical note from http://d.puremagic.com/issues/show_bug.cgi?id=7232#c2Maybe, the original issue by Robert Clipsham is "unreachable scope(failure) should warn "statement is not reachable" _with line number_. But today it is technically enhancement. Because: 1. Current D2 dmd does only check Exception throwing possibilities in flow analysis. That means Throwable is not the target of the analysis. In above code, scope(failure) return false; return true; // (a) dmd does not consider the statement (a) throws Throwable or not. 2. scope(failure) catches Throwable object and rethrow it. Therefore the scope(failure) statement is always analysed as *may be reachable*. From the two reasons, current dmd cannot detect that the `scope(failure) return false;` is not reachable.I think dmd should also calculate the Throwable flow, not only the Exception flow (it is related to 'nothrow' attribute). -- Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email ------- You are receiving this mail because: -------
Jan 06 2012