package plugins
- Alphabetic
- Public
- Protected
Type Members
- trait BootstrapPlugin extends PluginBase with BootstrapModule
- abstract class BootstrapPluginDef[T] extends BootstrapPlugin with BootstrapModuleDef
- See also
- abstract final class ForcedRecompilationToken[T] extends AnyRef
This macro allows
distage
's compile-time checks to cooperate with Scala's incremental compilation: it forces recompilation of the macro that performs compile-time plan checking every time a PluginDef's body changes.This macro allows
distage
's compile-time checks to cooperate with Scala's incremental compilation: it forces recompilation of the macro that performs compile-time plan checking every time a PluginDef's body changes.It does that by generating a new unique type for each compiler session and assigning it to the class that inherits PluginDef. The "change of super type" of a plugin forces recompilation of all code that references it, and specifically of the code generated by izumi.distage.framework.PlanCheckMacro.
This allows compile-time checking macro to re-run on relevant changes and provide rapid feedback during development.
- Annotations
- @implicitNotFound()
- See also
- trait PluginBase extends ModuleBase
Non-abstract class or object inheritors of PluginBase will be found on the classpath by
distage-extension-plugins
scanning machinery.Non-abstract class or object inheritors of PluginBase will be found on the classpath by
distage-extension-plugins
scanning machinery. (izumi.distage.plugins.load.PluginLoader) - final case class PluginConfig(packagesEnabled: Seq[String], packagesDisabled: Seq[String], cachePackages: Boolean, debug: Boolean, merges: Seq[ModuleBase], overrides: Seq[ModuleBase]) extends Product with Serializable
- See also
- trait PluginConfigStatic extends AnyRef
- abstract class PluginDef[T] extends PluginBase with ModuleDef
Use it to define Plugins using izumi.distage.model.definition.dsl.ModuleDefDSL syntax
Use it to define Plugins using izumi.distage.model.definition.dsl.ModuleDefDSL syntax
object MyPlugin extends PluginDef { include(myModule[F]) make[Xa[F]].from[Xa.Impl[F]] }
- Note
Since this is an abstract class, you cannot mix it with other classes or use it as a mixin. Instead, you may inherit from PluginBase, which is a trait – but in that case compile-time checks will not re-run when the class is updated in that case. Alternatively, you may use izumi.distage.model.definition.dsl.IncludesDSL#include to compose modules as values instead of using inheritance.
- See also
Value Members
- object BootstrapPlugin
- object DebugProperties extends fundamentals.platform.properties.DebugProperties
Java properties that control the behavior of load.PluginLoader
Java properties that control the behavior of load.PluginLoader
- See also
- object ForcedRecompilationToken
- object PluginBase
- object PluginConfig extends PluginConfigStatic with Serializable
- object StaticPluginLoader
Scan the specified package *at compile-time* for classes and objects that inherit PluginBase
Scan the specified package *at compile-time* for classes and objects that inherit PluginBase
WARN: may interact badly with incremental compilation WARN: will _not_ find plugins defined in the current module, only those defined in dependency modules (similarly to how you cannot call Scala macros defined in the current module)
- See also