Software /
code /
prosody
File
util/import.lua @ 10592:9918b4b0cd58
util.array: Fix equality metamethod in Lua 5.3
Lua 5.2 only used the __eq metamethod if both operands have the same
__eq, but Lua 5.3 will pick one from either operands that has one as
long as both are tables.
This results in array() == {} and all sorts of odd behavior, including
array() == util.json.null.
<MattJ> I think [array() == {}] should have the same semantics as {} == {}
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Wed, 15 Jan 2020 21:08:01 +0100 |
parent | 9692:affcbccc1dff |
child | 12589:39ae08180c81 |
line wrap: on
line source
-- Prosody IM -- Copyright (C) 2008-2010 Matthew Wild -- Copyright (C) 2008-2010 Waqas Hussain -- -- This project is MIT/X11 licensed. Please see the -- COPYING file in the source package for more information. -- local unpack = table.unpack or unpack; --luacheck: ignore 113 local t_insert = table.insert; function _G.import(module, ...) local m = package.loaded[module] or require(module); if type(m) == "table" and ... then local ret = {}; for _, f in ipairs{...} do t_insert(ret, m[f]); end return unpack(ret); end return m; end