On Monday, 8 June 2015 at 21:32:52 UTC, Timon Gehr wrote:
I think the body should have access to a scope that is hidden from the outside which contains the loop variable, but declarations should be inserted into the enclosing scope like for static if.

This would require some syntax to mark the declarations we want to expose. Maybe `out`?

This is far better than the mixin template approach, since it'll alert us early about conflicts:

    static foreach (ident; ["a", "b", "a"])
    {
        int mixin(ident ~ "1");
        out int mixin(ident ~ "2");
    }

`a1` is created twice, but that's OK since it isn't marked with `out`. `a2` is declared twice and raises a compilation error because it's marked with `out`. This will ensure these kind of errors are detected early and the compilation error points to the exact place of declaration.

Reply via email to