Create interface: doc comments are reindented, and `@deprecated` and doc comments on values are dropped
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 35/100
- Tipo de issue
- Bug
- Clareza
- Razoavelmente clara
- Status de atividade
- Ativa
- Stack de tecnologia
- javascript, ocaml
- Domínio
- compilers
Direção de pesquisa
The reindentation and dropped attributes both come from analysis/src/create_interface.ml: start at literal_lines, which marks only string and template tokens as verbatim, and at the Sig_value case, which prints values from their type. Check whether doc comments and the @deprecated attribute are carried through for let values the way they are for external. Done when a multi-line doc comment in a nested module keeps its original indentation in the generated .resi and let f keeps its doc and deprecation attribute.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Found by differential semantic drift analysis from b123b7c3 to c10223e8.
What is broken
-
Doc comments are reindented (since #9144). In a nested module, the lines of a multi-line doc comment after its first are shifted to the declaration's indentation:
module A = { module B = { /** Example: ```rescript let v: t = 1 ``` */ type t = int } }The generated
.resiindents```rescript,let v: t = 1and```by four spaces.rescript-tools docthen reads"Example:\n ```rescript\n let v: t = 1\n ```"from the.resiand"Example:\n```rescript\nlet v: t = 1\n```"from the.res: the fenced block becomes an indented code block. Relative indentation inside a doc comment also collapses (a line at column 0 inside a type at column 4 moves to column 4). #9144 copies lines inside string and template literals verbatim because reindenting them "would change its value"; a doc comment is the string payload of@res.doc.literal_linesmarks only string and template tokens as verbatim. -
@deprecatedand doc comments onletvalues are dropped (before this range as well). For/** Doc of f. */ @deprecated("use g") let f = x => x + 1 let g = x => x + 1the generated interface is
let f: int => intandlet g: int => int. A module callingDep.f(1)gets warning 3 without the.resiand none with it. Anexternalkeeps both attributes. #9096 covers type declarations; theSig_valuecase prints values from their type.
Possible cause (speculation only)
The reindentation added by #9144 protects string and template literals but not comments, although #9096 had already made doc comments part of the copied text.
🤖 Generated with Claude Code
- Linguagem predominante
- OCaml
- Estrelas
- 7.5k
- Forks
- 484
- Merge médio
- 16h 57min
- PRs com merge (30d)
- 258
Preparar o ambiente
Inicia o contêiner de desenvolvimento do projeto no navegador, com a sua própria conta do GitHub.
- Sem Dockerfile nem arquivo Docker Compose
- Tem um modelo de pull request
- Ler o guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de rescript-lang/rescript
-
Exception analysis does not know the Temporal `fromStringOrThrow` functionsTalvez já em andamento @cknitt assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
rescript-lang/rescript#9182 ·
Mantenedores costumam responder em até 1 dia
-
await in a functor body compiles to invalid JavaScriptTalvez já em andamento @mununki assumiu hoje. Aberta
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 25/100
rescript-lang/rescript#9219 ·
Mantenedores costumam responder em até 1 dia
-
`(() :> string)` compiles, and other coercions and variant spreads treat `bool` and `unit` as variantsTalvez já em andamento @mununki assumiu hoje. Aberta
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 35/100
rescript-lang/rescript#9216 ·
Mantenedores costumam responder em até 1 dia
-
A polymorphic variant argument of an external is evaluated twice, or inside a generated functionTalvez já em andamento @mununki assumiu hoje. Aberta
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 20/100
rescript-lang/rescript#9215 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 48/100
rescript-lang/rescript#9212 ·
Mantenedores costumam responder em até 1 dia
Todas as issues de rescript-lang/rescript
Issues semelhantes
-
bug stdlib
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
Mantenedores costumam responder em até 1 dia
-
0.kind: enhancement 9.needs: package (update)
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 62/100
Mantenedores costumam responder em até 1 dia
-
S3: friction & debt ws:tooling
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
MedakaLang/medaka#4865 ·
Mantenedores costumam responder em até 1 dia
-
subsystem: saw-core type: bug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 65/100
GaloisInc/saw-script#3516 ·
Mantenedores costumam responder em até 1 dia
-
Bug: the Atlas reports the five injected `$` helpers as unknown identifiers, including in the default scaffoldTalvez já em andamento @ShahadatTest assumiu hoje. Abertabug Compiler difficulty:easy good first issue help wanted Tooling
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
Avenx-JS/avenx-js#1615 · 1 comentário ·
Mantenedores costumam responder em até 1 dia