microsoft / microsoft/TypeScript

JSDoc @type completion not working inside function argument

Abierto
#62,281 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Domain: JSDoc Help Wanted Possible Improvement
Lenguaje dominante
Go
Estrellas
111k
Forks
14.3k
Merge medio
2 d 4 h
PR fusionados (30 d)
132

Descripción

### 🔎 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:

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

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

// @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

```
///

// @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

```
///

// @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)
```
///

// @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)

```
///

// @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_

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza con las reproducciones fourslash.ts del issue, especialmente los casos de b.js virtual que usan JSDoc @type dentro de un argumento de función. Sigue el manejo de completions del TypeScript language service para estas expresiones de tipo JSDoc y compáralo con los casos funcionales de @typedef y los casos independientes. El trabajo estará terminado cuando la cobertura de regresión muestre completions de ABC y SomeNumber en los casos que faltan.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
javascript, typescript
Área
developer-experience, tooling
Tipo de issue
Error
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Estancado
Claridad
Bien especificado
Aptitud para principiantes
55/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.