diff core/src/luan/modules/StringLuan.java @ 509:e3b0846dc2ef

throw exception for invalid indexes of string, binary, or java
author Franklin Schmidt <fschmidt@gmail.com>
date Fri, 22 May 2015 02:02:49 -0600
parents 92c3d22745b8
children 2da0bcb979b5
line wrap: on
line diff
--- a/core/src/luan/modules/StringLuan.java	Thu May 21 20:20:54 2015 -0600
+++ b/core/src/luan/modules/StringLuan.java	Fri May 22 02:02:49 2015 -0600
@@ -10,11 +10,13 @@
 import luan.LuanElement;
 import luan.LuanException;
 import luan.LuanMethod;
+import luan.LuanBit;
 
 
 public final class StringLuan {
 
-	public static Object __index(LuanState luan,final String s,Object key) throws LuanException {
+	public static Object __index(LuanBit bit,final String s,Object key) throws LuanException {
+		LuanState luan = bit.luan;
 		LuanTable mod = (LuanTable)PackageLuan.require(luan,"luan:String");
 		Object obj = mod.get(luan,key);
 		if( obj instanceof LuanFunction ) {
@@ -28,9 +30,15 @@
 				}
 			};
 		}
-		if( luan.hasJava() )
-			return JavaLuan.__index(luan,s,key);
-		return null;
+		if( luan.hasJava() ) {
+			Object rtn = JavaLuan.__index(luan,s,key);
+			if( rtn != JavaLuan.FAIL )
+				return rtn;
+		}
+		if( bit.el != null )
+			throw bit.exception( "invalid index ["+luan.toString(key)+"] for string ("+bit.el.text()+")" ) ;
+		else
+			throw bit.exception( "invalid index ["+luan.toString(key)+"] for string") ;
 	}
 
 	static int start(String s,int i) {