override def compareTo()

in src/main/scala/kotlin/KotlinVersion.scala [90:125]


    override def compareTo(that: Kind): Int = (this, that) match {
      // same kinds
      case (Kind.Release, Kind.Release) =>
        0
      case (Kind.ReleaseCandidate(num1), Kind.ReleaseCandidate(num2)) =>
        num1.compareTo(num2)
      case (Kind.Beta(num1), Kind.Beta(num2)) =>
        num1.compareTo(num2)
      case (Kind.Eap(num1), Kind.Eap(num2)) =>
        num1.compareTo(num2)
      case (Kind.Milestone(num1), Kind.Milestone(num2)) =>
        if (num1.isEmpty && num2.contains(1) || num2.isEmpty && num1.contains(1)) 0
        else num1.compareTo(num2)
      case (Kind.ForIde(_, parts1), Kind.ForIde(_, parts2)) =>
        parts1.compareTo(parts2)
      case (Kind.Dev, Kind.Dev) =>
        0
      case (Kind.Snapshot, Kind.Snapshot) =>
        0

      // different kinds: Snapshot < Milestone < Eap < Beta < ReleaseCandidate < Release < Dev < ForIde
      case (Kind.Snapshot, _)            => -1
      case (_, Kind.Snapshot)            =>  1
      case (Kind.Milestone(_), _)        => -1
      case (_, Kind.Milestone(_))        =>  1
      case (Kind.Eap(_), _)              => -1
      case (_, Kind.Eap(_))              =>  1
      case (Kind.Beta(_), _)             => -1
      case (_, Kind.Beta(_))             =>  1
      case (Kind.ReleaseCandidate(_), _) => -1
      case (_, Kind.ReleaseCandidate(_)) =>  1
      case (Kind.Release, _)             => -1
      case (_, Kind.Release)             =>  1
      case (Kind.Dev, _)                 => -1
      case (_, Kind.Dev)                 =>  1
    }