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