On Sunday, 18 March 2012 at 12:10:23 UTC, F i L wrote:
Tove wrote:
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 if x!() pumps out a constructor, how do you add multiple
attributes with @GC.NoScan? The constructors would collide.
1. x! would parse all decls at compile time...
2. all attributes that need to modify the constructor is inserted
at the points where the x! enabled constructors are
declared/implemented...
x!("@GC.NoScan @GC.Hot @attribute(Serializable.yes) int value;");
x!(q{this()
{
/* everything from 'x' is auto inserted here */
my;
normal;
constructor;
tokens;
});