Completion inside a list literal ignores the element type
Les mainteneurs répondent en général sous 1 jour
Personne n'a encore pris cette issue.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 48/100
- Type d'issue
- Bug
- Clarté
- Plutôt claire
- Activité
- Active
- Stack technique
- ocaml
- Domaine
- devtools
Piste de recherche
Start by comparing the completion context path for array literals with the Type_utils.extract_type behavior described for list<'a>. The issue names no test file, and notes there are no existing completion tests for list literals, so first locate the completion tests and add coverage for typed list elements, including partially typed elements and an empty list. Done means completions use the list element type as they do for arrays.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
What is broken
Completion inside a list{…} literal doesn't use the list's element type, while the same position in an array literal does:
type kind = First | Second
let arr: array<kind> = [First, ]
// ^com First, Second
let ys: list<kind> = list{First, }
// ^com nothing
let zs: list<kind> = list{First, Se}
// ^com only `module Set`
let f = (x: list<kind>) => x
let _ = f(list{})
// ^com nothing
The completion log shows why: for the array the context path is array<Type[kind]> and then Type[kind], but for the list it is Type[list], so the element type kind is lost. A partly typed element then falls back to untyped completion (module Set for Se).
Checked on master ac7357822e. There are no completion tests for list literals, which is why it went unnoticed. It came up while fixing array spreads in #9199 (#9183), which leaves lists alone for this reason.
Possible cause (speculation only)
Type_utils.extract_type has no case for list<'a>, and looking up the built-in list type fails, so there is no element type to complete from.
A related limit: list{...xs, } with a trailing hole is parsed as the plain expression xs, because a spread in tail position is a :: chain, so no completion position remains there.
🤖 Generated with Claude Code
- Langage dominant
- OCaml
- Étoiles
- 7.5k
- Forks
- 484
- Merge moyen
- 16 h 57 min
- PR mergées (30 j)
- 258
Préparer son environnement
Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Lire le guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de rescript-lang/rescript
-
Exception analysis does not know the Temporal `fromStringOrThrow` functionsPeut-être pris @cknitt l’a pris il y a 1 jour. Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
rescript-lang/rescript#9182 ·
Les mainteneurs répondent en général sous 1 jour
-
await in a functor body compiles to invalid JavaScriptPeut-être pris @mununki l’a pris il y a 1 jour. Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 25/100
rescript-lang/rescript#9219 ·
Les mainteneurs répondent en général sous 1 jour
-
`(() :> string)` compiles, and other coercions and variant spreads treat `bool` and `unit` as variantsPeut-être pris @mununki l’a pris il y a 1 jour. Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 35/100
rescript-lang/rescript#9216 ·
Les mainteneurs répondent en général sous 1 jour
-
A polymorphic variant argument of an external is evaluated twice, or inside a generated functionPeut-être pris @mununki l’a pris il y a 1 jour. Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 20/100
rescript-lang/rescript#9215 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 4/5 3-5 jours Accessibilité débutants 55/100
rescript-lang/rescript#9197 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de rescript-lang/rescript
Issues similaires
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
TencentCloud/octop-harness#228 ·
Les mainteneurs répondent en général sous 1 jour
-
ci: add swift-format lint stepOuvertearea:ci phase:dev priority:p1 type:chore
Difficulté 2/5 1-3 heures Accessibilité débutants 62/100
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
NousResearch/hermes-agent#149300 ·
Les mainteneurs répondent en général sous 1 jour
-
init --global under pnpm without pnpm setup hides the cause and suggests the same failing commandOuverteb:minor bug
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
software-mansion/argent#1770 ·
Les mainteneurs répondent en général sous 1 jour
-
auto:producer auto:security
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
fritzprix/libr-agent#2594 ·
Les mainteneurs répondent en général sous 1 jour