Do not report errors about bytecode version
#KT-41758
This commit is contained in:
@@ -245,7 +245,6 @@ class GenerationState private constructor(
|
||||
this.moduleName,
|
||||
languageVersionSettings,
|
||||
useOldManglingSchemeForFunctionsWithInlineClassesInSignatures,
|
||||
IncompatibleClassTrackerImpl(extraJvmDiagnosticsTrace),
|
||||
target,
|
||||
isIrBackend
|
||||
)
|
||||
|
||||
@@ -1,54 +0,0 @@
|
||||
/*
|
||||
* Copyright 2010-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.codegen.state
|
||||
|
||||
import org.jetbrains.kotlin.load.kotlin.KotlinJvmBinaryClass
|
||||
import org.jetbrains.kotlin.metadata.jvm.deserialization.JvmBytecodeBinaryVersion
|
||||
import org.jetbrains.kotlin.resolve.BindingTrace
|
||||
import org.jetbrains.kotlin.serialization.deserialization.IncompatibleVersionErrorData
|
||||
import org.jetbrains.kotlin.util.slicedMap.Slices
|
||||
import org.jetbrains.kotlin.util.slicedMap.WritableSlice
|
||||
|
||||
interface IncompatibleClassTracker {
|
||||
fun record(binaryClass: KotlinJvmBinaryClass)
|
||||
|
||||
object DoNothing : IncompatibleClassTracker {
|
||||
override fun record(binaryClass: KotlinJvmBinaryClass) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class IncompatibleClassTrackerImpl(val trace: BindingTrace) : IncompatibleClassTracker {
|
||||
private val classes = linkedSetOf<String>()
|
||||
|
||||
override fun record(binaryClass: KotlinJvmBinaryClass) {
|
||||
if (classes.add(binaryClass.location)) {
|
||||
val errorData = IncompatibleVersionErrorData(
|
||||
binaryClass.classHeader.bytecodeVersion,
|
||||
JvmBytecodeBinaryVersion.INSTANCE,
|
||||
binaryClass.location,
|
||||
binaryClass.classId
|
||||
)
|
||||
trace.record(BYTECODE_VERSION_ERRORS, binaryClass.location, errorData)
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
@JvmField
|
||||
val BYTECODE_VERSION_ERRORS: WritableSlice<String, IncompatibleVersionErrorData<JvmBytecodeBinaryVersion>> = Slices.createCollectiveSlice()
|
||||
}
|
||||
}
|
||||
@@ -87,7 +87,6 @@ class KotlinTypeMapper @JvmOverloads constructor(
|
||||
private val moduleName: String,
|
||||
val languageVersionSettings: LanguageVersionSettings,
|
||||
private val useOldInlineClassesManglingScheme: Boolean,
|
||||
private val incompatibleClassTracker: IncompatibleClassTracker = IncompatibleClassTracker.DoNothing,
|
||||
val jvmTarget: JvmTarget = JvmTarget.DEFAULT,
|
||||
private val isIrBackend: Boolean = false,
|
||||
private val typePreprocessor: ((KotlinType) -> KotlinType?)? = null,
|
||||
@@ -845,8 +844,6 @@ class KotlinTypeMapper @JvmOverloads constructor(
|
||||
skipGenericSignature: Boolean,
|
||||
hasSpecialBridge: Boolean
|
||||
): JvmMethodGenericSignature {
|
||||
checkOwnerCompatibility(f)
|
||||
|
||||
val sw = if (skipGenericSignature || f is AccessorForCallableDescriptor<*>)
|
||||
JvmSignatureWriter()
|
||||
else
|
||||
@@ -969,15 +966,6 @@ class KotlinTypeMapper @JvmOverloads constructor(
|
||||
}
|
||||
}
|
||||
|
||||
private fun checkOwnerCompatibility(descriptor: FunctionDescriptor) {
|
||||
val ownerClass = descriptor.getContainingKotlinJvmBinaryClass() ?: return
|
||||
|
||||
val version = ownerClass.classHeader.bytecodeVersion
|
||||
if (!version.isCompatible()) {
|
||||
incompatibleClassTracker.record(ownerClass)
|
||||
}
|
||||
}
|
||||
|
||||
fun mapDefaultMethod(functionDescriptor: FunctionDescriptor, kind: OwnerKind): Method {
|
||||
val jvmSignature = mapAsmMethod(functionDescriptor, kind)
|
||||
val ownerType = mapOwner(functionDescriptor)
|
||||
|
||||
Reference in New Issue
Block a user