diff core/src/luan/modules/JavaLuan.java @ 404:d55e873e1f0d

metatables now only apply to tables
author Franklin Schmidt <fschmidt@gmail.com>
date Wed, 29 Apr 2015 07:04:40 -0600
parents 62b457c50594
children b31d614343e8
line wrap: on
line diff
--- a/core/src/luan/modules/JavaLuan.java	Tue Apr 28 22:49:33 2015 -0600
+++ b/core/src/luan/modules/JavaLuan.java	Wed Apr 29 07:04:40 2015 -0600
@@ -143,8 +143,9 @@
 		}
 	}
 
-	public static void __newindex(LuanState luan,Object obj,Object key,Object value) throws LuanException {
-		checkJava(luan);
+	public static boolean __newindex(LuanState luan,Object obj,Object key,Object value) throws LuanException {
+		if( !luan.currentEnvironment().hasJava() )
+			return false;
 		if( obj instanceof Static ) {
 			if( key instanceof String ) {
 				String name = (String)key;
@@ -155,7 +156,7 @@
 					if( members.size() != 1 )
 						throw new RuntimeException("not field '"+name+"' of "+obj);
 					setMember(obj,members,value);
-					return;
+					return true;
 				}
 			}
 			throw luan.exception("invalid member '"+key+"' for: "+obj);
@@ -165,7 +166,7 @@
 			Integer i = Luan.asInteger(key);
 			if( i != null ) {
 				Array.set(obj,i,value);
-				return;
+				return true;
 			}
 			throw luan.exception("invalid member '"+key+"' for java array: "+obj);
 		}
@@ -176,7 +177,7 @@
 				if( members.size() != 1 )
 					throw new RuntimeException("not field '"+name+"' of "+obj);
 				setMember(obj,members,value);
-				return;
+				return true;
 			}
 		}
 		throw luan.exception("invalid member '"+key+"' for java object: "+obj);