1

Fix Stack:Peek() bug + check for empty stack if appropriate

This commit is contained in:
2025-10-05 21:42:53 +02:00
parent 515042e711
commit 39db64000e

View File

@ -1,5 +1,7 @@
local Position = require("lib.position")
---@class Stack ---@class Stack
---@field elements table[] ---@field elements Position[]
local Stack = {} local Stack = {}
Stack.__index = Stack Stack.__index = Stack
@ -17,9 +19,10 @@ function Stack:Create()
end end
---@param element table ---@param element Position
function Stack:Push(element) function Stack:Push(element)
if element == nil or element == {} then if element == nil or element == {} then
printError("Failed to push empty element to the stack!")
return return
end end
@ -27,15 +30,25 @@ function Stack:Push(element)
end end
---@return table ---@return Position | nil
function Stack:Pop() function Stack:Pop()
if self:Count() == 0 then
printError("Failed to pop element from the empty stack!")
return nil
end
return table.remove(self.elements) return table.remove(self.elements)
end end
---@return table ---@return Position | nil
function Stack:Peek() function Stack:Peek()
return table[#self.elements] if self:Count() == 0 then
printError("Failed to peek element from the empty stack!")
return nil
end
return self.elements[#self.elements]
end end