All Downloads are FREE. Search and download functionalities are using the official Maven repository.

scala.scalanative.optimizer.PassCompanion.scala Maven / Gradle / Ivy

The newest version!
package scala.scalanative
package optimizer

import tools.Config
import analysis.ClassHierarchy.Top
import nir.{Global, Defn}

trait AnyPassCompanion {

  /** Is it a factory for an injection pass? */
  def isInjectionPass: Boolean

  /** Instantiate the given pass. */
  def apply(config: Config, top: Top): AnyPass

  /** A sequence of extra dependencies that should be
   *  loaded by linker if given pass is enabled.
   */
  def depends: Seq[Global] = Seq()

  /** A sequence of extra definitions that should be
   *  injected into final assembly if given pass is enabled.
   */
  def injects: Seq[Defn] = Seq()
}

trait InjectCompanion extends AnyPassCompanion {

  override def isInjectionPass = true
}

trait PassCompanion extends AnyPassCompanion {

  override def isInjectionPass = false
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy