Macro.hx 644 B

123456789101112131415161718192021222324252627282930
  1. #if macro
  2. import haxe.macro.Compiler;
  3. import haxe.macro.Context;
  4. import haxe.macro.Expr;
  5. class Macro {
  6. public static function initMacro() {
  7. Compiler.addGlobalMetadata("Main", "@:build(Macro.instrumentFields())", true, true, false);
  8. }
  9. static function instrumentFields():Null<Array<Field>> {
  10. var fields:Array<Field> = Context.getBuildFields();
  11. for (field in fields) {
  12. switch (field.kind) {
  13. case FFun(f):
  14. if (f.expr == null) {
  15. continue;
  16. }
  17. switch (f.expr.expr) {
  18. case EBlock(exprs):
  19. exprs.unshift(macro trace($v{field.name}));
  20. case _:
  21. }
  22. case _:
  23. }
  24. }
  25. return fields;
  26. }
  27. }
  28. #end