Use numbers in numeric for loop.

This commit is contained in:
James Roseborough
2010-07-26 15:49:06 +00:00
parent aa095fef27
commit 0af7d04b46

View File

@@ -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( "}" );
} }