diff --git a/build-common/src/org/jetbrains/kotlin/incremental/IncrementalJsCache.kt b/build-common/src/org/jetbrains/kotlin/incremental/IncrementalJsCache.kt index 78ee822cb51..f3be27c672a 100644 --- a/build-common/src/org/jetbrains/kotlin/incremental/IncrementalJsCache.kt +++ b/build-common/src/org/jetbrains/kotlin/incremental/IncrementalJsCache.kt @@ -182,10 +182,11 @@ fun getProtoData(sourceFile: File, metadata: ByteArray): Map } proto.`package`.apply { - val packageFqName = getExtensionOrNull(JsProtoBuf.packageFqName)?.let(nameResolver::getPackageFqName) ?: FqName.ROOT + val packageFqName = getExtensionOrNull(JsProtoBuf.packageFqName)?.let(nameResolver::getPackageFqName)?.let(::FqName) ?: FqName.ROOT val packagePartClassId = ClassId(packageFqName, Name.identifier(sourceFile.nameWithoutExtension.capitalize() + "Kt")) classes[packagePartClassId] = PackagePartProtoData(this, nameResolver, packageFqName) } + return classes } diff --git a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/NameResolverImpl.kt b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/NameResolverImpl.kt index a5789e70e50..be941c83994 100644 --- a/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/NameResolverImpl.kt +++ b/core/deserialization/src/org/jetbrains/kotlin/serialization/deserialization/NameResolverImpl.kt @@ -18,7 +18,6 @@ package org.jetbrains.kotlin.serialization.deserialization import org.jetbrains.kotlin.metadata.ProtoBuf import org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.QualifiedName -import org.jetbrains.kotlin.name.FqName import java.util.* class NameResolverImpl( @@ -37,10 +36,8 @@ class NameResolverImpl( override fun isLocalClassName(index: Int): Boolean = traverseIds(index).third - fun getPackageFqName(index: Int): FqName { - val packageNameSegments = traverseIds(index).first - return FqName.fromSegments(packageNameSegments) - } + fun getPackageFqName(index: Int): String = + traverseIds(index).first.joinToString(".") private fun traverseIds(startingIndex: Int): Triple, List, Boolean> { var index = startingIndex diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/common/KotlinMetadataDecompiler.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/common/KotlinMetadataDecompiler.kt index 43b0ee1ac10..b30a45644e0 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/common/KotlinMetadataDecompiler.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/decompiler/common/KotlinMetadataDecompiler.kt @@ -28,6 +28,7 @@ import org.jetbrains.kotlin.idea.decompiler.textBuilder.DecompiledText import org.jetbrains.kotlin.idea.decompiler.textBuilder.buildDecompiledText import org.jetbrains.kotlin.idea.decompiler.textBuilder.defaultDecompilerRendererOptions import org.jetbrains.kotlin.metadata.ProtoBuf +import org.jetbrains.kotlin.name.FqName import org.jetbrains.kotlin.renderer.DescriptorRenderer import org.jetbrains.kotlin.resolve.TargetPlatform import org.jetbrains.kotlin.serialization.SerializerExtensionProtocol @@ -120,7 +121,7 @@ sealed class FileWithMetadata { serializerProtocol: SerializerExtensionProtocol ) : FileWithMetadata() { val nameResolver = NameResolverImpl(proto.strings, proto.qualifiedNames) - val packageFqName = nameResolver.getPackageFqName(proto.`package`.getExtension(serializerProtocol.packageFqName)) + val packageFqName = FqName(nameResolver.getPackageFqName(proto.`package`.getExtension(serializerProtocol.packageFqName))) open val classesToDecompile: List = proto.class_List.filter { proto -> diff --git a/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/incremental/AbstractJsProtoComparisonTest.kt b/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/incremental/AbstractJsProtoComparisonTest.kt index 7e84fe2dc2d..f796c54aa4d 100644 --- a/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/incremental/AbstractJsProtoComparisonTest.kt +++ b/jps-plugin/jps-tests/test/org/jetbrains/kotlin/jps/incremental/AbstractJsProtoComparisonTest.kt @@ -20,21 +20,12 @@ import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments import org.jetbrains.kotlin.cli.common.arguments.K2JsArgumentConstants import org.jetbrains.kotlin.compilerRunner.OutputItemsCollectorImpl import org.jetbrains.kotlin.config.Services -import org.jetbrains.kotlin.incremental.ClassProtoData -import org.jetbrains.kotlin.incremental.PackagePartProtoData import org.jetbrains.kotlin.incremental.ProtoData +import org.jetbrains.kotlin.incremental.getProtoData import org.jetbrains.kotlin.incremental.js.IncrementalResultsConsumer import org.jetbrains.kotlin.incremental.js.IncrementalResultsConsumerImpl import org.jetbrains.kotlin.incremental.utils.TestMessageCollector -import org.jetbrains.kotlin.metadata.ProtoBuf -import org.jetbrains.kotlin.metadata.js.JsProtoBuf import org.jetbrains.kotlin.name.ClassId -import org.jetbrains.kotlin.name.FqName -import org.jetbrains.kotlin.name.Name -import org.jetbrains.kotlin.serialization.deserialization.NameResolverImpl -import org.jetbrains.kotlin.serialization.deserialization.getClassId -import org.jetbrains.kotlin.serialization.deserialization.getExtensionOrNull -import org.jetbrains.kotlin.serialization.js.JsSerializerProtocol import org.junit.Assert import java.io.File @@ -79,21 +70,3 @@ abstract class AbstractJsProtoComparisonTest : AbstractProtoComparisonTest { - val classes = hashMapOf() - val proto = ProtoBuf.PackageFragment.parseFrom(metadata, JsSerializerProtocol.extensionRegistry) - val nameResolver = NameResolverImpl(proto.strings, proto.qualifiedNames) - - proto.class_List.forEach { - val classId = nameResolver.getClassId(it.fqName) - classes[classId] = ClassProtoData(it, nameResolver) - } - - proto.`package`.apply { - val packageFqName = getExtensionOrNull(JsProtoBuf.packageFqName)?.let(nameResolver::getPackageFqName) ?: FqName.ROOT - val packagePartClassId = ClassId(packageFqName, Name.identifier(sourceFile.nameWithoutExtension.capitalize() + "Kt")) - classes[packagePartClassId] = PackagePartProtoData(this, nameResolver, packageFqName) - } - return classes -} diff --git a/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/kotlinJavascriptPackageFragmentProvider.kt b/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/kotlinJavascriptPackageFragmentProvider.kt index 85db7f92bd9..994b486b6ce 100644 --- a/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/kotlinJavascriptPackageFragmentProvider.kt +++ b/js/js.serializer/src/org/jetbrains/kotlin/serialization/js/kotlinJavascriptPackageFragmentProvider.kt @@ -89,7 +89,7 @@ private val ProtoBuf.PackageFragment.fqName: FqName? get() { val nameResolver = NameResolverImpl(strings, qualifiedNames) return when { - hasPackage() -> nameResolver.getPackageFqName(`package`.getExtension(JsProtoBuf.packageFqName)) + hasPackage() -> FqName(nameResolver.getPackageFqName(`package`.getExtension(JsProtoBuf.packageFqName))) class_Count > 0 -> nameResolver.getClassId(class_OrBuilderList.first().fqName).packageFqName else -> null }