Macro.hx 763 B

123456789101112131415161718192021222324252627282930313233343536
  1. import haxe.macro.Expr;
  2. import haxe.macro.Context;
  3. class Macro {
  4. static function init() {
  5. Context.onAfterInitMacros(() -> {
  6. function defineType(pack, kind) {
  7. Context.defineType({
  8. pos: (macro 0).pos,
  9. pack: pack,
  10. name: 'Test',
  11. kind: kind,
  12. fields: []
  13. });
  14. }
  15. function defineClass(pack) {
  16. defineType(pack, TDClass());
  17. }
  18. defineClass(["Module"]);
  19. defineClass(["pack", "Module"]);
  20. defineClass([""]);
  21. defineClass(["\n"]);
  22. defineClass(["pack\n"]);
  23. defineClass(["pack~"]);
  24. defineClass(["Foo", "Bar"]);
  25. defineClass(["0_class"]);
  26. defineType(["0_enum"], TDEnum);
  27. defineType(["0_structure"], TDStructure);
  28. defineType(["0_abstract"], TDAbstract(TPath({pack: [], name: "Int"})));
  29. });
  30. }
  31. }