Sole symbols (such as box.NULL) are not processed
by serpent "custom" symbols feature, since they
are not in table.
Thus we should process them separately. Without it
we have
> require('console').set_default_output("lua,block")
> ;
> box.NULL
> "cdata<void %*>: NULL";
instead of
> box.NULL
> box.NULL;
as it should be.
Part-of #3834
---
src/box/lua/console.lua | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/src/box/lua/console.lua b/src/box/lua/console.lua
index 64086cf5b..22bafab3a 100644
--- a/src/box/lua/console.lua
+++ b/src/box/lua/console.lua
@@ -46,6 +46,17 @@ output_handlers["lua"] = function(status, opts, ...)
if not ... then
return ""
end
+ -- Map internal symbols in case if they are
+ -- not inside tables and serpent won't handle
+ -- them properly.
+ local map_direct_symbols = {
+ [box.NULL] = 'box.NULL',
+ }
+ for k,v in pairs(map_direct_symbols) do
+ if k == ... then
+ return v
+ end
+ end
--
-- Map internal symbols which serpent doesn't know
-- about to a known representation.
--
2.20.1