Method signature and method documentation can be out of sync in IntelliSense

Ouverte
#486 4 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
45/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
À l'abandon
Stack technique
typescript, vscode

Piste de recherche

Commencez par reproduire le comportement avec la requête QL de l’issue et examinez le chemin IntelliSense qui combine les signatures de méthodes avec QLDoc. Le travail est terminé lorsque la liste des paramètres et la documentation affichées proviennent de la même définition de méthode lorsqu’un override ne possède pas son propre QLDoc.

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

Description

bug VSCode

Describe the bug
This was discussed on Slack where I suggested this could be handled via a compiler warning. Thinking about it some more, however, I think it could equally be handled through a small change in the IDE.

(I wasn't sure whether to classify this as a bug, but it certainly is suprising and potentially confusing behaviour, so I figured "bug" was the most suitable label.)

To Reproduce
Create a query file with the following contents

class SmallNat extends int {
    SmallNat() { this in [0 .. 10] }
}
class Super extends int {
    Super() { this in [1, 2] }
    /** Gets the result of subtracting `bar` from `foo`. */
    int subtract(SmallNat foo, SmallNat bar) { result = foo - bar }
}
class Sub extends Super {
    Sub() { this = 1 }
    override int subtract(SmallNat bar, SmallNat foo) { result = bar - foo }
}
from Sub s, int val
where val = s.subtract(7, 5)
select val

If you hover over the call to s.subtract, the IntelliSense displayed will have the QLDoc associated with Super::subtract, but the parameter list associated with Sub::subtract (and thus incorrectly specify the behaviour of Sub::subtract).

Expected behavior
The parameter list should agree with the QLDoc presented. The most convenient way of achieving this would be to simply reuse the parameter list from Super::subtract when Sub::subtract doesn't supply any QLDoc of its own. In other words, making sure that the parameter list displayed comes from the same method definition as the QLDoc displayed.

Langage dominant
TypeScript
Étoiles
539
Forks
240
Merge moyen
2 j 6 h
PR mergées (30 j)
29

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.

Autres issues de github/vscode-codeql

Toutes les issues de github/vscode-codeql

Issues similaires

Plus d'issues TypeScript

Recevez les nouvelles issues par e-mail

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