Prechádzať zdrojové kódy

no for...in on dynamic

Nicolas Cannasse 18 rokov pred
rodič
commit
8268b641e0

+ 4 - 1
std/haxe/Serializer.hx

@@ -214,7 +214,8 @@ class Serializer {
 				buf.add("h");
 			case cast List:
 				buf.add("l");
-				for( i in v.iterator() )
+				var v : List<Dynamic> = v;
+				for( i in v )
 					serialize(i);
 				buf.add("h");
 			case cast Date:
@@ -223,6 +224,7 @@ class Serializer {
 				buf.add(d.toString());
 			case cast Hash:
 				buf.add("b");
+				var v : Hash<Dynamic> = v;
 				for( k in v.keys() ) {
 					serializeString(k);
 					serialize(v.get(k));
@@ -230,6 +232,7 @@ class Serializer {
 				buf.add("h");
 			case cast IntHash:
 				buf.add("q");
+				var v : IntHash<Dynamic> = v;
 				for( k in v.keys() ) {
 					buf.add(":");
 					buf.add(k);

+ 1 - 0
std/haxe/Template.hx

@@ -327,6 +327,7 @@ class Template {
 				throw "Cannot iter on " + v;
 			}
 			stack.push(context);
+			var v : Iterator<Dynamic> = v;
 			for( ctx in v ) {
 				context = ctx;
 				run(loop);

+ 1 - 1
std/haxe/remoting/SocketProtocol.hx

@@ -97,7 +97,7 @@ class SocketProtocol {
 		return null;
 	}
 
-	public function messageLength( c1 : Int, c2 : Int ) {
+	public function messageLength( c1 : Int, c2 : Int ) : Null<Int> {
 		var e1 = decodeChar(c1);
 		var e2 = decodeChar(c2);
 		if( e1 == null || e2 == null )

+ 2 - 0
typer.ml

@@ -1741,6 +1741,8 @@ and type_expr ctx ?(need_val=true) (e,p) =
 				| _ ->
 					error "The field iterator is not a method" e1.epos
 			)
+		| TDynamic _ ->
+			error "You can't iterate on a Dynamic value, please specify Iterator or Iterable" e1.epos;
 		| _ ->
 			unify ctx e1.etype t e1.epos;
 			e1