Use numbers in numeric for loop.
This commit is contained in:
@@ -667,20 +667,20 @@ public class JavaCodeGen {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void visit(NumericFor stat) {
|
public void visit(NumericFor stat) {
|
||||||
String javaname = javascope.getJavaName(stat.name.variable);
|
String j = javascope.getJavaName(stat.name.variable);
|
||||||
String indexname = stat.name.variable.isupvalue? javaname+"$0": javaname;
|
String i = j+"$0";
|
||||||
outi("for ( LuaValue "
|
outi("for ( double "
|
||||||
+indexname+"="+evalLuaValue(stat.initial)+", "
|
+i+"="+evalLuaValue(stat.initial)+".todouble(), "
|
||||||
+javaname+"$limit="+evalLuaValue(stat.limit));
|
+j+"$limit="+evalLuaValue(stat.limit)+".todouble()");
|
||||||
String stepname = "ONE";
|
if ( stat.step == null )
|
||||||
if ( stat.step!=null )
|
outr( "; "+i+"<="+j+"$limit; ++"+i+" ) {" );
|
||||||
out(", "+(stepname=javaname+"$step")+"="+evalLuaValue(stat.step));
|
else {
|
||||||
outr( "; "
|
out( ", "+j+"$step="+evalLuaValue(stat.step)+".todouble()");
|
||||||
+indexname+".testfor_b("+javaname+"$limit,"+stepname+"); "
|
out( "; "+j+"$step>0? ("+i+"<="+j+"$limit): ("+i+">="+j+"$limit);" );
|
||||||
+indexname+"="+indexname+".add("+stepname+") ) {" );
|
outr( " "+i+"+="+j+"$step ) {" );
|
||||||
|
}
|
||||||
addindent();
|
addindent();
|
||||||
if ( stat.name.variable.isupvalue )
|
singleLocalDeclareAssign(stat.name, "valueOf("+i+")");
|
||||||
this.singleLocalDeclareAssign(stat.name, indexname);
|
|
||||||
super.visit(stat.block);
|
super.visit(stat.block);
|
||||||
oute( "}" );
|
oute( "}" );
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user