summaryrefslogtreecommitdiff
path: root/test/diagnostics
diff options
context:
space:
mode:
authorJakub <jakubmomot@yahoo.pl>2024-03-25 22:53:09 +0100
committerJakub <jakubmomot@yahoo.pl>2024-03-25 22:53:09 +0100
commitce938c864604155fc081dab017867e7e461c61cc (patch)
tree170e47b48c372963018a6128319cf70f2daa3694 /test/diagnostics
parente930179bbd6b3eb26721a676303e0e27cdb29290 (diff)
downloadlua-language-server-ce938c864604155fc081dab017867e7e461c61cc.zip
Detect discard-returns in all block types
Diffstat (limited to 'test/diagnostics')
-rw-r--r--test/diagnostics/discard-returns.lua246
1 files changed, 246 insertions, 0 deletions
diff --git a/test/diagnostics/discard-returns.lua b/test/diagnostics/discard-returns.lua
index 2e348390..5acd6146 100644
--- a/test/diagnostics/discard-returns.lua
+++ b/test/diagnostics/discard-returns.lua
@@ -15,3 +15,249 @@ end
X = f()
]]
+
+TEST [[
+---@nodiscard
+local function f()
+ return 1
+end
+
+for i = 1, 2 do
+ <!f()!>
+end
+]]
+
+TEST [[
+---@nodiscard
+local function f()
+ return 1
+end
+
+for i = 1, 2 do
+ local v = f()
+end
+]]
+
+TEST [[
+---@nodiscard
+local function f()
+ return 1
+end
+
+while true do
+ <!f()!>
+ break
+end
+]]
+
+TEST [[
+---@nodiscard
+local function f()
+ return 1
+end
+
+while true do
+ local v = f()
+ break
+end
+]]
+
+TEST [[
+---@nodiscard
+local function f()
+ return 1
+end
+
+repeat
+ <!f()!>
+ break
+until true
+]]
+
+TEST [[
+---@nodiscard
+local function f()
+ return 1
+end
+
+repeat
+ local v = f()
+ break
+until true
+]]
+
+TEST [[
+---@nodiscard
+local function f()
+ return 1
+end
+
+for index, value in ipairs({}) do
+ <!f()!>
+end
+]]
+
+TEST [[
+---@nodiscard
+local function f()
+ return 1
+end
+
+for index, value in ipairs({}) do
+ local v = f()
+end
+]]
+
+TEST [[
+---@nodiscard
+local function f()
+ return 1
+end
+
+if 1 == 1 then
+ <!f()!>
+end
+]]
+
+TEST [[
+---@nodiscard
+local function f()
+ return 1
+end
+
+if 1 == 1 then
+ local v = f()
+end
+]]
+
+TEST [[
+---@nodiscard
+local function f()
+ return 1
+end
+
+if 1 == 1 then
+ local v = f()
+else
+ <!f()!>
+end
+]]
+
+TEST [[
+---@nodiscard
+local function f()
+ return 1
+end
+
+if 1 == 1 then
+ local v = f()
+else
+ local v = f()
+end
+]]
+
+TEST [[
+---@nodiscard
+local function f()
+ return 1
+end
+
+if 1 == 1 then
+ local v = f()
+elseif 1 == 2 then
+ <!f()!>
+else
+ local v = f()
+end
+]]
+
+TEST [[
+---@nodiscard
+local function f()
+ return 1
+end
+
+if 1 == 1 then
+ local v = f()
+elseif 1 == 2 then
+ local v = f()
+else
+ local v = f()
+end
+]]
+
+TEST [[
+---@nodiscard
+local function f()
+ return 1
+end
+
+local function bar(callback)
+end
+
+bar(function ()
+ <!f()!>
+end)
+]]
+
+TEST [[
+---@nodiscard
+local function f()
+ return 1
+end
+
+local function bar(callback)
+end
+
+bar(function ()
+ local v = f()
+end)
+]]
+
+TEST [[
+---@nodiscard
+local function f()
+ return 1
+end
+
+do
+ <!f()!>
+end
+]]
+
+TEST [[
+---@nodiscard
+local function f()
+ return 1
+end
+
+do
+ local v = f()
+end
+]]
+
+TEST [[
+---@nodiscard
+local function f()
+ return 2
+end
+
+for i = 1, f() do
+end
+]]
+
+TEST [[
+---@nodiscard
+local function list_iter(t)
+ local i = 0
+ local n = #t
+ return function ()
+ i = i + 1
+ if i <= n then return t[i] end
+ end
+end
+
+local t = {10, 20, 30}
+for element in list_iter(t) do
+end
+]]