do local a <close>, b <close> = setmetatable({ }, { __close = function(self) return print("closed") end }) local c <const>, d <const> = 123, 'abc' close(a, b) const(c, d) end do local v <close> = (function() if flag then return func() else return setmetatable({ }, { __close = function(self) end }) end end)() local f <close> = (function() local _with_0 = io.open("file.txt") _with_0:write("Hello") return _with_0 end)() end do local a <const> = (function() if true then return 1 end end)() local b <close> = (function() if not false then return ((function() if x then return 1 end end)()) end end)() local c <const> = (function() if true then return ((function() local _exp_0 = x if "abc" == _exp_0 then return 998 end end)()) end end)() local d <close> = (function() if (function() if a ~= nil then return a else return b end end)() then return { value = value } end end)() end do local _ <close> = (function() local _with_0 = io.open("file.txt") _with_0:write("Hello") return _with_0 end)(); local _ <close> = setmetatable({ }, { __close = function(self) return print("second") end }); local _ <close> = setmetatable({ }, { __close = function() return print("first") end }) end local _defers = setmetatable({ }, { __close = function(self) self[#self]() self[#self] = nil end }) do _defers[#_defers + 1] = function() return print(3) end local _ <close> = _defers; _defers[#_defers + 1] = function() return print(2) end local _ <close> = _defers; _defers[#_defers + 1] = function() return print(1) end local _ <close> = _defers end