comparison core/src/luan/impl/SetTableEntry.java @ 572:f1601a4ce1aa

fix stack when calling meta-methods
author Franklin Schmidt <fschmidt@gmail.com>
date Sun, 12 Jul 2015 21:34:23 -0600
parents e3fb9768dbb3
children 7c3ad6db8ac3
comparison
equal deleted inserted replaced
571:cd944b010f25 572:f1601a4ce1aa
23 @Override public void set(LuanStateImpl luan,Object value) throws LuanException { 23 @Override public void set(LuanStateImpl luan,Object value) throws LuanException {
24 newIndex( luan, tableExpr.eval(luan), keyExpr.eval(luan), value ); 24 newIndex( luan, tableExpr.eval(luan), keyExpr.eval(luan), value );
25 } 25 }
26 26
27 private void newIndex(LuanStateImpl luan,Object t,Object key,Object value) throws LuanException { 27 private void newIndex(LuanStateImpl luan,Object t,Object key,Object value) throws LuanException {
28 LuanBit bit = luan.bit(el());
28 if( t instanceof LuanTable ) { 29 if( t instanceof LuanTable ) {
29 LuanTable tbl = (LuanTable)t; 30 LuanTable tbl = (LuanTable)t;
30 tbl.put(luan,key,value); 31 tbl.put(bit,key,value);
31 return; 32 return;
32 } 33 }
33 LuanBit bit = luan.bit(el());
34 if( t != null && luan.hasJava() ) 34 if( t != null && luan.hasJava() )
35 JavaLuan.__new_index(bit,t,key,value); 35 JavaLuan.__new_index(bit,t,key,value);
36 else 36 else
37 throw bit.exception( "attempt to index a " + Luan.type(t) + " value in '"+bit.el.text()+"'" ); 37 throw bit.exception( "attempt to index a " + Luan.type(t) + " value in '"+bit.el.text()+"'" );
38 } 38 }