@@ -327,29 +327,12 @@ object TastyFormat {
327
327
* with an unstable TASTy version.
328
328
*
329
329
* We follow the given algorithm:
330
+ *
330
331
* ```
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
353
336
* ```
354
337
* @syntax markdown
355
338
*/
@@ -361,18 +344,9 @@ object TastyFormat {
361
344
compilerMinor : Int ,
362
345
compilerExperimental : Int
363
346
): 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
376
350
)
377
351
)
378
352
0 commit comments