From 126f51f955351a4ce85f3f1e6da6e9219ec7e23a Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Fri, 4 May 2018 13:49:09 -0700 Subject: Removing varargs from free var functions. --- code_obj.lua | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (limited to 'code_obj.lua') diff --git a/code_obj.lua b/code_obj.lua index dbc1d65..7b730de 100644 --- a/code_obj.lua +++ b/code_obj.lua @@ -201,7 +201,7 @@ do local _class_0 local _parent_0 = Code local _base_0 = { - add_free_vars = function(self, ...) + add_free_vars = function(self, vars) local seen do local _tbl_0 = { } @@ -215,13 +215,14 @@ do end seen = _tbl_0 end - for i = 1, select("#", ...) do - local var = select(i, ...) + for _index_0 = 1, #vars do + local var = vars[_index_0] if type(var) == 'userdata' and var.type == "Var" then var = tostring(var:as_lua()) elseif type(var) ~= 'string' then var = tostring(var) end + assert(var:match("^[_a-zA-Z][_a-zA-Z0-9]*$")) if not (seen[var]) then self.free_vars[#self.free_vars + 1] = var seen[var] = true @@ -229,15 +230,16 @@ do end self.__str = nil end, - remove_free_vars = function(self, ...) + remove_free_vars = function(self, vars) local removals = { } - for i = 1, select("#", ...) do - local var = select(i, ...) + for _index_0 = 1, #vars do + local var = vars[_index_0] if type(var) == 'userdata' and var.type == "Var" then var = tostring(var:as_lua()) elseif type(var) ~= 'string' then var = tostring(var) end + assert(var:match("^[_a-zA-Z][_a-zA-Z0-9]*$")) removals[var] = true end local stack = { @@ -292,6 +294,7 @@ do local var = _list_0[_index_0] if not (seen[var]) then seen[var] = true + assert(var:match("^[_a-zA-Z][_a-zA-Z0-9]*$")) to_declare[#to_declare + 1] = var end end @@ -306,9 +309,10 @@ do gather_from(self) end if #to_declare > 0 then - self:remove_free_vars(unpack(to_declare)) - return self:prepend("local " .. tostring(concat(to_declare, ", ")) .. ";\n") + self:remove_free_vars(to_declare) + self:prepend("local " .. tostring(concat(to_declare, ", ")) .. ";\n") end + return to_declare end, __tostring = function(self) if self.__str == nil then -- cgit v1.2.3