On Jul 25, 11 03:44, Shahid wrote:
I've been using the WithStatement alot recently and there's a situation
that's really bugging me.

my code is similar to the following:

struct Struct
{
        enum Enum1 { A, B, C }
        enum Enum2 { D, E, F }

        ...
}

T foo( ... )
{
        with ( Struct )
        {
                bar( Enum1.A );
                ...
                ...
        }
}

I'm wondering what others think about extending the WithStatement to take
a colon, which would create an implicit scope similar to how Attributes
work. eg:

T func( ... )
{
        with ( Struct ):
        
        bar( Enum1.A );
        ...
        ...
}

@property string usingNamespace(S)() {
    string res = "";
    enum prefix = "alias " ~ S.stringof ~ '.';
    foreach (m; __traits(allMembers, S)) {
        res ~= prefix ~ m ~ ' ' ~ m ~ ';';
    }
    return res;
}

struct Struct {
        enum Enum1 { A, B, C }
        enum Enum2 { D, E, F }
}

void main() {
    mixin(usingNamespace!Struct);
    auto a = Enum1.A;
    auto b = Enum2.F;
}


Reply via email to