jaredly / jaredly/reason-language-server
Crash when `graphql_ppx` raises compile time error
- Dominant language
- OCaml
- Stars
- 649
- Forks
- 85
- PR merge metrics
- No merged PRs in 30d
Description
When `graphql_ppx` raises compile time error RLS hangs w/ 100% CPU.
Log
```
{"jsonrpc":"2.0","method":"textDocument/didSave","params":{"textDocument":{"uri":"file:///Users/Alex/Dev/Projects/app/web/src/models/domain/User.re","version":1}}}
>> Build system: /Users/Alex/Dev/Projects/app/node_modules/bs-platform/lib/bsb.exe -make-world
ninja: no work to do.
ninja: no work to do.
ninja: no work to do.
ninja: no work to do.
ninja: no work to do.
ninja: no work to do.
ninja: no work to do.
ninja: no work to do.
ninja: no work to do.
[1/2] [34mBuilding[39m [2msrc/models/domain/User.mlast[22m
[2/2] [34mBuilding[39m [2msrc/models/domain/User.mlast.d[22m
[1/4] [34mBuilding[39m [2msrc/models/domain/User.cmj[22m
[2/4] [34mBuilding[39m [2msrc/models/domain/Auth.cmj[22m
[3/4] [34mBuilding[39m [2msrc/ui/auth/SignupForm.cmj[22m
[4/4] [34mBuilding[39m [2msrc/api/mutations/SignupMutation.cmj[22m
We've found a bug for you!
(No file name)
Some record fields are undefined: createdAt
>> Error
Affected files file://(No
Cleaning bsconfig.json
Sending notification {"jsonrpc": "2.0", "method": "textDocument/publishDiagnostics", "params": {"uri": "file:///Users/Alex/Dev/Projects/app/web/bsconfig.json", "diagnostics": []}}
Running diagnostics for file:///Users/Alex/Dev/Projects/app/web/src/api/mutations/SignupMutation.re
running bsc /Users/Alex/Dev/Projects/app/node_modules/bs-platform/lib/bsc.exe -c -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/ui' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/ui/auth' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/ui/layout' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/locales' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/locales/extractor' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/locales/translations' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/shell' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/models' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/models/domain' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/libs' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/forms' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/forms/TextField' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/.ui' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/styles' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/components' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/components/Svg' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/components/Portal' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/components/Spinner' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/components/Headings' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/components/Button' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/components/Logo' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/components/Icon' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/components/Modal' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/components/Control' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/icons' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/api' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/api/transport' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/api/mutations' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/api/queries' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/bindings' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/services' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-platform/lib/ocaml' -I '/Users/Alex/Dev/Projects/app/node_modules/@glennsl/bs-json/lib/bs/src' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-react-intl/lib/bs/src' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/core' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/file' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/canvas' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/dom' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/dom/ranges' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/dom/css' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/dom/nodes' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/dom/html' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/dom/sets' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/dom/traversal' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/dom/selection' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/dom/geometry' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/dom/events' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/dom/validation' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-fetch/lib/bs/src' -I '/Users/Alex/Dev/Projects/app/node_modules/re-formality/lib/bs/src' -I '/Users/Alex/Dev/Projects/app/node_modules/re-classnames/lib/bs/src' -I '/Users/Alex/Dev/Projects/app/node_modules/re-css/lib/bs/src' -I '/Users/Alex/Dev/Projects/app/node_modules/reason-react/lib/bs/src' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-platform/lib/ocaml' -bin-annot -bs-no-builtin-ppx-ml -bs-package-name app-web -bs-package-output es6:node_modules/.lsp -ppx /Users/Alex/Dev/Projects/app/node_modules/graphql_ppx/ppx -ppx '/Users/Alex/Dev/Projects/app/node_modules/bs-platform/lib/reactjs_jsx_ppx_2.exe' -ppx /Users/Alex/Dev/Projects/app/node_modules/bs-platform/lib/bsppx.exe -nostdlib -open Belt -color always -w -30-40+6+7+27+32..39+44+45+101-44 -bs-re-out -impl /Users/Alex/Dev/Projects/app/web/node_modules/.lsp/SignupMutation.ast with pwd /Users/Alex/Dev/Projects/app/web
type error here [1mFile "[1m_none_", line 1[0m[0m:
[1;31mError[0m: Some record fields are undefined: createdAt
Sending notification {"jsonrpc": "2.0", "method": "textDocument/publishDiagnostics", "params": {"uri": "file:///Users/Alex/Dev/Projects/app/web/src/api/mutations/SignupMutation.re", "diagnostics": [{"range": {"start": {"line": 0, "character": 0}, "end": {"line": 0, "character": 0}}, "message": "File \"_none_\", line 1:\nError: Some record fields are undefined: createdAt", "severity": 1}]}}
Running diagnostics for file:///Users/Alex/Dev/Projects/app/web/src/ui/auth/SignupForm.re
running bsc /Users/Alex/Dev/Projects/app/node_modules/bs-platform/lib/bsc.exe -c -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/ui' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/ui/auth' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/ui/layout' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/locales' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/locales/extractor' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/locales/translations' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/shell' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/models' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/models/domain' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/libs' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/forms' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/forms/TextField' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/.ui' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/styles' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/components' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/components/Svg' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/components/Portal' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/components/Spinner' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/components/Headings' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/components/Button' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/components/Logo' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/components/Icon' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/components/Modal' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/components/Control' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/icons' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/api' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/api/transport' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/api/mutations' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/api/queries' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/bindings' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/services' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-platform/lib/ocaml' -I '/Users/Alex/Dev/Projects/app/node_modules/@glennsl/bs-json/lib/bs/src' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-react-intl/lib/bs/src' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/core' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/file' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/canvas' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/dom' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/dom/ranges' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/dom/css' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/dom/nodes' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/dom/html' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/dom/sets' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/dom/traversal' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/dom/selection' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/dom/geometry' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/dom/events' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/dom/validation' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-fetch/lib/bs/src' -I '/Users/Alex/Dev/Projects/app/node_modules/re-formality/lib/bs/src' -I '/Users/Alex/Dev/Projects/app/node_modules/re-classnames/lib/bs/src' -I '/Users/Alex/Dev/Projects/app/node_modules/re-css/lib/bs/src' -I '/Users/Alex/Dev/Projects/app/node_modules/reason-react/lib/bs/src' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-platform/lib/ocaml' -bin-annot -bs-no-builtin-ppx-ml -bs-package-name app-web -bs-package-output es6:node_modules/.lsp -ppx /Users/Alex/Dev/Projects/app/node_modules/graphql_ppx/ppx -ppx '/Users/Alex/Dev/Projects/app/node_modules/bs-platform/lib/reactjs_jsx_ppx_2.exe' -ppx /Users/Alex/Dev/Projects/app/node_modules/bs-platform/lib/bsppx.exe -nostdlib -open Belt -color always -w -30-40+6+7+27+32..39+44+45+101-44 -bs-re-out -impl /Users/Alex/Dev/Projects/app/web/node_modules/.lsp/SignupForm.ast with pwd /Users/Alex/Dev/Projects/app/web
Ident!! Formality.Async.Make
Ident!! SignupForm
<< Replacing lastDefinitions for file:///Users/Alex/Dev/Projects/app/web/src/ui/auth/SignupForm.re
Sending notification {"jsonrpc": "2.0", "method": "textDocument/publishDiagnostics", "params": {"uri": "file:///Users/Alex/Dev/Projects/app/web/src/ui/auth/SignupForm.re", "diagnostics": []}}
Running diagnostics for file:///Users/Alex/Dev/Projects/app/web/src/models/domain/User.re
running bsc /Users/Alex/Dev/Projects/app/node_modules/bs-platform/lib/bsc.exe -c -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/ui' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/ui/auth' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/ui/layout' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/locales' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/locales/extractor' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/locales/translations' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/shell' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/models' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/models/domain' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/libs' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/forms' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/forms/TextField' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/.ui' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/styles' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/components' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/components/Svg' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/components/Portal' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/components/Spinner' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/components/Headings' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/components/Button' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/components/Logo' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/components/Icon' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/components/Modal' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/components/Control' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/styleguide/icons' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/api' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/api/transport' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/api/mutations' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/api/queries' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/bindings' -I '/Users/Alex/Dev/Projects/app/web/lib/bs/src/services' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-platform/lib/ocaml' -I '/Users/Alex/Dev/Projects/app/node_modules/@glennsl/bs-json/lib/bs/src' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-react-intl/lib/bs/src' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/core' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/file' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/canvas' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/dom' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/dom/ranges' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/dom/css' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/dom/nodes' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/dom/html' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/dom/sets' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/dom/traversal' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/dom/selection' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/dom/geometry' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/dom/events' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-webapi/lib/bs/src/dom/validation' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-fetch/lib/bs/src' -I '/Users/Alex/Dev/Projects/app/node_modules/re-formality/lib/bs/src' -I '/Users/Alex/Dev/Projects/app/node_modules/re-classnames/lib/bs/src' -I '/Users/Alex/Dev/Projects/app/node_modules/re-css/lib/bs/src' -I '/Users/Alex/Dev/Projects/app/node_modules/reason-react/lib/bs/src' -I '/Users/Alex/Dev/Projects/app/node_modules/bs-platform/lib/ocaml' -bin-annot -bs-no-builtin-ppx-ml -bs-package-name app-web -bs-package-output es6:node_modules/.lsp -ppx /Users/Alex/Dev/Projects/app/node_modules/graphql_ppx/ppx -ppx '/Users/Alex/Dev/Projects/app/node_modules/bs-platform/lib/reactjs_jsx_ppx_2.exe' -ppx /Users/Alex/Dev/Projects/app/node_modules/bs-platform/lib/bsppx.exe -nostdlib -open Belt -color always -w -30-40+6+7+27+32..39+44+45+101-44 -bs-re-out -impl /Users/Alex/Dev/Projects/app/web/node_modules/.lsp/User.ast with pwd /Users/Alex/Dev/Projects/app/web
<< Replacing lastDefinitions for file:///Users/Alex/Dev/Projects/app/web/src/models/domain/User.re
Sending notification {"jsonrpc": "2.0", "method": "textDocument/publishDiagnostics", "params": {"uri": "file:///Users/Alex/Dev/Projects/app/web/src/models/domain/User.re", "diagnostics": []}}
```
Contributor guide
No contributing guide indexed for this repository
Research direction
Reproduce the failure by saving a Reason file that causes graphql_ppx to report the "Some record fields are undefined: createdAt" compile-time error, then trace the language server's diagnostic handling after the build-system output. Done means the language server reports the compile error without hanging or consuming 100% CPU.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- ocaml
- Domain
- devtools
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100