LuaLS / LuaLS/lua-language-server

Detect functions that never return (and @noreturn annotation)

Aberta
#1,881 4 comentários 5 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

enhancement
Linguagem predominante
Lua
Estrelas
4.4k
Forks
442
Métricas de merge de PRs
Nenhum PR com merge em 30d

Descrição

Some functions, such as `error`, never return control to the caller. This can be used to prove that a value is not nil, for example:

```lua
function my_function(input)
local value = input.value or error('Missing value')
-- The following line would currently raise a "Needs nil check" warning
-- However, if it was nil at runtime, an error would have been raised and it would never get this far.
return value:sub(1, 3)
end
```

It's not just `error` that can cause this, however. A custom function could be written that never returns as well (the most obvious way is that the function unconditionally calls `error`, but there may be other ways involving coroutines or functions implemented in C). A `@noreturn` annotation could be used to indicate this, similar to `@nodiscard`.

Guia de contribuição

Abrir o guia de contribuição

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.

Direção de pesquisa

Nenhum arquivo ou teste é mencionado na issue. Comece rastreando o aviso da verificação de nil e o tratamento existente da anotação @nodiscard; em seguida, determine como built-ins que não retornam, funções personalizadas e @noreturn devem ser representados; considera-se concluído quando o exemplo não emitir mais o aviso e o comportamento da anotação estiver coberto.

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

Avaliação

Stack de tecnologia
lua
Domínio
devtools
Tipo de issue
Funcionalidade
Dificuldade
5/5
Tempo estimado
Mais de uma semana
Status de atividade
Estagnada
Clareza
Razoavelmente clara
Facilidade para iniciantes
35/100

Receba novas issues na sua caixa de entrada

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