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