Fix metatable processing on luaGetTable

This commit is contained in:
James Roseborough
2007-10-09 04:09:00 +00:00
parent 1f817c774c
commit 435368ccd9
4 changed files with 22 additions and 5 deletions

View File

@@ -223,11 +223,10 @@ public class LTable extends LValue {
}
public void luaSetTable(VM vm, LValue table, LValue key, LValue val) {
if ( !containsKey( key ) && m_metatable != null ) {
super.luaSetTable( vm, table, key, val );
} else {
put(key, val);
}
if ( (!containsKey( key )) && m_metatable != null && m_metatable.containsKey(TM_NEWINDEX) )
m_metatable.get(TM_NEWINDEX).luaSetTable( vm, table, key, val );
else
put(key,val);
}
/**

View File

@@ -80,6 +80,10 @@ public class LuaJTest extends TestCase {
runTest( "setlist" );
}
public void testSimpleMetatables() throws IOException, InterruptedException {
runTest( "simplemetatables" );
}
public void testStrLib() throws IOException, InterruptedException {
runTest( "strlib" );
}

View File

@@ -0,0 +1,14 @@
-- The purpose of this test case is to check
-- that certain simple metatable operations work properly
t = { b='bbb' }
t.__index = t
u = {}
setmetatable( u, t )
u.c = 'ccc'
print( 't.a', t.a )
print( 'u.a', u.a )
print( 't.b', t.b )
print( 'u.b', u.b )
print( 't.c', t.c )
print( 'u.c', u.c )

Binary file not shown.