A union type should not merge class fields
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 48/100
Línea de trabajo
Reproduce el ejemplo anotado TypeA|TypeB en la extensión de Visual Studio Code y, a continuación, rastrea cómo el servidor de lenguaje combina los campos de clases unión. Se considera terminado cuando el discriminador selecciona la clase correcta e informa de los campos no coincidentes commonField y los campos específicos de cada miembro que se muestran en el ejemplo.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
How are you using the lua-language-server?
Visual Studio Code Extension (sumneko.lua)
Which OS are you using?
MacOS
What is the issue affecting?
Annotations
Expected Behaviour
---@class (exact) TypeA
---@field type 'A'
---@field commonField number
---@field specificFieldA number
---@class (exact) TypeB
---@field type 'B'
---@field commonField string
---@field specificFieldB string
---@alias Type_Either_A_Or_B_But_Not_Both TypeA|TypeB
---@type Type_Either_A_Or_B_But_Not_Both
local testA = {
type = 'A', --- Indicates that this should be of TypeA
commonField = 'test', --- Should be an error. TypeA.commonField should be a number
specificFieldA = 123, --- OK
specificFieldB = 'Hello' --- Should be an error. TypeA.specificFieldB doesn't exist
}
---@type Type_Either_A_Or_B_But_Not_Both
local testB = {
type = 'B', --- Indicates that this should be of TypeB
commonField = 'test', --- OK
specificFieldA = 123, --- Should be an error. TypeB.specificFieldA doesn't exist
specificFieldB = 'Hello' --- OK
}
Actual Behaviour
TypeA|TypeB is merged, so none of the mismatched fields/types are reported as errors.
local testA: TypeA|TypeB {
commonField: string|number,
specificFieldA: number,
specificFieldB: string,
type: 'A'|'B',
}
Reproduction steps
Paste the code into vscode
Additional Notes
No response
Log File
No response
- Lenguaje dominante
- Lua
- Estrellas
- 4.4k
- Forks
- 442
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de LuaLS/lua-language-server
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
LuaLS/lua-language-server#1776 ·
-
Dificultad 4/5 3-5 días Aptitud para principiantes 55/100
LuaLS/lua-language-server#3461 ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
LuaLS/lua-language-server#3460 · 1 comentario · 1 reacción ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
LuaLS/lua-language-server#3459 ·
-
Dificultad 3/5 1-2 días Aptitud para principiantes 64/100
LuaLS/lua-language-server#3458 ·
Todos los issues de LuaLS/lua-language-server
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 84/100
api7/lua-resty-saml#62 ·
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 94/100
codymikol/multiverse.nvim#320 ·
-
Dificultad 1/5 1-3 horas Aptitud para principiantes 88/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100