LuaLS / LuaLS/lua-language-server

Class definitions get confused with same filenames across folders.

Ouverte
#3,018 2 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

How are you using the lua-language-server?

Visual Studio Code Extension (sumneko.lua)

Which OS are you using?

Windows

What is the issue affecting?

Diagnostics/Syntax Checking

Expected Behaviour

I have two files, both named the same but in different paths. Each file has its own class and table structure name, which differs from each other.

class A doesn't have method "MyMethod"
class B does
When creating an instance of the class B, and using MyMethod from class B it says that Class A has undefined field "MyMethod" despite being an instance of class B

Renaming class B's file name to something else stops the undefined field warning.

I expect the classes to have differentiation based on the ---@class ClassName syntax, and not the file name.

Actual Behaviour

As you might expect from my description, it does give that warning until the file is renamed.

Reproduction steps
  1. Create a file "test/file.lua" with a class that doesn't implement "MyMethod"
  2. Create a file "file.lua" with a class that does implement "MyMethod"
  3. In your main file, require both, create an instance of both, and try to use MyMethod from instance from step 2
  4. Notice warning about class from step 1 not implementing MyMethod, despite not being used.
Additional Notes

In a small scale test, this didn't seem to happen. But in a full project, the program ran the method LLS says is undefined. Renaming the file and nothing else fixed it so it had something to do with that.

Log File

No response

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

Reproduisez l’avertissement avec test/file.lua, file.lua et un fichier main qui requiert les deux, comme indiqué dans les étapes de reproduction. Commencez par examiner les diagnostics et la vérification syntaxique autour de la résolution des classes et des tables ; le travail est terminé lorsque l’instance de file.lua est vérifiée par rapport à sa propre classe plutôt que par rapport à la classe du même nom dans test/file.lua.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
lua, vscode
Domaine
devtools
Type d'issue
Bug
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

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