浏览代码

[js] incapsulate untyped access from haxe.Serializer.serialize to make analyzer not ignore the whole function

Dan Korostelev 10 年之前
父节点
当前提交
34640bae82
共有 1 个文件被更改,包括 4 次插入2 次删除
  1. 4 2
      std/haxe/Serializer.hx

+ 4 - 2
std/haxe/Serializer.hx

@@ -261,7 +261,7 @@ class Serializer {
 				#if (flash9 || python)
 				var v : Array<Dynamic> = v;
 				#end
-				var l = #if (neko || flash9 || php || cs || java || python) v.length #elseif cpp v.__length() #else v[untyped "length"] #end;
+				var l = #if (neko || flash9 || php || cs || java || python) v.length #elseif cpp v.__length() #else __getField(v, "length") #end;
 				for( i in 0...l ) {
 					if( v[i] == null )
 						ucount++;
@@ -496,7 +496,7 @@ class Serializer {
 			} else
 				serializeString(v[0]);
 			buf.add(":");
-			var l = v[untyped "length"];
+			var l = __getField(v, "length");
 			buf.add(l - 2);
 			for( i in 2...l )
 				serialize(v[i]);
@@ -516,6 +516,8 @@ class Serializer {
 		}
 	}
 
+	@:extern inline function __getField(o:Dynamic, f:String):Dynamic return untyped o[f];
+
 	public function serializeException( e : Dynamic ) {
 		buf.add("x");
 		#if flash9