Feature Request: ability to overload the return value type
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 5/5
- Temps estimé
- Plus d'une semaine
- Accessibilité débutants
- 45/100
Piste de recherche
Commencez par retracer la manière dont le serveur de langage représente les valeurs de retour multiples annotées et les vérifie aux sites d’appel. Utilisez l’exemple ECS de l’issue comme comportement à étudier, y compris les cas à zéro et à deux valeurs. Le travail est terminé lorsqu’une annotation prise en charge peut exprimer des retours multivaleurs tout-ou-rien ou réunis, sans nécessiter le cast montré, et que les diagnostics couvrent les deux cas.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
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
Feature request
In my game's ECS bindings I have getter functions that work like this:
---@param id integer
---@return number? inv_mass
---@return number? restitution
function ecs.get_collision_body_values(id) end
local inv_mass, restitution = ecs.get_collision_body_values(entity_id)
This calls into a native ECS implementation that either pushes the 2 return values and returns with return 2; (2 return values) or if the return values doesn't exist, push nothing and return 0; (zero return values).
This can be used in my game code like this:
local function debug_body(id)
local inv_mass, restitution = ecs.get_collision_body_values(id)
if inv_mass == nil then -- collision_body component not set, do nothing
return
end
---@cast restitution number
-- ^^ have to cast restitution number? -> number to avoid warning
print(inv_mass, restitution)
end
Would be nice if there was a way to annotate an "all or nothing" multiple return value type. E.g., a function will either return multiple return values (e.g., not number? but number) or that it will return nothing. Or I guess more generally, the ability to somehow specify a union of different multivalue return types.
FWIW, it'd be possible to return "a bunch of values" or "nothing" by using a table? return type. However, I'm trying very hard not to allocate tables in my hot game's hot paths, thus I favor concrete types and multiple return.
- Langage dominant
- Lua
- Étoiles
- 4.4k
- Forks
- 442
- Merge moyen
- 8 j 9 h
- PR mergées (30 j)
- 1
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.
Autres issues de LuaLS/lua-language-server
-
enhancement
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
LuaLS/lua-language-server#1776 ·
-
泛型for迭代器的类型推导漏掉了带__call的类 Ouverte
Difficulté 3/5 1-2 jours Accessibilité débutants 65/100
LuaLS/lua-language-server#3463 · 5 commentaires ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 55/100
LuaLS/lua-language-server#3461 ·
-
Difficulté 3/5 1-2 jours Accessibilité débutants 68/100
LuaLS/lua-language-server#3460 · 1 commentaire · 1 réaction ·
-
Difficulté 3/5 1-2 jours Accessibilité débutants 68/100
LuaLS/lua-language-server#3459 · 1 réaction ·
Toutes les issues de LuaLS/lua-language-server
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
openSUSE/python-rpm-macros#219 ·
-
bug mini.bracketed
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
-
accessibility bug typst
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
quarto-dev/quarto-cli#14947 · 2 commentaires ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
HenrikBengtsson/CBI-software#134 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
secondlife/slua#96 ·