On Tuesday, 30 June 2020 at 12:18:14 UTC, Steven Schveighoffer
wrote:
I can see where it would be confusing, and it could probably
contain an example and clarification.
https://issues.dlang.org/show_bug.cgi?id=20997
On Tuesday, 30 June 2020 at 12:18:14 UTC, Steven Schveighoffer
wrote:
On 6/30/20 2:56 AM, Arjan wrote:
On Monday, 29 June 2020 at 22:47:16 UTC, Steven Schveighoffer
wrote:
[...]
Thanks for the assurance. The spec does state it like this:
```
The ScopeGuardStatement executes NonEmptyOrScopeBlo
On 6/30/20 2:56 AM, Arjan wrote:
On Monday, 29 June 2020 at 22:47:16 UTC, Steven Schveighoffer wrote:
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?
Thanks for the assurance. The spec does state i
On Monday, 29 June 2020 at 22:47:16 UTC, Steven Schveighoffer
wrote:
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?
Thanks for the assurance. The spec does state it like this:
```
The ScopeGuardSta
On Monday, 29 June 2020 at 22:31:12 UTC, Arjan wrote:
So when no inner scope is present, the scope exit 'runs' after
the return? Is that indeed expected behavior according to the
specification?
Yes. A scope ends at the '}'. Destructors and scope guards
execute then, after the return.
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 sc
```
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