Skip to content

Commit a5cfbf7

Browse files
authored
Merge pull request #13280 from dwijnand/simplify-Tasty-isVersionCompatible
2 parents b1ac51a + d15206b commit a5cfbf7

File tree

1 file changed

+8
-34
lines changed

1 file changed

+8
-34
lines changed

tasty/src/dotty/tools/tasty/TastyFormat.scala

Lines changed: 8 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -328,29 +328,12 @@ object TastyFormat {
328328
* with an unstable TASTy version.
329329
*
330330
* We follow the given algorithm:
331+
*
331332
* ```
332-
* if file.major != compiler.major then
333-
* return incompatible
334-
* if compiler.experimental == 0 then
335-
* if file.experimental != 0 then
336-
* return incompatible
337-
* if file.minor > compiler.minor then
338-
* return incompatible
339-
* else
340-
* return compatible
341-
* else invariant[compiler.experimental != 0]
342-
* if file.experimental == compiler.experimental then
343-
* if file.minor == compiler.minor then
344-
* return compatible (all fields equal)
345-
* else
346-
* return incompatible
347-
* else if file.experimental == 0,
348-
* if file.minor < compiler.minor then
349-
* return compatible (an experimental version can read a previous released version)
350-
* else
351-
* return incompatible (an experimental version cannot read its own minor version or any later version)
352-
* else invariant[file.experimental is non-0 and different than compiler.experimental]
353-
* return incompatible
333+
* (fileMajor, fileMinor, fileExperimental) match
334+
* case (`compilerMajor`, `compilerMinor`, `compilerExperimental`) => true // full equality
335+
* case (`compilerMajor`, minor, 0) if minor < compilerMinor => true // stable backwards compatibility
336+
* case _ => false
354337
* ```
355338
* @syntax markdown
356339
*/
@@ -362,18 +345,9 @@ object TastyFormat {
362345
compilerMinor: Int,
363346
compilerExperimental: Int
364347
): Boolean = (
365-
fileMajor == compilerMajor && (
366-
if (fileExperimental == compilerExperimental) {
367-
if (compilerExperimental == 0) {
368-
fileMinor <= compilerMinor
369-
}
370-
else {
371-
fileMinor == compilerMinor
372-
}
373-
}
374-
else {
375-
fileExperimental == 0 && fileMinor < compilerMinor
376-
}
348+
fileMajor == compilerMajor &&
349+
( fileMinor == compilerMinor && fileExperimental == compilerExperimental // full equality
350+
|| fileMinor < compilerMinor && fileExperimental == 0 // stable backwards compatibility
377351
)
378352
)
379353

0 commit comments

Comments
 (0)