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.).