[Issue 1894] scope(exit) is ignored except in compound statements
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Sat May 22 14:21:45 PDT 2010
http://d.puremagic.com/issues/show_bug.cgi?id=1894
--- Comment #5 from Don <clugdbug at yahoo.com.au> 2010-05-22 14:21:41 PDT ---
An interim patch:
To patch the worst instance of this ( if (xxx) scope(exit) yyy;
creating a error which recommends scope(exit) if (xxx) yyy; ),
add IsScopeGuardStatement() to Statement and OnScopeStatement, and then
add the following lines to statement.c 2300 (IfStatement::semantic())
// If we can short-circuit evaluate the if statement, don't do the
// semantic analysis of the skipped code.
// This feature allows a limited form of conditional compilation.
condition = condition->optimize(WANTflags);
+ if (ifbody->IsScopeGuardStatement() ) {
+ OnScopeStatement *onsc = ifbody->IsScopeGuardStatement();
+ IfStatement *iff = new IfStatement(loc, arg, condition,
onsc->statement, elsebody);
+ error("Use of ScopeGuardStatement in otherwise empty scope. Did you
mean\n%s",
+ (new OnScopeStatement(onsc->loc, onsc->tok, iff))->toChars());
+ }
--
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