diff --git a/build-common/src/org/jetbrains/kotlin/incremental/IncrementalJvmCache.kt b/build-common/src/org/jetbrains/kotlin/incremental/IncrementalJvmCache.kt index fbab613d71c..dee40e5a24d 100644 --- a/build-common/src/org/jetbrains/kotlin/incremental/IncrementalJvmCache.kt +++ b/build-common/src/org/jetbrains/kotlin/incremental/IncrementalJvmCache.kt @@ -33,6 +33,7 @@ import org.jetbrains.kotlin.metadata.jvm.deserialization.JvmProtoBufUtil import org.jetbrains.kotlin.metadata.jvm.deserialization.ModuleMapping import org.jetbrains.kotlin.name.ClassId import org.jetbrains.kotlin.name.FqName +import org.jetbrains.kotlin.resolve.jvm.AsmTypes import org.jetbrains.kotlin.resolve.jvm.JvmClassName import org.jetbrains.org.objectweb.asm.* import java.io.File @@ -476,8 +477,21 @@ open class IncrementalJvmCache( if (inlineFunctions.isEmpty()) return emptyMap() val result = HashMap() - + var dummyVersion: Int = -1 ClassReader(bytes).accept(object : ClassVisitor(Opcodes.API_VERSION) { + + override fun visit( + version: Int, + access: Int, + name: String?, + signature: String?, + superName: String?, + interfaces: Array? + ) { + super.visit(version, access, name, signature, superName, interfaces) + dummyVersion = version + } + override fun visitMethod( access: Int, name: String, @@ -485,14 +499,16 @@ open class IncrementalJvmCache( signature: String?, exceptions: Array? ): MethodVisitor? { - val dummyClassWriter = ClassWriter(Opcodes.API_VERSION) + val dummyClassWriter = ClassWriter(0) return object : MethodVisitor(Opcodes.API_VERSION, dummyClassWriter.visitMethod(0, name, desc, null, exceptions)) { override fun visitEnd() { val jvmName = name + desc if (jvmName !in inlineFunctions) return + dummyClassWriter.visit(dummyVersion, 0, "dummy", null, AsmTypes.OBJECT_TYPE.internalName, null) val dummyBytes = dummyClassWriter.toByteArray()!! + val hash = dummyBytes.md5() result[jvmName] = hash }