Enhance API/messages around BinaryVersion / JvmMetadataVersion

This commit is contained in:
Mikhail Glukhikh
2023-01-04 11:38:28 +01:00
parent 13502abab9
commit cbedbda527
13 changed files with 71 additions and 59 deletions
@@ -100,10 +100,15 @@ class JvmClassFileBasedSymbolProvider(
private val KotlinJvmBinaryClass.incompatibility: IncompatibleVersionErrorData<JvmMetadataVersion>?
get() {
// TODO: skipMetadataVersionCheck
val expectedMetadataVersion = session.languageVersionSettings.languageVersion.toMetadataVersion()
if (classHeader.metadataVersion.isCompatible(expectedMetadataVersion)) return null
val metadataVersionFromLanguageVersion = session.languageVersionSettings.languageVersion.toMetadataVersion()
if (classHeader.metadataVersion.isCompatible(metadataVersionFromLanguageVersion)) return null
return IncompatibleVersionErrorData(
classHeader.metadataVersion, maxOf(expectedMetadataVersion, JvmMetadataVersion.INSTANCE.next()), location, classId
actualVersion = classHeader.metadataVersion,
compilerVersion = JvmMetadataVersion.INSTANCE,
languageVersion = metadataVersionFromLanguageVersion,
expectedVersion = metadataVersionFromLanguageVersion.lastSupportedVersionWithThisLanguageVersion(classHeader.metadataVersion.isStrictSemantics),
filePath = location,
classId = classId
)
}