On 6/29/20 6:31 PM, Arjan wrote:
void main()
   import std.stdio;
   auto f = (){
     string[] t;
     { // inner scope
       t ~= "hello";
       scope( exit ) t ~= "world";
     } // inner scope exit
     return t;

   f().writeln; // ["hello", "world"]
removing the inner scope in f() gives ["hello"]

So when no inner scope is present, the scope exit 'runs' after the return? Is that indeed expected behavior according to the specification?

Yes. The return statement is inside the scope of the function, so it runs before the scope is exited. Are you saying the spec doesn't say that?


Reply via email to