You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Free the language server from Kiama and implement a test suite.
Found some bugs while reimplementing, and I've confirmed all of them
also exist in the old server.
It should be on-par with the old implementation in terms of features and
bugs.
Depends on effekt-lang/kiama#9.
**Differences to the old Server:**
* Added unit test suite
* New server runs single threaded and sequentially
* Compile on `didChange`, by default
* No Monto anymore, added a custom `$/effekt/publishIR` notification
instead.
**Implementation status:**
* [x] `initialize`
* [x] `shutdown` - not covered by unit tests - they cannot handle the
process exit
* [x] `exit` - not covered by unit tests - they cannot handle the
process exit
* [x] setTrace
* [x] Diagnostics `afterCompilation`
* [x] `didChange`
* [x] `didOpen`
* [x] `didSave`
* [x] `didClose`
* [ ] `hover`
* [x] for symbols
* [ ] 🐛 for holes: #549
* [ ] `documentSymbol`
* [x] impl & test
* [ ] 🐛 Fix spurious symbols at `(0, 0)`:
#895
* [ ] `references`
* [x] impl & test
* [ ] 🐛 Fix not all references being returned (see test case):
#896
* [x] `inlayHint`
* [x] impl & test
* [x] 🐛 inlayHints and hoverInfo sometimes return null (as in old
implementation):
* [x] inlayHints: #876
(fixed in #894)
* [x] hoverInfo: #366
(**can't reproduce**)
Note that the timing issue should be gone as we now run on
`newSingleThreadExecutor` (which claims "Tasks are guaranteed to execute
sequentially"), the caching issues have been fixed in #894.
* [ ] `getCodeActions`
* [x] port impl from old server
* [ ] 🐛 impl doesn't even work in old server:
#897
* [x] `definition`
* [ ] `notebookDocument/*`
* not implemented, student works on another branch
* [ ] publish IR (`$/effekt/publishIR`), replacing Monto
* [x] impl server and test (this PR)
* [x] impl client (effekt-lang/effekt-vscode#63)
* [ ] 🐛 many options (e.g. `target`) don't work because the server
only runs the compiler frontend - same issue with old server
Important questions to reviewers:
* [x] `effekt/jvm/src/main/scala/effekt/KiamaUtils.scala` is
MPL-licensed code from Kiama - what do we do with this?
* I decided to move it to Kiama to be safe.
---------
Co-authored-by: Marvin Borner <[email protected]>
0 commit comments