Integrating IDEs with Dotty, The Experimental Scala Compiler
summary
Dotty exposes a small interactive API and uses TASTy so IDEs see full typed trees stored in TASTy for both open files and classpath artifacts, enabling uniform queries like go‑to‑definition, find‑references, completion and rename. The LSP server is implemented with Eclipse LSP4J and integrates with VS Code; go‑to‑definition and most features are only a few hundred to under a thousand lines of glue code. Debugging supports expression evaluation by lifting expressions to generated static methods, sending class bytes to the remote JVM via the Java debug adapter.
AI-written summary · about
chapters (21)
- 0:00INTEGRATING IDES WITH DOTTY
- 0:53A CHANCE TO REDESIGN COMPONENTS
- 1:30TOOLING
- 1:55STATE OF THE ART
- 3:08DESIGN PRINCIPLES
- 4:57SOURCE CODE
- 5:33TREE AFTER TYPECHECKING
- 6:16TREE AFTER CONSTANT FOLDING
- 6:34QUERYING THE COMPILER
- 12:16THE IDE PORTABILITY PROBLEM
- 14:13IMPLEMENTING THE DOTTY LANGUAGE SERVER
- 17:04SBT INTEGRATION
- 17:41CONFIGURATION FILES
- 19:03BUILD SERVER PROTOCOL
- 23:22GOING FURTHER: DEBUGGER SUPPORT
- 24:40EXPRESSION EVALUATION
- 25:56RUN THE COMPILER PIPELINE
- 26:30EXTRACT TO A STATIC METHOD
- 35:35FUTURE WORK
- 36:53CONCLUSION
- 38:18QUESTIONS ?








