diff --git a/src/addon/java/lua/addon/luajava/CoerceLuaToJava.java b/src/addon/java/lua/addon/luajava/CoerceLuaToJava.java index 9552b32e..b7ad9915 100644 --- a/src/addon/java/lua/addon/luajava/CoerceLuaToJava.java +++ b/src/addon/java/lua/addon/luajava/CoerceLuaToJava.java @@ -50,6 +50,20 @@ public class CoerceLuaToJava { return 4; } }; + Coercion doubleCoercion = new Coercion() { + public Object coerce(LValue value) { + return Double.valueOf( value.luaAsDouble() ); + } + public int score(LValue value) { + if ( value instanceof LDouble ) + return 0; + if ( value instanceof LNumber ) + return 1; + if ( value instanceof LBoolean || value == LNil.NIL ) + return 2; + return 4; + } + }; Coercion stringCoercion = new Coercion() { public Object coerce(LValue value) { return value.luaAsString(); @@ -92,6 +106,8 @@ public class CoerceLuaToJava { COERCIONS.put( Integer.class, intCoercion ); COERCIONS.put( Long.TYPE, intCoercion ); COERCIONS.put( Long.class, intCoercion ); + COERCIONS.put( Double.TYPE, doubleCoercion ); + COERCIONS.put( Double.class, doubleCoercion ); COERCIONS.put( String.class, stringCoercion ); COERCIONS.put( Object.class, objectCoercion ); } diff --git a/src/addon/java/lua/addon/luajava/LuaJava.java b/src/addon/java/lua/addon/luajava/LuaJava.java index f9b42872..ba196e44 100644 --- a/src/addon/java/lua/addon/luajava/LuaJava.java +++ b/src/addon/java/lua/addon/luajava/LuaJava.java @@ -173,7 +173,6 @@ public final class LuaJava extends LFunction { Object result = meth.invoke( instance, args ); call.stack[base] = CoerceJavaToLua.coerce(result); call.top = base + 1; - call.adjustTop(base+nresults); } catch (Exception e) { throw new RuntimeException(e); } diff --git a/src/test/res/test7.lua b/src/test/res/test7.lua index c109e778..2df50b50 100644 --- a/src/test/res/test7.lua +++ b/src/test/res/test7.lua @@ -9,3 +9,6 @@ print( obj:getS() ) obj:setS( "World" ) print( obj.s ) + +math = luajava.bindClass("java.lang.Math") +print("Square root of 9 is", math:sqrt(9.0)) diff --git a/src/test/res/test7.luac b/src/test/res/test7.luac index 00cff7a3..9c44ac41 100644 Binary files a/src/test/res/test7.luac and b/src/test/res/test7.luac differ