LuaLS / LuaLS/lua-language-server
[Feature Request] Required nullable arguments
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
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.
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
Aucun fichier ni test du dépôt n’est nommé. Commencez par localiser les chemins de traitement des annotations et de résolution du nombre d’arguments pertinents pour les fonctions Lua et les appels Java/Kahlua. Comparez les formes proposées `?!`, `!?` et `!`, puis définissez la couverture pour les arguments omis par rapport aux arguments `nil` explicites et confirmez la syntaxe prévue avant l’implémentation.
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é
- À clarifier
- Accessibilité débutants
- 25/100