LuaLS / LuaLS/lua-language-server

Disallow ? on values

Aberta
#2,814 6 comentários 0 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

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

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?

Type Checking

### Expected Behaviour

`?` is not a type, and should only be used when marking fields as optional. If nil is explicitly allowed as a value, `| nil` should be used. This is in line with TypeScript.

### Actual Behaviour

`?` does not add `| nil` to the value type, and the second option should be disallowed.
![image](https://github.com/user-attachments/assets/7a4cd168-6590-4368-acfb-b13b2af9a9ea)

### Reproduction steps

```lua
---@class Foo
---@field foo? string
---@field bar string?
---@field baz string | nil
local test = {};

function Foo()
return test.foo, test.bar, test.baz
end;
```

### Additional Notes

_No response_

### Log File

_No response_

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

Comece reproduzindo o comportamento de verificação de tipos na Visual Studio Code Extension (sumneko.lua) usando o snippet de Lua na issue. Está concluído quando `string?` não for permitido, `foo? string` continuar sendo a forma de campo opcional e `string | nil` permitir explicitamente nil.

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

Avaliação

Stack de tecnologia
lua
Domínio
tooling
Tipo de issue
Bug
Dificuldade
3/5
Tempo estimado
1-2 dias
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.