Mercurial Hosting > luan
diff src/luan/interp/NumericForStmt.java @ 40:e3624b7cd603
implement stack trace
git-svn-id: https://luan-java.googlecode.com/svn/trunk@41 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Fri, 21 Dec 2012 10:45:54 +0000 |
parents | c3eab5a3ce3c |
children | 57054fa43189 |
line wrap: on
line diff
--- a/src/luan/interp/NumericForStmt.java Thu Dec 20 02:54:06 2012 +0000 +++ b/src/luan/interp/NumericForStmt.java Fri Dec 21 10:45:54 2012 +0000 @@ -3,16 +3,18 @@ import luan.Lua; import luan.LuaNumber; import luan.LuaException; +import luan.LuaSource; -final class NumericForStmt implements Stmt { +final class NumericForStmt extends CodeImpl implements Stmt { private final int iVar; private final Expr fromExpr; private final Expr toExpr; private final Expr stepExpr; private final Stmt block; - NumericForStmt(int iVar,Expr fromExpr,Expr toExpr,Expr stepExpr,Stmt block) { + NumericForStmt(LuaSource.Element se,int iVar,Expr fromExpr,Expr toExpr,Expr stepExpr,Stmt block) { + super(se); this.iVar = iVar; this.fromExpr = fromExpr; this.toExpr = toExpr; @@ -21,9 +23,9 @@ } @Override public void eval(LuaStateImpl lua) throws LuaException { - double v = Lua.checkNumber( fromExpr.eval(lua) ).value(); - double limit = Lua.checkNumber( toExpr.eval(lua) ).value(); - double step = Lua.checkNumber( stepExpr.eval(lua) ).value(); + double v = lua.checkNumber( se, fromExpr.eval(lua) ).value(); + double limit = lua.checkNumber( se, toExpr.eval(lua) ).value(); + double step = lua.checkNumber( se, stepExpr.eval(lua) ).value(); try { while( step > 0.0 && v <= limit || step < 0.0 && v >= limit ) { lua.stackSet( iVar, new LuaNumber(v) );