improving scope(finally/success)
    Tomer Filiba via Digitalmars-d 
    digitalmars-d at puremagic.com
       
    Thu Dec  3 03:41:29 PST 2015
    
    
  
it'd be really helpful if scope() statements got hold of the 
return value or exception, e.g.,
scope(success, retval) {
     writeln("the retval is", retval)
}
scope(failure, ex) {
     if(typeid(ex) == typeid(MyException)) {
         callTheCops();
     }
}
it would make logging very easy, and since these statements are 
basically code-rewrites i don't suppose it would be hard to 
implement. from a syntax point of view:
scope(succes[, VARNAME])    // where VARNAME would be the return 
value (a const tmp variable?)
scope(failure[, VARNAME])   // where VARNAME would be hold the 
exception (a Throwable)
i mean, code such as
int f() {
     scope(exit) writeln("bye");
     return 5;
}
is rewritten as something like
int f() {
     try {
         auto tmp = 5;
     }
     finally {
         writeln("bye");
     }
     return tmp;
}
so `tmp` is already there for the finally clause (modulo scoping 
issues)
    
    
More information about the Digitalmars-d
mailing list