瀏覽代碼

fixed Array.splice

Nicolas Cannasse 15 年之前
父節點
當前提交
ee4e406e00
共有 3 個文件被更改,包括 12 次插入1 次删除
  1. 1 0
      doc/CHANGES.txt
  2. 4 1
      std/neko/NekoArray__.hx
  3. 7 0
      tests/unit/TestBasetypes.hx

+ 1 - 0
doc/CHANGES.txt

@@ -27,6 +27,7 @@
 	all : fixed StringTools.hex with negative numbers
 	flash9 : fixed Type.typeof(1<<28) was TFloat
 	flash9 : use flash.XML parser for Xml class implementation
+	neko : fixed Array.splice (was not setting null at end of array)
 
 2010-01-09: 2.05
 	js : added js.Scroll

+ 4 - 1
std/neko/NekoArray__.hx

@@ -260,8 +260,11 @@ class NekoArray__<T> implements Array<T> {
 			var a = this.__a;
 			var ret = Array.new1(__dollar__asub(a,pos,len),len);
 			var end = pos + len;
-			__dollar__ablit(a,pos,a,end,this.length-end);
+			var count = this.length-end;
+			__dollar__ablit(a,pos,a,end,count);
 			this.length -= len;
+			while( --count >= 0 )
+				a[end + count] = null;
 			return ret;
 		}
 	}

+ 7 - 0
tests/unit/TestBasetypes.hx

@@ -17,6 +17,13 @@ class TestBasetypes extends Test {
 		eq( a[0], 1 );
 		eq( a[1], 3 );
 		eq( a[2], null );
+
+		var a : Array<Null<Int>> = [1,2,3];
+		a.splice(1,1);
+		eq( a.length, 2 );
+		eq( a[0], 1 );
+		eq( a[1], 3 );
+		eq( a[2], null );
 	}
 
 	function testString() {