浏览代码

Eachin should explicitly cast to the type of the loop variable.

woollybah 11 年之前
父节点
当前提交
c6290a9c35
共有 1 个文件被更改,包括 2 次插入2 次删除
  1. 2 2
      parser.bmx

+ 2 - 2
parser.bmx

@@ -149,7 +149,7 @@ Type TForEachinStmt Extends TLoopStmt
 '				block.stmts.AddFirst New TDeclStmt.Create( varTmp )
 
 				' local variable
-				Local varTmp:TLocalDecl=New TLocalDecl.Create( varid,varty,nextObjExpr )
+				Local varTmp:TLocalDecl=New TLocalDecl.Create( varid,varty,New TCastExpr.Create( varty, nextObjExpr,CAST_EXPLICIT ) )
 
 				' local var as expression
 				Local expr:TExpr=New TVarExpr.Create( varTmp )
@@ -165,7 +165,7 @@ Type TForEachinStmt Extends TLoopStmt
 				block.stmts.AddFirst New TIfStmt.Create( expr,thenBlock,elseBlock )
 				block.stmts.AddFirst New TDeclStmt.Create( varTmp )
 			Else
-				block.stmts.AddFirst New TAssignStmt.Create( "=",New TIdentExpr.Create( varid ),nextObjExpr )
+				block.stmts.AddFirst New TAssignStmt.Create( "=",New TIdentExpr.Create( varid ),New TCastExpr.Create( varty, nextObjExpr,CAST_EXPLICIT ) )
 			EndIf
 
 			Local whileStmt:TWhileStmt=New TWhileStmt.Create( hasNextExpr,block,Null )