diff --git a/.gitignore b/.gitignore index ace37e6..68ab983 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,4 @@ /hscript.swf /release.zip + +tests/bin/* \ No newline at end of file diff --git a/hscript/macros/ClassExtendMacro.hx b/hscript/macros/ClassExtendMacro.hx index a3551b1..9127306 100644 --- a/hscript/macros/ClassExtendMacro.hx +++ b/hscript/macros/ClassExtendMacro.hx @@ -144,12 +144,16 @@ class ClassExtendMacro { //trace(getModuleName(cl)); + var hasNew = false; + for(_field in [fields.copy(), superFields.copy()]) for(f in _field) { if (f == null) continue; - if (f.name == "new") + if (f.name == "new") { + hasNew = true; continue; + } if (f.name.startsWith(FUNC_PREFIX)) continue; if (f.access.contains(ADynamic) || f.access.contains(AStatic) || f.access.contains(AExtern) || f.access.contains(AInline)) @@ -257,6 +261,13 @@ class ClassExtendMacro { } } + var totalFields = definedFields.length; + + if(totalFields == 0 && !hasNew) { + //Sys.println(cl.pack.join(".") + "." + cl.name + ", " + totalFields); + return fields; + } + shadowClass.kind = TDClass({ pack: cl.pack.copy(), name: cl.name @@ -423,7 +434,7 @@ class ClassExtendMacro { __custom__variables.set(name, val); return val; } - return super.hset(this, name); + return super.hset(name, val); } } else { macro {