LuaLS / LuaLS/lua-language-server
[Feature request] Implicit casts for common conversions
Personne n'a encore pris cette issue.
- Langage dominant
- Lua
- Étoiles
- 4.4k
- Forks
- 442
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Description
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.
Guide de contribution
Ouvrir le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Piste de recherche
Commencez par retracer le comportement existant d'implicit-cast et de type-inference décrit dans l'issue, en particulier la manière dont les affectations ultérieures influencent une déclaration de variable antérieure. Définissez les règles d'inférence attendues et vérifiez-les à l'aide de l'exemple d'analyse de la ligne de commande ; le travail est terminé lorsqu'un comportement convenu est établi et que des tests couvrent le type inféré obtenu.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- lua
- Domaine
- devtools
- Type d'issue
- Fonctionnalité
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 35/100