From 56192a2cca2bf1bbd309f00f7fe77afe4add0156 Mon Sep 17 00:00:00 2001 From: Alexandre Archambault Date: Sun, 7 Feb 2016 14:07:31 +0100 Subject: [PATCH] Replace sealed traits by abstract classes in order to generate less byte code --- cache/src/main/scala/coursier/Cache.scala | 42 +++++++++---------- .../src/main/scala/coursier/CachePolicy.scala | 2 +- .../scala-2.11/coursier/cli/Coursier.scala | 2 +- .../coursier/core/ResolutionProcess.scala | 2 +- .../main/scala/coursier/core/Version.scala | 6 +-- .../main/scala/coursier/core/Versions.scala | 32 +++++++------- 6 files changed, 43 insertions(+), 43 deletions(-) diff --git a/cache/src/main/scala/coursier/Cache.scala b/cache/src/main/scala/coursier/Cache.scala index 99ab9a022..846828393 100644 --- a/cache/src/main/scala/coursier/Cache.scala +++ b/cache/src/main/scala/coursier/Cache.scala @@ -571,31 +571,29 @@ object Cache { } -sealed trait FileError extends Product with Serializable { - def message: String -} +sealed abstract class FileError(val message: String) extends Product with Serializable object FileError { - case class DownloadError(message0: String) extends FileError { - def message = s"Download error: $message0" - } - case class NotFound(file: String) extends FileError { - def message = s"Not found: $file" - } - case class ChecksumNotFound(sumType: String, file: String) extends FileError { - def message = s"$sumType checksum not found: $file" - } - case class WrongChecksum(sumType: String, got: String, expected: String, file: String, sumFile: String) extends FileError { - def message = s"$sumType checksum validation failed: $file" - } + final case class DownloadError(reason: String) extends FileError(s"Download error: $reason") - sealed trait Recoverable extends FileError - case class Locked(file: File) extends Recoverable { - def message = s"Locked: $file" - } - case class ConcurrentDownload(url: String) extends Recoverable { - def message = s"Concurrent download: $url" - } + final case class NotFound(file: String) extends FileError(s"Not found: $file") + + final case class ChecksumNotFound( + sumType: String, + file: String + ) extends FileError(s"$sumType checksum not found: $file") + + final case class WrongChecksum( + sumType: String, + got: String, + expected: String, + file: String, + sumFile: String + ) extends FileError(s"$sumType checksum validation failed: $file") + + sealed abstract class Recoverable(message: String) extends FileError(message) + final case class Locked(file: File) extends Recoverable(s"Locked: $file") + final case class ConcurrentDownload(url: String) extends Recoverable(s"Concurrent download: $url") } diff --git a/cache/src/main/scala/coursier/CachePolicy.scala b/cache/src/main/scala/coursier/CachePolicy.scala index 0bf51e6e3..2e739640a 100644 --- a/cache/src/main/scala/coursier/CachePolicy.scala +++ b/cache/src/main/scala/coursier/CachePolicy.scala @@ -1,6 +1,6 @@ package coursier -sealed trait CachePolicy extends Product with Serializable +sealed abstract class CachePolicy extends Product with Serializable object CachePolicy { case object LocalOnly extends CachePolicy diff --git a/cli/src/main/scala-2.11/coursier/cli/Coursier.scala b/cli/src/main/scala-2.11/coursier/cli/Coursier.scala index 64db345eb..d1a8af958 100644 --- a/cli/src/main/scala-2.11/coursier/cli/Coursier.scala +++ b/cli/src/main/scala-2.11/coursier/cli/Coursier.scala @@ -62,7 +62,7 @@ case class CacheOptions( cache: String = Cache.defaultBase.toString ) -sealed trait CoursierCommand extends Command +sealed abstract class CoursierCommand extends Command case class Resolve( @Recurse diff --git a/core/shared/src/main/scala/coursier/core/ResolutionProcess.scala b/core/shared/src/main/scala/coursier/core/ResolutionProcess.scala index c26d4608d..8d6f3b43f 100644 --- a/core/shared/src/main/scala/coursier/core/ResolutionProcess.scala +++ b/core/shared/src/main/scala/coursier/core/ResolutionProcess.scala @@ -5,7 +5,7 @@ import scalaz._ import scala.annotation.tailrec -sealed trait ResolutionProcess { +sealed abstract class ResolutionProcess { def run[F[_]]( fetch: Fetch.Metadata[F], maxIterations: Int = 50 diff --git a/core/shared/src/main/scala/coursier/core/Version.scala b/core/shared/src/main/scala/coursier/core/Version.scala index 800a601a0..34da4d71d 100644 --- a/core/shared/src/main/scala/coursier/core/Version.scala +++ b/core/shared/src/main/scala/coursier/core/Version.scala @@ -20,7 +20,7 @@ case class Version(repr: String) extends Ordered[Version] { object Version { - sealed trait Item extends Ordered[Item] { + sealed abstract class Item extends Ordered[Item] { def compare(other: Item): Int = (this, other) match { case (Number(a), Number(b)) => a.compare(b) @@ -43,7 +43,7 @@ object Version { def compareToEmpty: Int = 1 } - sealed trait Numeric extends Item { + sealed abstract class Numeric extends Item { def repr: String def next: Numeric } @@ -93,7 +93,7 @@ object Version { val qualifiersMap = qualifiers.map(q => q.value -> q).toMap object Tokenizer { - sealed trait Separator + sealed abstract class Separator case object Dot extends Separator case object Hyphen extends Separator case object Underscore extends Separator diff --git a/core/shared/src/main/scala/coursier/core/Versions.scala b/core/shared/src/main/scala/coursier/core/Versions.scala index 3ecf08aa0..5398f262c 100644 --- a/core/shared/src/main/scala/coursier/core/Versions.scala +++ b/core/shared/src/main/scala/coursier/core/Versions.scala @@ -82,21 +82,23 @@ object VersionInterval { val zero = VersionInterval(None, None, fromIncluded = false, toIncluded = false) } -sealed trait VersionConstraint { - def interval: VersionInterval - def repr: String -} +sealed abstract class VersionConstraint( + val interval: VersionInterval, + val repr: String +) + object VersionConstraint { /** Currently treated as minimum... */ - final case class Preferred(version: Version) extends VersionConstraint { - def interval: VersionInterval = VersionInterval(Some(version), Option.empty, fromIncluded = true, toIncluded = false) - def repr: String = version.repr - } - final case class Interval(interval: VersionInterval) extends VersionConstraint { - def repr: String = interval.repr - } - case object None extends VersionConstraint { - val interval = VersionInterval.zero - def repr: String = "" // Once parsed, "(,)" becomes "" because of this - } + final case class Preferred(version: Version) extends VersionConstraint( + VersionInterval(Some(version), Option.empty, fromIncluded = true, toIncluded = false), + version.repr + ) + final case class Interval(interval0: VersionInterval) extends VersionConstraint( + interval0, + interval0.repr + ) + case object None extends VersionConstraint( + VersionInterval.zero, + "" // Once parsed, "(,)" becomes "" because of this + ) }