rescript-lang / rescript-lang/reanalyze
[Feature request] Integrate with `@deriving({abstract: light})`
Open
Nobody has claimed this yet.
- Dominant language
- OCaml
- Stars
- 281
- Forks
- 22
- Avg merge
- 1d 19h
- Merged PRs (30d)
- 7
Description
All the fields in the following script are reported as dead:
@deriving({abstract: light})
type person = {
name: string,
age: int,
}
let joe = person(~name="Joe", ~age=20)
let joeName = name(joe)
Report:
Warning Dead Type
File "src/TestBug.res", line 3, characters 2-14
person.name is a record label never used to read a value
<-- line 3
@dead("person.name") name: string,
Warning Dead Type
File "src/TestBug.res", line 4, characters 2-10
person.age is a record label never used to read a value
<-- line 4
@dead("person.age") age: int,
However, only age is not actually used in the code, while name shouldn't be reported.
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
Reproduce the report using the example in src/TestBug.res, including @deriving({abstract: light}), and compare the diagnostics for person.name and person.age. Done means the analyzer recognizes the name accessor as a read and reports only the unused age field.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- ocaml
- Domain
- compilers
- Issue type
- Feature
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 45/100