microsoft / microsoft/TypeScript

JSDoc @type completion not working inside function argument

Ouverte
#62,281 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Domain: JSDoc Help Wanted Possible Improvement
Langage dominant
Go
Étoiles
111k
Forks
14.3k
Merge moyen
2 j 4 h
PR mergées (30 j)
132

Description

🔎 Search Terms

jsdoc, completion

🕗 Version & Regression Information

Never seems to have worked

⏯ Playground Link

No response

💻 Code

JSDoc has some completion issues with completions like this:

function someFunc(/** @type {^cursor here^} **/) {}

❌ Does not work - @type completion (in function argument) from @import with named argument

///<reference path="fourslash.ts" />

// @allowJS: true
// @checkJs: true
// @module: esnext

// @filename: ./a.ts
////export interface ABC {}

// @filename: ./b.js
/////** @import * as t from "./a" */
////function someFunc(/** @type {t./**/} */arg) {}

verify.completions({
    marker: "",
    includes: "ABC",
});

✅ Works - @type completion (in function argument) from @typedef and with named argument

///<reference path="fourslash.ts" />

// @allowJS: true
// @checkJs: true
// @module: esnext

// @filename: ./b.js
/////** @typedef {number} SomeNumber */
////function someFunc(/** @type {S/**/} */arg) {}

verify.completions({
    marker: "",
    includes: "SomeNumber",
});

✅ Works - @type completion (not part of function argument) from @import completion inside

///<reference path="fourslash.ts" />

// @allowJS: true
// @checkJs: true
// @module: esnext

// @filename: ./a.ts
////export interface ABC {}

// @filename: ./b.js
/////** @import * as t from "./a" */
/////** @type {t./**/} */

verify.completions({
    marker: "",
    includes: "ABC",
});

❌ Does not work - @type completion (in function argument) from @import (argument not named yet)

///<reference path="fourslash.ts" />

// @allowJS: true
// @checkJs: true
// @module: esnext

// @filename: ./a.ts
////export interface ABC {}

// @filename: ./b.js
/////** @import * as t from "./a" */
////function someFunc(/** @type {t./**/} */) {}

verify.completions({
    marker: "",
    includes: "ABC",
});

❌ Does not work - @type completion (in function argument) @typedef (argument not named yet)

///<reference path="fourslash.ts" />

// @allowJS: true
// @checkJs: true
// @module: esnext

// @filename: ./b.js
/////** @typedef {number} SomeNumber */
////function someFunc(/** @type {S/**/} */) {}

verify.completions({
    marker: "",
    includes: "SomeNumber",
});
🙁 Actual behavior

See above, completions are missing.

🙂 Expected behavior

See above, completions are present.

Additional information about the issue

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

Commencez par les reproductions fourslash.ts de l’issue, en particulier les cas de b.js virtuel qui utilisent JSDoc @type dans un argument de fonction. Suivez la gestion des completions par le TypeScript language service pour ces expressions de type JSDoc et comparez-la aux cas @typedef et autonomes qui fonctionnent. Le travail est terminé lorsque la couverture de régression montre des completions pour ABC et SomeNumber dans les cas manquants.

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

Évaluation

Stack technique
javascript, typescript
Domaine
developer-experience, tooling
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
À l'abandon
Clarté
Clairement spécifiée
Accessibilité débutants
55/100

Recevez les nouvelles issues par e-mail

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