Mercurial Hosting > luan
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) {