@@ -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