Replace sealed traits by abstract classes in order to generate less byte code

This commit is contained in:
Alexandre Archambault 2016-02-07 14:07:31 +01:00
parent 2ca57527eb
commit 56192a2cca
6 changed files with 43 additions and 43 deletions

View File

@ -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")
}

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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
)
}