| 123456789101112131415161718192021222324252627282930313233343536373839 | import haxe.macro.Compiler;import haxe.macro.Context;import haxe.macro.Expr;import haxe.macro.Expr.Field;class Main {    static function main() OldClass.define();}#if !macro@:build(OldClass.build())#end@:native("NewClass")class OldClass {	#if !macro	public function new() {};	#end	macro public static function define():Expr return macro new OldClass();	macro static function build():Array<Field>	{		var defined = false;		Context.onAfterTyping(_ -> {			if (defined) return;			Context.defineType(				macro class NewClass {					public function new() {}				}			);			defined = true;		});		Context.onGenerate(_ -> Compiler.exclude('OldClass'));		return null;	}}
 |