Mercurial Hosting > luan
diff src/luan/LuanTable.java @ 1542:d4407e8de707
disallow duplicates in table constructor
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Sun, 20 Sep 2020 15:53:58 -0600 |
parents | 2e8a5df45d56 |
children | e1a13e707bf3 |
line wrap: on
line diff
--- a/src/luan/LuanTable.java Sun Sep 13 15:50:52 2020 -0600 +++ b/src/luan/LuanTable.java Sun Sep 20 15:53:58 2020 -0600 @@ -202,13 +202,13 @@ throw new LuanException("invalid type "+Luan.type(h)+" for metamethod __new_index"); } - public void rawPut(Object key,Object val) throws LuanException { + public Object rawPut(Object key,Object val) throws LuanException { if( security != null ) Luan.checkSecurity(luan,"table",security,"put",key,val); - rawPut2(key,val); + return rawPut2(key,val); } - private void rawPut2(Object key,Object val) { + private Object rawPut2(Object key,Object val) { check(); Integer iT = Luan.asInteger(key); if( iT != null ) { @@ -219,13 +219,13 @@ list.add(val); mapToList(); } - return; + return null; } else if( i>=0 && i<list.size() ) { - list.set(i,val); + Object rtn = list.set(i,val); if( val == null ) { listToMap(i); } - return; + return rtn; } } } @@ -235,11 +235,13 @@ } if( val == null ) { if( map!=null ) - map.remove(key); + return map.remove(key); + else + return null; } else { if( map==null ) map = newMap(); - map.put(key,val); + return map.put(key,val); } }