2
0
Эх сурвалжийг харах

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

woollybah 11 жил өмнө
parent
commit
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 )