pastojs: nicer for-loop srcmap

git-svn-id: trunk@37246 -
This commit is contained in:
Mattias Gaertner 2017-09-18 08:53:49 +00:00
parent b2796c13b6
commit f175619c7c

View File

@ -10172,7 +10172,7 @@ begin
ForSt:=TJSForStatement(CreateElement(TJSForStatement,El)); ForSt:=TJSForStatement(CreateElement(TJSForStatement,El));
List.B:=ForSt; List.B:=ForSt;
// add "LoopVar=<StartExpr>;" // add "LoopVar=<StartExpr>;"
SimpleAss:=TJSSimpleAssignStatement(CreateElement(TJSSimpleAssignStatement,El.StartExpr)); SimpleAss:=TJSSimpleAssignStatement(CreateElement(TJSSimpleAssignStatement,El.VariableName));
ForSt.Init:=SimpleAss; ForSt.Init:=SimpleAss;
if AContext.Resolver<>nil then if AContext.Resolver<>nil then
begin begin
@ -10185,17 +10185,17 @@ begin
SimpleAss.Expr:=ConvertElement(El.StartExpr,AContext); SimpleAss.Expr:=ConvertElement(El.StartExpr,AContext);
// add "LoopVar<=$loopend" // add "LoopVar<=$loopend"
if El.Down then if El.Down then
BinExp:=TJSRelationalExpressionGE(CreateElement(TJSRelationalExpressionGE,El.EndExpr)) BinExp:=TJSRelationalExpressionGE(CreateElement(TJSRelationalExpressionGE,El.VariableName))
else else
BinExp:=TJSRelationalExpressionLE(CreateElement(TJSRelationalExpressionLE,El.EndExpr)); BinExp:=TJSRelationalExpressionLE(CreateElement(TJSRelationalExpressionLE,El.VariableName));
ForSt.Cond:=BinExp; ForSt.Cond:=BinExp;
BinExp.A:=ConvertElement(El.VariableName,AContext); BinExp.A:=ConvertElement(El.VariableName,AContext);
BinExp.B:=CreateIdentifierExpr(CurLoopEndVarName,El.EndExpr,AContext); BinExp.B:=CreateIdentifierExpr(CurLoopEndVarName,El.EndExpr,AContext);
// add "LoopVar++" // add "LoopVar++"
if El.Down then if El.Down then
Incr:=TJSUnaryPostMinusMinusExpression(CreateElement(TJSUnaryPostMinusMinusExpression,El)) Incr:=TJSUnaryPostMinusMinusExpression(CreateElement(TJSUnaryPostMinusMinusExpression,El.VariableName))
else else
Incr:=TJSUnaryPostPlusPlusExpression(CreateElement(TJSUnaryPostPlusPlusExpression,El)); Incr:=TJSUnaryPostPlusPlusExpression(CreateElement(TJSUnaryPostPlusPlusExpression,El.VariableName));
ForSt.Incr:=Incr; ForSt.Incr:=Incr;
Incr.A:=ConvertElement(El.VariableName,AContext); Incr.A:=ConvertElement(El.VariableName,AContext);
// add body // add body
@ -10210,17 +10210,17 @@ begin
AddToStatementList(List,ListEnd,IfSt,El); AddToStatementList(List,ListEnd,IfSt,El);
// add "LoopVar>$loopend" // add "LoopVar>$loopend"
if El.Down then if El.Down then
GTExpr:=TJSRelationalExpressionLT(CreateElement(TJSRelationalExpressionLT,El)) GTExpr:=TJSRelationalExpressionLT(CreateElement(TJSRelationalExpressionLT,El.VariableName))
else else
GTExpr:=TJSRelationalExpressionGT(CreateElement(TJSRelationalExpressionGT,El)); GTExpr:=TJSRelationalExpressionGT(CreateElement(TJSRelationalExpressionGT,El.VariableName));
IfSt.Cond:=GTExpr; IfSt.Cond:=GTExpr;
GTExpr.A:=ConvertElement(El.VariableName,AContext); GTExpr.A:=ConvertElement(El.VariableName,AContext);
GTExpr.B:=CreateIdentifierExpr(CurLoopEndVarName,El.EndExpr,AContext); GTExpr.B:=CreateIdentifierExpr(CurLoopEndVarName,El.EndExpr,AContext);
// add "LoopVar--" // add "LoopVar--"
if El.Down then if El.Down then
Decr:=TJSUnaryPostPlusPlusExpression(CreateElement(TJSUnaryPostPlusPlusExpression,El)) Decr:=TJSUnaryPostPlusPlusExpression(CreateElement(TJSUnaryPostPlusPlusExpression,El.VariableName))
else else
Decr:=TJSUnaryPostMinusMinusExpression(CreateElement(TJSUnaryPostMinusMinusExpression,El)); Decr:=TJSUnaryPostMinusMinusExpression(CreateElement(TJSUnaryPostMinusMinusExpression,El.VariableName));
IfSt.BTrue:=Decr; IfSt.BTrue:=Decr;
Decr.A:=ConvertElement(El.VariableName,AContext); Decr.A:=ConvertElement(El.VariableName,AContext);
end; end;