Aleksandr Kuzmenko 5 years ago
parent
commit
fe57add119

+ 4 - 2
tests/server/src/cases/display/issues/Issue9449.hx

@@ -7,8 +7,10 @@ class Issue9449 extends DisplayTestCase {
 			public function new() {}
 		}
 
-		function main() {
-			Macro.f(new C(), {{-1-}});
+		class Main {
+			static public function main() {
+				Macro.f(new C(), {{-1-}});
+			}
 		}
 	**/
 	function test(_) {

+ 30 - 28
tests/server/test/templates/issues/Issue9449/Macro.hx

@@ -5,34 +5,36 @@ import haxe.macro.Type;
 using haxe.macro.Tools;
 #end
 
-macro function f(a, b) {
-	var t = Context.typeof(a);
-	var ct = generateDerivedType(t);
-	var r = macro @:pos(b.pos) ($b : $ct);
-	return r;
-}
+class Macro {
+	macro public static function f(a, b) {
+		var t = Context.typeof(a);
+		var ct = generateDerivedType(t);
+		var r = macro @:pos(b.pos) ($b : $ct);
+		return r;
+	}
 
-#if macro
-function generateDerivedType(t:Type):ComplexType {
-	var cl = switch (t) {
-		case TInst(_.get() => cl, _): cl;
-		case _: throw "nope";
-	};
+	#if macro
+	static function generateDerivedType(t:Type):ComplexType {
+		var cl = switch (t) {
+			case TInst(_.get() => cl, _): cl;
+			case _: throw "nope";
+		};
 
-	var derivedName = cl.name + "__Derived";
-	try {
-		Context.getType(derivedName);
-	} catch (e) {
-		var derivedFields:Array<Field> = [for (f in cl.fields.get()) {pos: f.pos, name: f.name, kind: FVar(f.type.toComplexType()), meta: [{name: ":optional", pos: f.pos}]}];
-		Context.defineType({
-			pos: cl.pos,
-			pack: [],
-			name: derivedName,
-			kind: TDStructure,
-			fields: derivedFields,
-		}, cl.module);
-	}
+		var derivedName = cl.name + "__Derived";
+		try {
+			Context.getType(derivedName);
+		} catch (e) {
+			var derivedFields:Array<Field> = [for (f in cl.fields.get()) {pos: f.pos, name: f.name, kind: FVar(f.type.toComplexType()), meta: [{name: ":optional", pos: f.pos}]}];
+			Context.defineType({
+				pos: cl.pos,
+				pack: [],
+				name: derivedName,
+				kind: TDStructure,
+				fields: derivedFields,
+			}, cl.module);
+		}
 
-	return TPath({pack: [], name: derivedName});
-}
-#end
+		return TPath({pack: [], name: derivedName});
+	}
+	#end
+}