Mercurial Hosting > luan
changeset 112:f5af13062b10
fix previous rev
git-svn-id: https://luan-java.googlecode.com/svn/trunk@113 21e917c8-12df-6dd8-5cb6-c86387c605b9
author | fschmidt@gmail.com <fschmidt@gmail.com@21e917c8-12df-6dd8-5cb6-c86387c605b9> |
---|---|
date | Fri, 23 May 2014 22:52:39 +0000 |
parents | 2428ecfed375 |
children | 8c706d6eb5dc |
files | src/luan/LuanBit.java src/luan/interp/EqExpr.java src/luan/interp/FnCall.java src/luan/interp/IndexExpr.java src/luan/interp/LeExpr.java src/luan/interp/LenExpr.java src/luan/interp/ReturnStmt.java src/luan/interp/SetTableEntry.java src/luan/interp/UnmExpr.java src/luan/lib/BasicLib.java src/luan/lib/HtmlLib.java src/luan/lib/JavaLib.java src/luan/lib/MathLib.java src/luan/lib/PackageLib.java src/luan/lib/StringLib.java src/luan/lib/TableLib.java |
diffstat | 16 files changed, 43 insertions(+), 40 deletions(-) [+] |
line wrap: on
line diff
--- a/src/luan/LuanBit.java Fri May 23 20:40:05 2014 +0000 +++ b/src/luan/LuanBit.java Fri May 23 22:52:39 2014 +0000 @@ -16,7 +16,11 @@ return new LuanException(this,msg); } - public Object call(LuanFunction fn,String fnName,Object... args) throws LuanException { + public Object call(LuanFunction fn,String fnName) throws LuanException { + return call(fn,fnName,LuanFunction.EMPTY); + } + + public Object call(LuanFunction fn,String fnName,Object[] args) throws LuanException { List<StackTraceElement> stackTrace = luan.stackTrace; stackTrace.add( new StackTraceElement(el,fnName) ); try { @@ -49,14 +53,14 @@ public String toString(Object obj) throws LuanException { LuanFunction fn = getHandlerFunction("__tostring",obj); if( fn != null ) - return checkString( Luan.first( call(fn,"__tostring",obj) ) ); + return checkString( Luan.first( call(fn,"__tostring",new Object[]{obj}) ) ); return Luan.toString(obj); } public String repr(Object obj) throws LuanException { LuanFunction fn = getHandlerFunction("__repr",obj); if( fn != null ) - return checkString( Luan.first( call(fn,"__repr",obj) ) ); + return checkString( Luan.first( call(fn,"__repr",new Object[]{obj}) ) ); String repr = Luan.repr(obj); if( repr==null ) throw exception( "value '" + obj + "' doesn't support repr()" ); @@ -90,14 +94,14 @@ } LuanFunction fn = getBinHandler("__lt",o1,o2); if( fn != null ) - return Luan.toBoolean( Luan.first(call(fn,"__lt",o1,o2)) ); + return Luan.toBoolean( Luan.first(call(fn,"__lt",new Object[]{o1,o2})) ); throw exception( "attempt to compare " + Luan.type(o1) + " with " + Luan.type(o2) ); } public Object arithmetic(String op,Object o1,Object o2) throws LuanException { LuanFunction fn = getBinHandler(op,o1,o2); if( fn != null ) - return Luan.first(call(fn,op,o1,o2)); + return Luan.first(call(fn,op,new Object[]{o1,o2})); String type = Luan.toNumber(o1)==null ? Luan.type(o1) : Luan.type(o2); throw exception("attempt to perform arithmetic on a "+type+" value"); }
--- a/src/luan/interp/EqExpr.java Fri May 23 20:40:05 2014 +0000 +++ b/src/luan/interp/EqExpr.java Fri May 23 22:52:39 2014 +0000 @@ -35,6 +35,6 @@ return null; LuanBit bit = luan.bit(se); LuanFunction fn = bit.checkFunction(f); - return Luan.toBoolean( Luan.first(bit.call(fn,"__eq",o1,o2)) ); + return Luan.toBoolean( Luan.first(bit.call(fn,"__eq",new Object[]{o1,o2})) ); } }
--- a/src/luan/interp/FnCall.java Fri May 23 20:40:05 2014 +0000 +++ b/src/luan/interp/FnCall.java Fri May 23 22:52:39 2014 +0000 @@ -25,7 +25,7 @@ private Object call(LuanStateImpl luan,Object o) throws LuanException { if( o instanceof LuanFunction ) { LuanFunction fn = (LuanFunction)o; - return luan.bit(se).call( fn, fnName, args.eval(luan) ); + return luan.bit(se).call( fn, fnName, Luan.array(args.eval(luan)) ); } Object h = luan.getHandler("__call",o); if( h != null )
--- a/src/luan/interp/IndexExpr.java Fri May 23 20:40:05 2014 +0000 +++ b/src/luan/interp/IndexExpr.java Fri May 23 22:52:39 2014 +0000 @@ -34,7 +34,7 @@ } if( h instanceof LuanFunction ) { LuanFunction fn = (LuanFunction)h; - return Luan.first(luan.bit(se).call(fn,"__index",t,key)); + return Luan.first(luan.bit(se).call(fn,"__index",new Object[]{t,key})); } return index(luan,h,key); }
--- a/src/luan/interp/LeExpr.java Fri May 23 20:40:05 2014 +0000 +++ b/src/luan/interp/LeExpr.java Fri May 23 22:52:39 2014 +0000 @@ -29,10 +29,10 @@ LuanBit bit = luan.bit(se); LuanFunction fn = bit.getBinHandler("__le",o1,o2); if( fn != null ) - return Luan.toBoolean( Luan.first(bit.call(fn,"__le",o1,o2)) ); + return Luan.toBoolean( Luan.first(bit.call(fn,"__le",new Object[]{o1,o2})) ); fn = bit.getBinHandler("__lt",o1,o2); if( fn != null ) - return !Luan.toBoolean( Luan.first(bit.call(fn,"__lt",o2,o1)) ); + return !Luan.toBoolean( Luan.first(bit.call(fn,"__lt",new Object[]{o2,o1})) ); throw bit.exception( "attempt to compare " + Luan.type(o1) + " with " + Luan.type(o2) ); } }
--- a/src/luan/interp/LenExpr.java Fri May 23 20:40:05 2014 +0000 +++ b/src/luan/interp/LenExpr.java Fri May 23 22:52:39 2014 +0000 @@ -23,7 +23,7 @@ LuanBit bit = luan.bit(se); LuanFunction fn = bit.getHandlerFunction("__len",o); if( fn != null ) - return Luan.first(bit.call(fn,"__len",o)); + return Luan.first(bit.call(fn,"__len",new Object[]{o})); if( o instanceof LuanTable ) { LuanTable t = (LuanTable)o; return t.length();
--- a/src/luan/interp/ReturnStmt.java Fri May 23 20:40:05 2014 +0000 +++ b/src/luan/interp/ReturnStmt.java Fri May 23 22:52:39 2014 +0000 @@ -30,7 +30,7 @@ if( tailFn instanceof Closure ) { luan.tailFn = (Closure)tailFn; } else { - luan.returnValues = luan.bit(tailFnExpr.se()).call(tailFn,tailFnExpr.se().text(),luan.returnValues); + luan.returnValues = luan.bit(tailFnExpr.se()).call(tailFn,tailFnExpr.se().text(),Luan.array(luan.returnValues)); } } if( throwReturnException )
--- a/src/luan/interp/SetTableEntry.java Fri May 23 20:40:05 2014 +0000 +++ b/src/luan/interp/SetTableEntry.java Fri May 23 22:52:39 2014 +0000 @@ -39,7 +39,7 @@ } if( h instanceof LuanFunction ) { LuanFunction fn = (LuanFunction)h; - luan.bit(se).call(fn,"__newindex",t,key,value); + luan.bit(se).call(fn,"__newindex",new Object[]{t,key,value}); return; } newindex(luan,h,key,value);
--- a/src/luan/interp/UnmExpr.java Fri May 23 20:40:05 2014 +0000 +++ b/src/luan/interp/UnmExpr.java Fri May 23 22:52:39 2014 +0000 @@ -22,7 +22,7 @@ LuanBit bit = luan.bit(se); LuanFunction fn = bit.getHandlerFunction("__unm",o); if( fn != null ) { - return Luan.first(bit.call(fn,"__unm",o)); + return Luan.first(bit.call(fn,"__unm",new Object[]{o})); } throw bit.exception("attempt to perform arithmetic on a "+Luan.type(o)+" value"); }
--- a/src/luan/lib/BasicLib.java Fri May 23 20:40:05 2014 +0000 +++ b/src/luan/lib/BasicLib.java Fri May 23 22:52:39 2014 +0000 @@ -208,12 +208,12 @@ return new LuanFunction() { double v = from; - @Override public Object[] call(LuanState luan,Object[] args) { + @Override public Object call(LuanState luan,Object[] args) { if( step > 0.0 && v > to || step < 0.0 && v < to ) return LuanFunction.EMPTY; double rtn = v; v += step; - return new Object[]{rtn}; + return rtn; } }; }
--- a/src/luan/lib/HtmlLib.java Fri May 23 20:40:05 2014 +0000 +++ b/src/luan/lib/HtmlLib.java Fri May 23 22:52:39 2014 +0000 @@ -11,14 +11,14 @@ public static final String NAME = "Html"; public static final LuanFunction LOADER = new LuanFunction() { - @Override public Object[] call(LuanState luan,Object[] args) { + @Override public Object call(LuanState luan,Object[] args) { LuanTable module = new LuanTable(); try { add( module, "encode", String.class ); } catch(NoSuchMethodException e) { throw new RuntimeException(e); } - return new Object[]{module}; + return module; } };
--- a/src/luan/lib/JavaLib.java Fri May 23 20:40:05 2014 +0000 +++ b/src/luan/lib/JavaLib.java Fri May 23 22:52:39 2014 +0000 @@ -30,7 +30,7 @@ public static final String NAME = "Java"; public static final LuanFunction LOADER = new LuanFunction() { - @Override public Object[] call(LuanState luan,Object[] args) { + @Override public Object call(LuanState luan,Object[] args) { luan.addMetatableGetter(mg); LuanTable module = new LuanTable(); LuanTable global = luan.global(); @@ -41,22 +41,22 @@ throw new RuntimeException(e); } luan.searchers().add(javaSearcher); - return new Object[]{module}; + return module; } }; public static final LuanFunction javaSearcher = new LuanFunction() { - @Override public Object[] call(LuanState luan,Object[] args) throws LuanException { + @Override public Object call(LuanState luan,Object[] args) throws LuanException { String modName = (String)args[0]; final Static s = JavaLib.getClass(luan,modName); if( s==null ) - return LuanFunction.EMPTY; + return null; LuanFunction loader = new LuanFunction() { - @Override public Object[] call(LuanState luan,Object[] args) { - return new Object[]{s}; + @Override public Object call(LuanState luan,Object[] args) { + return s; } }; - return new Object[]{loader}; + return loader; } }; @@ -368,7 +368,7 @@ } } - @Override public Object[] call(LuanState luan,Object[] args) throws LuanException { + @Override public Object call(LuanState luan,Object[] args) throws LuanException { for( LuanJavaFunction fn : fnMap.get(args.length) ) { try { return fn.rawCall(luan,args);
--- a/src/luan/lib/MathLib.java Fri May 23 20:40:05 2014 +0000 +++ b/src/luan/lib/MathLib.java Fri May 23 22:52:39 2014 +0000 @@ -11,7 +11,7 @@ public static final String NAME = "Math"; public static final LuanFunction LOADER = new LuanFunction() { - @Override public Object[] call(LuanState luan,Object[] args) { + @Override public Object call(LuanState luan,Object[] args) { LuanTable module = new LuanTable(); try { add( module, "abs", Double.TYPE ); @@ -41,7 +41,7 @@ } catch(NoSuchMethodException e) { throw new RuntimeException(e); } - return new Object[]{module}; + return module; } };
--- a/src/luan/lib/PackageLib.java Fri May 23 20:40:05 2014 +0000 +++ b/src/luan/lib/PackageLib.java Fri May 23 22:52:39 2014 +0000 @@ -62,7 +62,7 @@ searchers = new LuanTable(Collections.<Object>singletonList(preloadSearcher)); for( Object s : searchers.asList() ) { LuanFunction searcher = (LuanFunction)s; - Object[] a = Luan.array(luan.JAVA.call(searcher,"<searcher>",modName)); + Object[] a = Luan.array(luan.JAVA.call(searcher,"<searcher>",new Object[]{modName})); if( a.length >= 1 && a[0] instanceof LuanFunction ) { LuanFunction loader = (LuanFunction)a[0]; a[0] = modName; @@ -112,10 +112,9 @@ }; public static final LuanFunction preloadSearcher = new LuanFunction() { - @Override public Object[] call(LuanState luan,Object[] args) { + @Override public Object call(LuanState luan,Object[] args) { String modName = (String)args[0]; - Object mod = luan.preload().get(modName); - return new Object[]{mod}; + return luan.preload().get(modName); } };
--- a/src/luan/lib/StringLib.java Fri May 23 20:40:05 2014 +0000 +++ b/src/luan/lib/StringLib.java Fri May 23 22:52:39 2014 +0000 @@ -16,7 +16,7 @@ public static final String NAME = "String"; public static final LuanFunction LOADER = new LuanFunction() { - @Override public Object[] call(LuanState luan,Object[] args) { + @Override public Object call(LuanState luan,Object[] args) { LuanTable module = new LuanTable(); try { module.put( "byte", new LuanJavaFunction(StringLib.class.getMethod("byte_",String.class,Integer.class,Integer.class),null) ); @@ -35,7 +35,7 @@ } catch(NoSuchMethodException e) { throw new RuntimeException(e); } - return new Object[]{module}; + return module; } }; @@ -131,12 +131,12 @@ public static LuanFunction gmatch(String s,String pattern) { final Matcher m = Pattern.compile(pattern).matcher(s); return new LuanFunction() { - public Object[] call(LuanState luan,Object[] args) { + @Override public Object call(LuanState luan,Object[] args) { if( !m.find() ) - return LuanFunction.EMPTY; + return null; final int n = m.groupCount(); if( n == 0 ) - return new String[]{m.group()}; + return m.group(); String[] rtn = new String[n]; for( int i=0; i<n; i++ ) { rtn[i] = m.group(i);
--- a/src/luan/lib/TableLib.java Fri May 23 20:40:05 2014 +0000 +++ b/src/luan/lib/TableLib.java Fri May 23 22:52:39 2014 +0000 @@ -18,7 +18,7 @@ public static final String NAME = "Table"; public static final LuanFunction LOADER = new LuanFunction() { - @Override public Object[] call(LuanState luan,Object[] args) { + @Override public Object call(LuanState luan,Object[] args) { LuanTable module = new LuanTable(); try { add( module, "concat", LuanState.class, LuanTable.class, String.class, Integer.class, Integer.class ); @@ -31,7 +31,7 @@ } catch(NoSuchMethodException e) { throw new RuntimeException(e); } - return new Object[]{module}; + return module; } }; @@ -93,7 +93,7 @@ lt = new LessThan() { public boolean isLessThan(Object o1,Object o2) { try { - return Luan.toBoolean(Luan.first(luan.JAVA.call(comp,"comp-arg",o1,o2))); + return Luan.toBoolean(Luan.first(luan.JAVA.call(comp,"comp-arg",new Object[]{o1,o2}))); } catch(LuanException e) { throw new LuanRuntimeException(e); }