Ever wish you could inject some extra analysis into the compiler pipeline for your project? You could write a compiler plugin, package, distribute it, and depend on it, but the activation energy for that is pretty high.
Boxer
shows you how to embed a custom compiler plugin
directly into a sub-project of your SBT project. With this
in place, you can edit the plugin, run compile, and immediately
see the results in the context of your project.
- SBT Project Definition
- Compiler Plugin Descriptor and Sources
The Scala version used is 2.12.x, but the same code also works in 2.11.x.
[info] Compiling 1 Scala source to /Users/jason/code/boxer/plugin/target/scala-2.12/classes...
[info] Packaging /Users/jason/code/boxer/plugin/target/scala-2.12/boxer_2.12-0.1-SNAPSHOT.jar ...
[info] Done packaging.
[info] Compiling 1 Scala source to /Users/jason/code/boxer/main/target/scala-2.12/classes...
[warn] /Users/jason/code/boxer/main/src/main/scala/demo/Demo.scala:8: Value class `Meter` instantiated!
[warn] println(m2)
[warn] ^
[warn] one warning found