From 9ae6767f76d546ab150dd858d1a56161d5763ade Mon Sep 17 00:00:00 2001 From: James Roseborough Date: Thu, 20 Sep 2012 05:30:41 +0000 Subject: [PATCH] Improve compatibility with lua 5.2. --- src/core/org/luaj/vm2/LuaValue.java | 11 ++++++----- .../org/luaj/vm2/UnaryBinaryOperatorsTest.java | 16 ++++++++-------- 2 files changed, 14 insertions(+), 13 deletions(-) diff --git a/src/core/org/luaj/vm2/LuaValue.java b/src/core/org/luaj/vm2/LuaValue.java index 8f964d01..83cce20d 100644 --- a/src/core/org/luaj/vm2/LuaValue.java +++ b/src/core/org/luaj/vm2/LuaValue.java @@ -2970,11 +2970,12 @@ public class LuaValue extends Varargs { * @see #lteq(LuaValue) */ public LuaValue comparemt( LuaValue tag, LuaValue op1 ) { - if ( type() == op1.type() ) { - LuaValue h = metatag(tag); - if ( !h.isnil() && h == op1.metatag(tag) ) - return h.call(this, op1); - } + LuaValue h = metatag(tag); + if ( !h.isnil() ) + return h.call(this, op1); + h = op1.metatag(tag); + if ( !h.isnil() ) + return h.call(this, op1); return error("attempt to compare "+tag+" on "+typename()+" and "+op1.typename()); } diff --git a/test/junit/org/luaj/vm2/UnaryBinaryOperatorsTest.java b/test/junit/org/luaj/vm2/UnaryBinaryOperatorsTest.java index e9917b56..90bacd19 100644 --- a/test/junit/org/luaj/vm2/UnaryBinaryOperatorsTest.java +++ b/test/junit/org/luaj/vm2/UnaryBinaryOperatorsTest.java @@ -848,14 +848,14 @@ public class UnaryBinaryOperatorsTest extends TestCase { assertEquals( fal, fal.lt(tru) ); assertEquals( tbl, tbl.lt(tbl2) ); assertEquals( tbl2, tbl2.lt(tbl) ); - try { tbl.lt(tbl3); fail("did not throw error"); } catch ( LuaError le ) { }; - try { tbl3.lt(tbl); fail("did not throw error"); } catch ( LuaError le ) { }; + assertEquals( tbl, tbl.lt(tbl3) ); + assertEquals( tbl3, tbl3.lt(tbl) ); assertEquals( fal, tru.lteq(fal) ); assertEquals( tru, fal.lteq(tru) ); assertEquals( tbl2, tbl.lteq(tbl2) ); assertEquals( tbl, tbl2.lteq(tbl) ); - try { tbl.lteq(tbl3); fail("did not throw error"); } catch ( LuaError le ) { }; - try { tbl3.lteq(tbl); fail("did not throw error"); } catch ( LuaError le ) { }; + assertEquals( tbl3, tbl.lteq(tbl3) ); + assertEquals( tbl, tbl3.lteq(tbl) ); // always use right argument mt = LuaValue.tableOf( new LuaValue[] { @@ -868,14 +868,14 @@ public class UnaryBinaryOperatorsTest extends TestCase { assertEquals( tru, fal.lt(tru) ); assertEquals( tbl2, tbl.lt(tbl2) ); assertEquals( tbl, tbl2.lt(tbl) ); - try { tbl.lt(tbl3); fail("did not throw error"); } catch ( LuaError le ) { }; - try { tbl3.lt(tbl); fail("did not throw error"); } catch ( LuaError le ) { }; + assertEquals( tbl3, tbl.lt(tbl3) ); + assertEquals( tbl, tbl3.lt(tbl) ); assertEquals( tru, tru.lteq(fal) ); assertEquals( fal, fal.lteq(tru) ); assertEquals( tbl, tbl.lteq(tbl2) ); assertEquals( tbl2, tbl2.lteq(tbl) ); - try { tbl.lteq(tbl3); fail("did not throw error"); } catch ( LuaError le ) { }; - try { tbl3.lteq(tbl); fail("did not throw error"); } catch ( LuaError le ) { }; + assertEquals( tbl, tbl.lteq(tbl3) ); + assertEquals( tbl3, tbl3.lteq(tbl) ); } finally { LuaBoolean.s_metatable = null;