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);
 		}
 	}