From 758dcb748d9eb587e33c2533c33816b008ac2c67 Mon Sep 17 00:00:00 2001 From: Liyan Zhao Date: Thu, 28 Nov 2024 18:40:39 +0800 Subject: [PATCH] fix: ignore some very very old kotlin classes to prevent them breaking remapping process (#1210) * fix: ignore some very very old kotlin classes to prevent them breaking remapping process. Why? https://github.com/JetBrains/kotlin/blob/7c539b01f522d7ad458a3c774879277eccf03ffd/libraries/kotlinx-metadata/jvm/src/kotlin/metadata/jvm/KotlinClassMetadata.kt#L427 * fix: review suggestions --- .../KotlinClassMetadataRemappingAnnotationVisitor.kt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/net/fabricmc/loom/kotlin/remapping/KotlinClassMetadataRemappingAnnotationVisitor.kt b/src/main/kotlin/net/fabricmc/loom/kotlin/remapping/KotlinClassMetadataRemappingAnnotationVisitor.kt index b0736b7c7..f20054c4d 100644 --- a/src/main/kotlin/net/fabricmc/loom/kotlin/remapping/KotlinClassMetadataRemappingAnnotationVisitor.kt +++ b/src/main/kotlin/net/fabricmc/loom/kotlin/remapping/KotlinClassMetadataRemappingAnnotationVisitor.kt @@ -62,8 +62,14 @@ class KotlinClassMetadataRemappingAnnotationVisitor( "is using (${KotlinVersion.CURRENT}).", ) } + val metadata = KotlinClassMetadata.readLenient(header) + if (metadata.version.major < 1 || (metadata.version.major == 1 && metadata.version.minor < 4)) { + logger.warn("$className is not supported by kotlin metadata remapping (version: ${metadata.version})") + accept(next) + return + } - when (val metadata = KotlinClassMetadata.readLenient(header)) { + when (metadata) { is KotlinClassMetadata.Class -> { var klass = metadata.kmClass klass = KotlinClassRemapper(remapper).remap(klass)