Skip to content

Commit 0f40afc

Browse files
committed
Correctly sort experimental compiler versions available in playground
1 parent 5c853b6 commit 0f40afc

File tree

1 file changed

+21
-19
lines changed

1 file changed

+21
-19
lines changed

src/Playground.res

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -910,28 +910,30 @@ module Settings = {
910910
{switch experimentalVersions {
911911
| [] => React.null
912912
| experimentalVersions =>
913-
let versionByOrder = experimentalVersions->Belt.SortArray.stableSortBy((a, b) => {
914-
let cmp = ({Semver.major: major, minor, patch, preRelease}) => {
915-
let preRelease = switch preRelease {
916-
| Some(preRelease) =>
917-
switch preRelease {
918-
| Dev(id) => 0 + id
919-
| Alpha(id) => 10 + id
920-
| Beta(id) => 20 + id
921-
| Rc(id) => 30 + id
913+
let versionByOrder = experimentalVersions->Array.toSorted((b, a) => {
914+
if a.major != b.major {
915+
a.major - b.major
916+
} else if a.minor != b.minor {
917+
a.minor - b.minor
918+
} else if a.patch != b.patch {
919+
a.patch - b.patch
920+
} else {
921+
switch (a.preRelease, b.preRelease)->Option.all2 {
922+
| Some((prereleaseA, prereleaseB)) =>
923+
switch (prereleaseA, prereleaseB) {
924+
| (Rc(rcA), Rc(rcB)) => rcA - rcB
925+
| (Rc(rcA), _) => rcA
926+
| (Beta(betaA), Beta(betaB)) => betaA - betaB
927+
| (Beta(betaA), _) => betaA
928+
| (Alpha(alphaA), Alpha(alphaB)) => alphaA - alphaB
929+
| (Alpha(alphaA), _) => alphaA
930+
| (Dev(devA), Dev(devB)) => devA - devB
931+
| (Dev(devA), _) => devA
922932
}
933+
923934
| None => 0
924935
}
925-
let number =
926-
[major, minor, patch]
927-
->Array.map(v => v->Int.toString)
928-
->Array.join("")
929-
->Int.fromString
930-
->Option.getOr(0)
931-
932-
number + preRelease
933-
}
934-
cmp(b) - cmp(a)
936+
}->Float.fromInt
935937
})
936938
<>
937939
<VersionSelect.SectionHeader value=Constants.dropdownLabelNext />

0 commit comments

Comments
 (0)