From 60396f2478b0f7284b42139d6d8e05bf81b12b20 Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Thu, 25 Feb 2021 10:45:59 +0000 Subject: [PATCH] [Fix] Selectors: Filter nil elements in lists --- lualib/lua_selectors/init.lua | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/lualib/lua_selectors/init.lua b/lualib/lua_selectors/init.lua index cc44d0b01..9a4af2e04 100644 --- a/lualib/lua_selectors/init.lua +++ b/lualib/lua_selectors/init.lua @@ -349,13 +349,18 @@ exports.parse_selector = function(cfg, str) ret = (inp[method_name](inp, unpack_function(args or E))) end + -- Do not go further + if not ret then return nil end + local ret_type = type(ret) -- Now apply types heuristic if ret_type == 'string' then return ret,'string' - elseif ret_type == 'table' then - -- TODO: we need to ensure that 1) table is numeric 2) table has merely strings - return ret,'string_list' + elseif ret_type == 'table' and ret[1] ~= nil then + local filt_predicate = fun.filter(function(elt) + return elt ~= nil + end, ret) + return filt_predicate, 'string_list' else return implicit_tostring(ret_type, ret) end -- 2.39.5