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

scala.build.compiler.ScalaCompiler.scala Maven / Gradle / Ivy

package scala.build.compiler

import scala.build.{Logger, Positioned, Project}

trait ScalaCompiler {
  def jvmVersion: Option[Positioned[Int]]
  def prepareProject(
    project: Project,
    logger: Logger
  ): Boolean
  def compile(
    project: Project,
    logger: Logger
  ): Boolean
  def shutdown(): Unit

  def usesClassDir: Boolean = true
}

object ScalaCompiler {
  final case class IgnoreScala2(compiler: ScalaCompiler) extends ScalaCompiler {
    private def ignore(
      project: Project,
      logger: Logger
    ): Boolean =
      project.scalaCompiler.exists { scalaCompiler0 =>
        val scalaVer = scalaCompiler0.scalaVersion
        val isScala2 = scalaVer.startsWith("2.")
        logger.debug(s"Ignoring compilation for Scala version $scalaVer")
        isScala2
      }

    def jvmVersion: Option[Positioned[Int]] =
      compiler.jvmVersion
    def prepareProject(
      project: Project,
      logger: Logger
    ): Boolean =
      ignore(project, logger) ||
      compiler.prepareProject(project, logger)
    def compile(
      project: Project,
      logger: Logger
    ): Boolean =
      ignore(project, logger) ||
      compiler.compile(project, logger)
    def shutdown(): Unit =
      compiler.shutdown()
    override def usesClassDir: Boolean =
      compiler.usesClassDir
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy