Browse Source

minor fixes

Nicolas Cannasse 16 years ago
parent
commit
cd9716f045
4 changed files with 28 additions and 9 deletions
  1. 2 0
      doc/CHANGES.txt
  2. 19 4
      std/Type.hx
  3. 1 1
      std/haxe/io/Bytes.hx
  4. 6 4
      type.ml

+ 2 - 0
doc/CHANGES.txt

@@ -13,6 +13,8 @@ TODO :
 	flash9 : fixed some "never" property access issues
 	flash9 : fixed some "never" property access issues
 	all : added "never" property access support for all platforms
 	all : added "never" property access support for all platforms
 	js : small syntax fix with value-blocks
 	js : small syntax fix with value-blocks
+	js : fixed Type.enumEq with null values
+	js/flash8 : use &0xFF in haxe.io.Bytes.set
 
 
 2009-03-22: 2.03
 2009-03-22: 2.03
 	optimized Type.enumEq : use index instead of tag comparison for neko/flash9/php
 	optimized Type.enumEq : use index instead of tag comparison for neko/flash9/php

+ 19 - 4
std/Type.hx

@@ -678,9 +678,10 @@ class Type {
 			try {
 			try {
 				if( a.index != b.index )
 				if( a.index != b.index )
 					return false;
 					return false;
-				var p : Array<Dynamic> = a.params;
-				for( i in 0...p.length )
-					if( !enumEq(p[i],b.params[i]) )
+				var ap : Array<Dynamic> = a.params;
+				var bp : Array<Dynamic> = b.params;
+				for( i in 0...ap.length )
+					if( !enumEq(ap[i],bp[i]) )
 						return false;
 						return false;
 			} catch( e : Dynamic ) {
 			} catch( e : Dynamic ) {
 				return false;
 				return false;
@@ -702,7 +703,8 @@ class Type {
 			}
 			}
 		#elseif cpp
 		#elseif cpp
 			return a==b;
 			return a==b;
-		#else
+		#elseif flash
+			// no try-catch since no exception possible
 			if( a[0] != b[0] )
 			if( a[0] != b[0] )
 				return false;
 				return false;
 			for( i in 2...a.length )
 			for( i in 2...a.length )
@@ -711,6 +713,19 @@ class Type {
 			var e = a.__enum__;
 			var e = a.__enum__;
 			if( e != b.__enum__ || e == null )
 			if( e != b.__enum__ || e == null )
 				return false;
 				return false;
+		#else
+			try {
+				if( a[0] != b[0] )
+					return false;
+				for( i in 2...a.length )
+					if( !enumEq(a[i],b[i]) )
+						return false;
+				var e = a.__enum__;
+				if( e != b.__enum__ || e == null )
+					return false;
+			} catch( e : Dynamic ) {
+				return false;
+			}
 		#end
 		#end
 		return true;
 		return true;
 	}
 	}

+ 1 - 1
std/haxe/io/Bytes.hx

@@ -58,7 +58,7 @@ class Bytes {
 		#elseif cpp
 		#elseif cpp
 		untyped b[pos] = v;
 		untyped b[pos] = v;
 		#else
 		#else
-		b[pos] = v;
+		b[pos] = v & 0xFF;
 		#end
 		#end
 	}
 	}
 
 

+ 6 - 4
type.ml

@@ -492,11 +492,13 @@ let error l = raise (Unify_error l)
 
 
 let unify_access a1 a2 =
 let unify_access a1 a2 =
 	a1 = a2 || match a1, a2 with
 	a1 = a2 || match a1, a2 with
-	| NoAccess, NoAccess 
-	| NoAccess, MethodCantAccess
-	| NoAccess, NeverAccess
+	| NormalAccess, NoAccess
+	| NormalAccess, MethodCantAccess
+	| NormalAccess, NeverAccess
 	| MethodCantAccess, NoAccess
 	| MethodCantAccess, NoAccess
-	| NeverAccess, NoAccess -> true
+	| NeverAccess, NoAccess
+	| MethodCantAccess, NeverAccess
+	| NoAccess, NeverAccess -> true
 	| _ -> false
 	| _ -> false
 
 
 let eq_stack = ref []
 let eq_stack = ref []