LuaLS / LuaLS/lua-language-server
[Feature Request] Required nullable arguments
Nadie ha tomado este issue todavía.
- Lenguaje dominante
- Lua
- Estrellas
- 4.4k
- Forks
- 442
- Métricas de merge de PR
- Sin PR fusionados en 30 d
Descripción
When calling Java methods from Kahlua, the number of arguments is used to determine the appropriate implementation to call. Because of this, arguments that can be `nil` are required in the function call for appropriate resolution. This is usually not a concern in Lua, but it could be.
In this example, both `f()` and `f(nil)` are appropriate, since the value of `x` defaults to `nil`.
```
---@param x integer?
local function f(x) end
```
In this example, however, the behaviors of `t.f()` and `t.f(nil)` are *not* equivalent.
(Admittedly, this is a contrived example. Nonetheless, it shows that this would not only be useful for strange cases like Kahlua's implementation.)
```
---@class Example
---@field f fun(x: integer?)
t = {
f = function(...)
assert(select('#', ...) == 1)
end
}
```
---
I don't feel strongly about the annotation that would be used to specify this, but `!` comes to mind:
```
---@class Example
---@field f fun(x: integer?!)
t = {
f = function(...)
assert(select('#', ...) == 1)
end
}
```
The `?!`/`!?` pair may be redundant, since non-nil argument types are always required. It would also be feasible to represent required but nil-able arguments with `!` alone.
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.
Línea de trabajo
No se nombra ningún archivo ni prueba del repositorio. Empieza localizando las rutas de gestión de anotaciones y resolución del número de argumentos relevantes para las funciones de Lua y las llamadas de Java/Kahlua. Compara las formas propuestas `?!`, `!?` y `!`, después define la cobertura para los argumentos omitidos frente a los argumentos `nil` explícitos y confirma la sintaxis prevista antes de la implementación.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- lua
- Área
- devtools
- Tipo de issue
- Nueva funcionalidad
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Estado de actividad
- Estancado
- Claridad
- Necesita aclaración
- Aptitud para principiantes
- 25/100