فهرست منبع

Lua: use a map to gather fields in reflection, avoid dupes from prototypes

Justin Donaldson 9 سال پیش
والد
کامیت
0f777723a4
1فایلهای تغییر یافته به همراه3 افزوده شده و 3 حذف شده
  1. 3 3
      std/lua/_std/Type.hx

+ 3 - 3
std/lua/_std/Type.hx

@@ -132,17 +132,17 @@ enum ValueType {
 
 	public static function getInstanceFields( c : Class<Dynamic> ) : Array<String> {
 		var p : Dynamic = untyped c.prototype;
-		var a = [];
+		var a = new Map<String,Dynamic>();
 		while (p != null){
 			var pfields : lua.Table<Int, Dynamic>  = untyped p.__fields__;
 			for (f in Reflect.fields(pfields)){
-				a.push(f);
+				a.set(f, true);
 			}
 			var mt = lua.Lua.getmetatable(p);
 			if (mt != null && mt.__index != null ) p = mt.__index;
 			else p = null;
 		}
-		return a;
+		return [for (f in a.keys()) f];
 	}
 
 	public static function getClassFields( c : Class<Dynamic> ) : Array<String> {