LuaLS / LuaLS/lua-language-server
Incorrect field type calculation when field name in variable
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
### How are you using the lua-language-server?
Visual Studio Code Extension (sumneko.lua) v3.11.0
### Which OS are you using?
Linux
### What is the issue affecting?
Type Checking
### Reproduction steps
```lua
---@diagnostic disable: unused-local
---@class Class
local Class = { __type = "Class" }
local field = "some_string" -- field: string = "some_string"
do
local c = {} ---@type Class
-- OK
local f1 = c["some_string"] -- f1: unknown
local f2 = c[field] -- f2: unknown
end
function Class:f()
-- OK
local f1 = self["some_string"] -- f1: unknown
-- BUT
local f2 = self[field] -- f2: string = "Class"
end
do
-- OK
local f1 = Class["some_string"] -- f1: unknown
-- BUT
local f2 = Class[field] -- f2: string = "Class"
end
```
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 reproduire la divergence de vérification des types dans le Lua language server avec l’exemple de code, en comparant l’indexation littérale à l’indexation via la variable `field`. Suivez le point d’entrée de l’inférence du type de champ et ajoutez un test de régression pour les cas présentés ; le travail est terminé lorsque l’indexation basée sur une variable ne signale plus `Class`, alors que l’indexation littérale signale `unknown`.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- lua
- Domaine
- devtools
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- À l'abandon
- Clarté
- Plutôt claire
- Accessibilité débutants
- 42/100