diff --git a/src/diagnostics.lua b/src/diagnostics.lua index a1b82cf..d5cfd36 100644 --- a/src/diagnostics.lua +++ b/src/diagnostics.lua @@ -138,12 +138,20 @@ function M.validate_diagnostics(content, workspace_types, root_dir) return prefix == "T" or prefix == "D" or prefix == "S" end + -- Check if hash is part of a base-specific number literal like 16#FFFF, 2#1010 + local function is_number_literal_at(line, match_start) + if not line or not match_start then return false end + if match_start <= 1 then return false end + local before = line:sub(match_start - 1, match_start - 1) + return before:match("%d") ~= nil + end + if not in_var_section then local hash_vars = {} for var in line:gmatch("#[%w_]+") do local var_name = var:sub(2) local match_start = line:find(var, 1, true) - if not is_iec_literal_at(line, match_start) then + if not is_iec_literal_at(line, match_start) and not is_number_literal_at(line, match_start) then hash_vars[var_name] = true end end