浏览代码

TestReflect passing

Nicolas Cannasse 9 年之前
父节点
当前提交
6231f8667a
共有 2 个文件被更改,包括 12 次插入3 次删除
  1. 6 2
      src/std/cast.c
  2. 6 1
      src/std/fun.c

+ 6 - 2
src/std/cast.c

@@ -299,12 +299,16 @@ HL_PRIM vdynamic* hl_value_cast( vdynamic *v, hl_type *t ) {
 }
 
 HL_PRIM bool hl_type_check( hl_type *t, vdynamic *value ) {
+	if( t->kind == HDYN )
+		return true;
 	if( value == NULL )
 		return false;
 	if( t == value->t )
 		return true;
-	switch( TK2(t->kind,value->t->kind) ) {
-	}
+	if( t->kind == HF64 && value->t->kind == HI32 )
+		return true;
+	if( t->kind == HI32 && value->t->kind == HF64 && (int)value->v.d == value->v.d )
+		return true;
 	return hl_safe_cast(value->t, t);
 }
 

+ 6 - 1
src/std/fun.c

@@ -83,13 +83,18 @@ HL_PRIM vdynamic* hl_call_method( vdynamic *c, varray *args ) {
 }
 
 bool hl_fun_compare( vdynamic *a, vdynamic *b ) {
+	vclosure *ca, *cb;
 	if( a == b )
 		return true;
 	if( !a || !b )
 		return false;
 	if( a->t->kind != b->t->kind || a->t->kind != HFUN )
 		return false;
-	if( ((vclosure*)a)->fun != ((vclosure*)b)->fun )
+	ca = (vclosure*)a;
+	cb = (vclosure*)b;
+	if( ca->fun != cb->fun )
+		return false;
+	if( ca->hasValue && ca->value != cb->value )
 		return false;
 	return true;
 }