diff --git a/client/space_lua/stdlib/table.ts b/client/space_lua/stdlib/table.ts index 18d1de07..ea036088 100644 --- a/client/space_lua/stdlib/table.ts +++ b/client/space_lua/stdlib/table.ts @@ -266,7 +266,7 @@ export const tableApi = new LuaTable({ if (Array.isArray(tbl)) { return await asyncQuickSort(tbl, async (a, b) => { if (comp) { - return (await comp.call(sf, a, b)) ? -1 : 1; + return (await comp.call(sf, a, b)) ? -1 : 0; } return (a as any) < (b as any) ? -1 : 1; }); @@ -286,7 +286,7 @@ export const tableApi = new LuaTable({ const cmp = async (a: any, b: any): Promise => { if (comp) { const r = await luaCall(comp, [a, b], sf.astCtx ?? {}, sf); - return r ? -1 : 1; + return r ? -1 : 0; } const av = isTaggedFloat(a) ? a.value : a; diff --git a/client/space_lua/stdlib/table_test.lua b/client/space_lua/stdlib/table_test.lua index 997357c6..38db391b 100644 --- a/client/space_lua/stdlib/table_test.lua +++ b/client/space_lua/stdlib/table_test.lua @@ -185,6 +185,9 @@ do table.sort(t, function(a, b) return a > b end) assertEqual(t, { 3, 2, 1 }) + table.sort(t, function(a, b) return a < b end) + assertEqual(t, { 3, 2, 1 }) + local data = { { name = "John", age = 30 }, { name = "Jane", age = 25 } } table.sort(data, function(a, b) return a.age < b.age end) assertEqual(data[1].name, "Jane")