Missed scope guard statements

Max Samukha maxsamukha at gmail.com
Fri Mar 7 00:52:38 PST 2008


Robert Fraser wrote:

> 
> Compile-time values could evaluate to true, and compile-time code
> generation could very easily create code that would seem silly to write
> directly. So it's a valid problem.
You are right, this is a problem.

Interestingly, mixing in the ThenStatement works fine:

----
if (true)
    mixin ("scope(exit) Stdout(\"hello \").newline;");
// prints hello as expected.
----

I guess, this is because a string mixin creates a new scope, which is a bug
(or a feature? The specification is not specific on that):

----
mixin ("scope(exit) Stdout(\"Exiting scope.\").newline;");
Stdout("After mixin").newline;
----

outputs:
Exiting mixin scope.
After mixin

while I would expect the reverse.

 



 



More information about the Digitalmars-d-bugs mailing list