rescript-lang / rescript-lang/rescript
broken @as in external does weird things
Open
Nobody has claimed this yet.
- Dominant language
- OCaml
- Stars
- 7.5k
- Forks
- 485
- Avg merge
- 1d 2h
- Merged PRs (30d)
- 55
Description
i just inlined a small binding in a file:
module Node = {
module Fs = {
@module("node:fs") external existsSync: string => bool = "existsSync"
@module("node:fs")
external readFileSync: (string, @as(json`"utf8`) _) => string = "readFileSync"
}
}
i missed the closing " after utf8. having format on save, the formatter did a weird change:
external readFileSync: ((string, @as(json`"utf8`) _)) => string = "readFileSync"
it added a double set of parens. this is a really edge case scenario so you may throw this in the trash if you like
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing the formatter behavior with the external binding and malformed @as(json"utf8) snippet shown in the issue. Trace the formatter handling for external declarations and @as syntax; done means formatting this input no longer adds the extra pair of parentheses.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- ocaml
- Domain
- compilers, tooling
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 28/100