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;
});

Reply via email to