in rider/src/main/kotlin/com/jetbrains/rider/plugins/unity/util/SemVer.kt [36:79]
override fun compareTo(other: SemVer): Int {
if (major > other.major) return 1
if (major < other.major) return -1
if (minor > other.minor) return 1
if (minor < other.minor) return -1
if (patch > other.patch) return 1
if (patch < other.patch) return -1
// Non-null pre-release has lower precedence
if (prerelease == null && other.prerelease == null) return 0
if (other.prerelease == null) return -1
if (prerelease == null) return 1
val segments = prerelease.split(".")
val otherSegments = other.prerelease.split(".")
val commonSegments = min(segments.size, otherSegments.size)
for (i in 0..(commonSegments - 1)) {
val segment = segments[i]
val otherSegment = otherSegments[i]
val digitVal = segment.toIntOrNull()
val otherDigitVal = segment.toIntOrNull()
// Numeric has lower precedence than non-numeric
if (digitVal == null && otherDigitVal != null) return 1
if (digitVal != null && otherDigitVal == null) return -1
if (digitVal != null && otherDigitVal != null) {
if (digitVal > otherDigitVal) return 1
if (digitVal < otherDigitVal) return -1
}
else {
if (segment > otherSegment) return 1
if (segment < otherSegment) return -1
}
}
// More segments has higher precedence
if (segments.size > otherSegments.size) return 1
if (segments.size < otherSegments.size) return -1
return 0
}