package macros; import haxe.macro.Context; import haxe.macro.Expr; using Lambda; class DCEHack { public static final classes:Array = []; macro static public function dceInclude():Array { #if !display var localClass = Context.getLocalClass(); if (localClass == null) { return Context.getBuildFields(); } // Ignore abstract classes if (localClass.get().isAbstract) { return Context.getBuildFields(); } classes.push(Context.getLocalType()); #end return Context.getBuildFields(); } macro static public function dceGenerateCreate() { var exprs = []; for (c in classes) { switch (c) { case TInst(_.get() => t, _): var path:TypePath = {pack: t.pack, name: t.name}; exprs.push(macro new $path()); default: Context.error("Unknown type: " + c, Context.currentPos()); } } return macro return $a{exprs}; } }