[Issue 7240] New: Possibilities of throwing Throwable should be calculated
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Fri Jan 6 09:20:04 PST 2012
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 at puremagic.com
ReportedBy: k.hara.pg at gmail.com
--- Comment #0 from Kenji Hara <k.hara.pg at 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#c2
>
> Maybe, 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: -------
More information about the Digitalmars-d-bugs
mailing list