The Scala Plugin for IntelliJ IDEA offers two modes for generating error highlighting inside the IDE, Built-in and Compiler error highlighting. Built-in error highlighting is the regular highlighting mode of IntelliJ IDEA, which uses bespoke IntelliJ code analysis, annotations and quick fixes to offer leading code intelligence. Compiler error highlighting, on the other hand, invokes the Scala compiler and turns the errors, warnings and diagnostics produced by the compiler into presentable and actionable highlighting information and embeds them in the IDE.
Compiler Error Highlighting was initially introduced during the Scala 3 (Dotty) experimental development cycle. It started off as an alternative error highlighting mode which enabled basic support for Scala 3 inside IntelliJ IDEA. At the time, Compiler Error Highlighting was a necessary feature because Scala 3 is a completely different language compared to Scala 2, at least when viewed from the IDE code analysis perspective. It would take quite some time for all Scala 3 features to be finalized in the language itself, and some more time for the tooling and IDE support to catch up to the language. The compiler was the only tool that could offer language support while the language itself was going through drastic changes.
For a few years already, around the time Scala 3.0 stable was released, Compiler Error Highlighting became the default highlighting mode for Scala 3 projects. The feature itself was developed and expanded to fit these needs, but overall, its scope has remained mainly focused on supporting the basic use case of invoking the Scala compiler and showing the messages it produces in the editor.
Through gathering user feedback in various channels and speaking to users directly, we’ve become aware of the limitations of the feature in its current form. We’ve also gathered a load of good feature requests. The time has finally come to integrate these improvements, expand the scope of the Compiler Error Highlighting feature and make it a compelling alternative (or even augment) to the Built-in highlighting mode.
As part of the internship, you will have the opportunity to work within the Compiler Error Highlighting subsystem of the Scala Plugin for IntelliJ IDEA. You will get first-hand experience of our development and product dogfooding process. You will write new code in Scala 3 and help migrate the existing code from Scala 2 to Scala 3. You will have the opportunity to learn about the IntelliJ IDEA development platform and integrate the Compiler Error Highlighting feature within it. While general and specific changes and directions have already been planned, there will be more than enough opportunity for you to take part in the design and development of the feature and subsystem.
The goal of the internship is to ship the improved and expanded version of the Compiler Error Highlighting mode as a stable feature available to end users.
Being comfortable with writing Scala. While we do not expect you to already be a Scala expert, it will be mandatory to work with the language directly, as the Scala Plugin codebase is written in Scala (some parts in Scala 2, some parts in Scala 3). Help will be provided.
Being comfortable with working with the sbt build tool. We do not expect mastery of the build tool. Help will be provided.
A good grasp of concurrency and parallelism on the JVM. The IntelliJ IDEA threading model will be explained in detail. Good competency with asynchronous code execution will be required for successful completion of the internship.
Curiosity, willingness to learn, resourcefulness, proactivity and initiative will be greatly appreciated.
Flexibility and ability to adapt to changing requirements will be necessary. While the internship has a clear goal, we’re open to adapting the work with your inputs and to suit your working style.
Task and interview requirements:
For solving the task and during the interview itself, please refrain from using AI and code generation tools.
Use of AI will be allowed and encouraged after you start your internship at JetBrains.
For the interview itself, it will be required to have IntelliJ IDEA and the Scala Plugin installed and ready to use on your local machine.