On Sunday, 18 March 2012 at 10:50:14 UTC, F i L wrote:
x("@attribute(Serializable.yes) int a");

Sure, but there's still the issue of using attributes for codegen. For instance compare:

    struct Test {
        @GC.NoScan int value;
    }

to, the current:

    struct Test {
        int value;
        this() { GC.setAttr(&value, NO_SCAN); }
    }

How can we do that with mixin templates? If attributes where a language type the compiler could exploit in a consistent way, It would be *trivial* describing this behavior in a declarative way.

Hmm... well if the x declarations store all NoScan objects in a collection, it could be injected into the constructor token stream later...

x!("@GC.NoScan int value;");

// modified by x to insert a foreach with GC.setAttr
x!(q{this() {/* foreach(...) GC.setAttr(...); */ });

But I guess one lose the opportunity for some compile time magic... in a more efficient way than exposed by the GC.settAttr API.(just pure speculation, I don't have sufficient knowledge of the internal representation of our GC design.).



Reply via email to