nvim/test-diagnostics.lua

85 lines
2.1 KiB
Lua

-- Test file for LSP diagnostics - lua_ls
-- This file intentionally contains different diagnostic levels
-- to test diagnostic virtual text colors in paper-tonic-modern
-- Define some valid code first
local valid_function = function()
return "valid"
end
---@diagnostic disable-next-line: unused-local
local _ = valid_function()
-- ERROR: Undefined global (lua_ls marks this as error)
print(undefined_global_variable)
-- ERROR: Undefined function
undefined_function()
-- WARNING: Unused local variable (lua_ls warning level)
local unused_variable = "I'm never used"
-- WARNING: Lowercase global (should be local)
lowercase_global = "This should be local or uppercase"
-- HINT: Redundant parentheses (some configs treat as hint)
local x = (5)
print(x)
-- ERROR: Wrong number of arguments
local function takes_two_args(a, b)
return a + b
end
takes_two_args(1) -- Missing second argument (lua_ls error)
-- ERROR: Attempting to call a non-function
local not_a_function = "string"
not_a_function()
-- WARNING: Shadowing outer local
local shadow_me = 1
do
local shadow_me = 2 -- Shadows outer local (warning)
print(shadow_me)
end
-- ERROR: Invalid table access
local empty_table = {}
print(empty_table.nonexistent.deeply.nested.property)
-- WARNING/HINT: Can be simplified
if true == true then -- Redundant comparison
print("always true")
end
-- ERROR: Type annotation mismatch
---@type string
local should_be_string = 123 -- Assigning number to string type
-- WARNING: Unreachable code after return
local function has_dead_code()
return "done"
print("This will never execute") -- Unreachable
end
-- Valid function call
print(takes_two_args(1, 2))
-- ERROR: Calling vim API that doesn't exist
vim.nonexistent_function()
-- HINT: Trailing whitespace or style issues (if configured)
local with_trailing_space = "value"
print(with_trailing_space)
-- ERROR: Parameter type mismatch
---@param name string
---@param age number
local function greet(name, age)
print("Hello, " .. name .. ", you are " .. age)
end
greet(123, "not a number") -- Wrong types
print("Diagnostic test complete!")