closes #12030
@@ -161,6 +161,8 @@ class ExprTools {
var v2:Var = {name: v.name, type: v.type, expr: opt(v.expr, f)};
if (v.isFinal != null)
v2.isFinal = v.isFinal;
+ if (v.isStatic != null)
+ v2.isStatic = v.isStatic;
ret.push(v2);
}
EVars(ret);
@@ -0,0 +1,26 @@
+package unit.issues;
+
+import utest.Assert;
+@:build(unit.issues.misc.Issue12030Macro.build())
+private class Foo {
+ public function new() {}
+ public function bar() {
+ static var last = 0;
+ if (last == 0) {
+ last = 1;
+ return 'A';
+ } else {
+ return 'B';
+ }
+}
+class Issue12030 extends Test {
+ function test() {
+ var foo = new Foo();
+ eq('A', foo.bar());
+ eq('B', foo.bar());
@@ -0,0 +1,16 @@
+package unit.issues.misc;
+class Issue12030Macro {
+ public static function build() {
+ var fields = haxe.macro.Context.getBuildFields();
+ function identity(e)
+ return haxe.macro.ExprTools.map(e, identity);
+ for (f in fields)
+ switch f.kind {
+ case FFun(f):
+ f.expr = identity(f.expr);
+ case _:
+ };
+ return fields;