diff src/luan/interp/SetStmt.java @ 17:09d41f7490a8

add local variables git-svn-id: https://luan-java.googlecode.com/svn/trunk@18 21e917c8-12df-6dd8-5cb6-c86387c605b9
author fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9>
date Fri, 30 Nov 2012 11:46:34 +0000
parents 3b22ffbdb83a
children a7c13c6017f7
line wrap: on
line diff
--- a/src/luan/interp/SetStmt.java	Thu Nov 29 10:36:38 2012 +0000
+++ b/src/luan/interp/SetStmt.java	Fri Nov 30 11:46:34 2012 +0000
@@ -1,28 +1,15 @@
 package luan.interp;
 
-import java.util.List;
 import luan.Lua;
 import luan.LuaState;
 import luan.LuaException;
-import luan.LuaTable;
 
 
 final class SetStmt implements Stmt {
-
-	static class Var {
-		final Expr table;
-		final Expr key;
-
-		Var(Expr table,Expr key) {
-			this.table = table;
-			this.key = key;
-		}
-	}
-
-	private final Var[] vars;
+	private final Settable[] vars;
 	private final Expressions expressions;
 
-	SetStmt(Var[] vars,Expressions expressions) {
+	SetStmt(Settable[] vars,Expressions expressions) {
 		this.vars = vars;
 		this.expressions = expressions;
 	}
@@ -30,14 +17,9 @@
 	@Override public void eval(LuaState lua) throws LuaException {
 		final Object[] vals = expressions.eval(lua);
 		for( int i=0; i<vars.length; i++ ) {
-			Var var = vars[i];
-			Object t = var.table.eval(lua);
-			if( !(t instanceof LuaTable) )
-				throw new LuaException( "attempt to index a " + Lua.type(t) + " value" );
-			LuaTable tbl = (LuaTable)t;
-			Object key = var.key.eval(lua);
+			Settable var = vars[i];
 			Object val = i < vals.length ? vals[i] : null;
-			tbl.set(key,val);
+			var.set(lua,val);
 		}
 	}