LuaLS / LuaLS/lua-language-server
[Feature request] Implicit casts for common conversions
Nessuno ha ancora preso questa issue.
- Lingua principale
- Lua
- Stelle
- 4.4k
- Fork
- 442
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
I got some code for parsing command line flags/user inputs that commonly uses patterns like this
```
---@return string ...
local function strsplit(str, sep) end
local a, b, c = strsplit(userinput, ",")
b = tonumber(b) or 0 -- error: This variable is defined as type `string`. Cannot convert its type to `number`
```
The fix is to define b as `string|number` in the declaration, but it's a bit cumbersome, especially if I just want `b` as a number:
```
local a,
---@type number|string
b, c = strsplit(userinput, ",")
```
So it would be nice if common type conversion patterns like this could be recognized automatically and either allow the cast or infer the type as string|number from the beginning.
Edit: See [comment below](https://github.com/LuaLS/lua-language-server/issues/3027#issuecomment-2572687841), the implicit cast is already happening, this is really about type inference based on later assignments. Which may or may not be a good idea.
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia tracciando il comportamento esistente di implicit-cast e type-inference descritto nell'issue, in particolare il modo in cui le assegnazioni successive influenzano una dichiarazione di variabile precedente. Definisci le regole di inferenza previste e verificale usando l'esempio di analisi della riga di comando; il lavoro è completato quando è stato concordato un comportamento e sono presenti test che coprono il tipo inferito risultante.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- lua
- Ambito
- devtools
- Tipo di issue
- Funzionalità
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 35/100