LuaLS / LuaLS/lua-language-server

Two Rule Suggestions: multiple returns in function calls / table definitions and string concatenation

Ouverte
#2,699 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

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

### multiple returns in function calls / table definitions

```lua
local a = { "one", "two", "three" }
local b = { unpack(a), "four" }
local c = { "four", unpack(a) }
print(#b) -- 2
print(#c) -- 4
```
`unpack`'s behavior is quite unintuitive; when the output is not in the last position of a table definition, only the first element is actually included in the new table. (In fact, this not only applies to `unpack`, but to every function that returns multiple values – only happens most often with `unpack` that will people will notice, I assume.)

see explainer in the docs: https://www.lua.org/manual/5.3/manual.html#3.4

I think a diagnostic that reminds one of such cases would be very useful, since it's a common gotcha in lua.

## string concatenation

```lua
print("foo" + "bar")
```
Common mistake to not use `..` for string concatenation. Even though I am used to lua, it still happens to me all the time after coming back from writing in a different language. A diagnostic here would be useful. (And I am actually a bit surprised that there isn't one yet.)

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par la section du manuel de Lua 5.3 liée dans l’issue, en particulier par les règles des retours multiples illustrées par les exemples de tables. Localisez ensuite les points d’entrée des diagnostics du language server pour les expressions à retours multiples dans les définitions de tables et pour l’utilisation de + avec des chaînes. Le travail est terminé lorsque les deux exemples produisent des diagnostics utiles sans signaler à tort du code Lua valide.

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é
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
42/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.