Implement a cached incremental ScalaCompiler that has been instrumented with the dependency analysis plugin to do incremental compilation.
Abstract over the creation of ClasspathOptions by providing methods that create typical classpath options based on the desired use-case.
Construct the list of compiler arguments that are passed to the Scala compiler based on the current xsbti.compile.ScalaInstance and the user-defined xsbti.compile.ClasspathOptions.
Manage a number of maxInstance
of cached Scala compilers.
Manage a number of maxInstance
of cached Scala compilers.
Represent a string that contains the compiler output (warnings and error messages, etc) that have been reported by LoggerReporter and the logger.
Provide a basic interface to the Scala Compiler that does not analyze dependencies nor does any kind of incremental compilation.
Provide a basic interface to the Scala Compiler that does not analyze dependencies nor does any kind of incremental compilation.
This interface is called in the same virtual machine where it's instantiated. It's useful for raw compilation of sources, such as those of the compiler interface (bridge) and plugin code.
Define ClasspathOptionsUtil object for Scala API consumption.
Define helpers to create CompileOutput to pass to the incremental compiler.
Define helpers to create CompileOutput to pass to the incremental compiler. Both SingleOutput and MultipleOutput are supported.
Define helpers to create compiler caches.
Construct the list of compiler arguments that are passed to the Scala compiler based on the current xsbti.compile.ScalaInstance and the user-defined xsbti.compile.ClasspathOptions.
This is required because Scala compiler arguments change depending on the Scala version, e.g. the jars for the Scala library and the Scala compiler have to be present in the classpath and match the Scala version of the current Scala compiler.
The Scala home property (
scala.home
) must be unset because Scala puts jars in that directory and pass it in asbootclasspath
. Therefore, the contents of this property are managed by this implementation and it's strictly forbidden that the client manages this property.