Improve compatibility with lua 5.2.

This commit is contained in:
James Roseborough
2012-09-20 05:30:41 +00:00
parent 4d8877e56b
commit 9ae6767f76
2 changed files with 14 additions and 13 deletions

View File

@@ -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());
}

View File

@@ -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;