Hacktoberfest 2026: as issues que os mantenedores marcaram para outubro, abertas e boas para iniciantes. Ver issues do Hacktoberfest

Missing diagnostic when calling a non-function value

Aberta
#3,411 0 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
3/5
Tempo estimado
1-2 dias
Facilidade para iniciantes
65/100
Tipo de issue
Bug
Clareza
Razoavelmente clara
Status de atividade
Pouca atividade
Stack de tecnologia
lua
Domínio
devtools

Direção de pesquisa

Reproduza o problema com os snippets de Lua que chamam valores numéricos e de string e, em seguida, rastreie o ponto de entrada de diagnósticos ou de verificação de tipos que trata expressões de chamada. A tarefa estará concluída quando diagnósticos forem reportados para valores definitivamente não chamáveis, enquanto tabelas chamáveis e valores com assinaturas explícitas de overload ou __call continuarem sendo aceitos.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

How are you using the lua-language-server?

Visual Studio Code Extension (sumneko.lua)

Which OS are you using?

Windows

What is the issue affecting?

Diagnostics/Syntax Checking

Expected Behaviour

LuaLS should report a diagnostic when a value whose type is known to be non-callable is called like a function.

For example, calling a number, string, boolean, or a plain table without a known __call / @overload signature should produce a warning/error, because the code will fail at runtime.

Actual Behaviour

No diagnostic is reported.

Even when the value is explicitly annotated or cast as number, LuaLS accepts the call silently.

Reproduction steps

Use the following code:

local x = 1 --[[@as number]]
x()

local y = 1
y()

---@type number
local z = 1
z()

Expected: diagnostics on x(), y(), and z().
Actual: no diagnostics are reported.
At runtime, these calls fail with an error similar to:
attempt to call a number value

Additional Notes

This is different from callable table / __call support.
I am not asking LuaLS to reject values that are explicitly annotated as callable, for example with ---@overload fun(...) or an equivalent __call signature.
The issue is about direct calls to values whose inferred or declared type is definitely not callable, such as number.
This also affects typo detection. For example, code like this can accidentally parse as a function call:

---@param name string
local function greet(name)
    return "Hello " .. name "!"
end

Here name "!" is a call expression, but name is a string, so a diagnostic would be useful.

Log File

No response

Linguagem predominante
Lua
Estrelas
4.4k
Forks
446
Merge médio
8d 9h
PRs com merge (30d)
1

Preparar o ambiente

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de LuaLS/lua-language-server

Todas as issues de LuaLS/lua-language-server

Issues semelhantes

Mais issues de Lua

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.