Remove JvmBytecodeBinaryVersion from the compiler code

Move it to build-common where it's still used in incremental compilation
caches, and simplify a bit. In the future, it'll make sense to remove it
completely and to avoid writing it to caches. In this commit, I don't do
that to prevent the IC cache version to be updated, causing rebuilds for
all JPS projects.

 #KT-41758
This commit is contained in:
Alexander Udalov
2021-02-15 17:04:34 +01:00
parent d300e05be9
commit f63ffc51ae
9 changed files with 37 additions and 54 deletions
@@ -16,7 +16,6 @@
package org.jetbrains.kotlin.build
import org.jetbrains.kotlin.metadata.jvm.deserialization.JvmBytecodeBinaryVersion
import org.jetbrains.kotlin.metadata.jvm.deserialization.JvmMetadataVersion
/**
@@ -0,0 +1,31 @@
/*
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.build
/**
* Bytecode version was in the Kotlin metadata ([Metadata.bytecodeVersion]) since 1.0, but it was never used meaningfully in the compiler,
* outside of one very special case regarding experimental coroutines, which is now obsolete. It is still used in incremental compilation
* caches though. We should probably just pretend that the bytecode version of any Kotlin file from now on is equal to the latest observed
* bytecode version, `1.0.3` (see [INSTANCE]).
*/
class JvmBytecodeBinaryVersion(vararg numbers: Int) {
val major: Int = numbers.getOrNull(0) ?: -1
val minor: Int = numbers.getOrNull(1) ?: -1
val patch: Int = numbers.getOrNull(2) ?: -1
override fun toString(): String = buildString {
append(major)
if (minor != -1) {
append(".$minor")
if (patch != -1) append(".$patch")
}
}
companion object {
@JvmField
val INSTANCE = JvmBytecodeBinaryVersion(1, 0, 3)
}
}