Remove dependency of NameResolverImpl on FqName
Remove AbstractJsProtoComparisonTest.getProtoData in favor of (apparently copy-pasted) IncrementalJsCache.getProtoData
This commit is contained in:
@@ -182,10 +182,11 @@ fun getProtoData(sourceFile: File, metadata: ByteArray): Map<ClassId, ProtoData>
|
|||||||
}
|
}
|
||||||
|
|
||||||
proto.`package`.apply {
|
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"))
|
val packagePartClassId = ClassId(packageFqName, Name.identifier(sourceFile.nameWithoutExtension.capitalize() + "Kt"))
|
||||||
classes[packagePartClassId] = PackagePartProtoData(this, nameResolver, packageFqName)
|
classes[packagePartClassId] = PackagePartProtoData(this, nameResolver, packageFqName)
|
||||||
}
|
}
|
||||||
|
|
||||||
return classes
|
return classes
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-5
@@ -18,7 +18,6 @@ package org.jetbrains.kotlin.serialization.deserialization
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.metadata.ProtoBuf
|
import org.jetbrains.kotlin.metadata.ProtoBuf
|
||||||
import org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.QualifiedName
|
import org.jetbrains.kotlin.metadata.ProtoBuf.QualifiedNameTable.QualifiedName
|
||||||
import org.jetbrains.kotlin.name.FqName
|
|
||||||
import java.util.*
|
import java.util.*
|
||||||
|
|
||||||
class NameResolverImpl(
|
class NameResolverImpl(
|
||||||
@@ -37,10 +36,8 @@ class NameResolverImpl(
|
|||||||
override fun isLocalClassName(index: Int): Boolean =
|
override fun isLocalClassName(index: Int): Boolean =
|
||||||
traverseIds(index).third
|
traverseIds(index).third
|
||||||
|
|
||||||
fun getPackageFqName(index: Int): FqName {
|
fun getPackageFqName(index: Int): String =
|
||||||
val packageNameSegments = traverseIds(index).first
|
traverseIds(index).first.joinToString(".")
|
||||||
return FqName.fromSegments(packageNameSegments)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun traverseIds(startingIndex: Int): Triple<List<String>, List<String>, Boolean> {
|
private fun traverseIds(startingIndex: Int): Triple<List<String>, List<String>, Boolean> {
|
||||||
var index = startingIndex
|
var index = startingIndex
|
||||||
|
|||||||
+2
-1
@@ -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.buildDecompiledText
|
||||||
import org.jetbrains.kotlin.idea.decompiler.textBuilder.defaultDecompilerRendererOptions
|
import org.jetbrains.kotlin.idea.decompiler.textBuilder.defaultDecompilerRendererOptions
|
||||||
import org.jetbrains.kotlin.metadata.ProtoBuf
|
import org.jetbrains.kotlin.metadata.ProtoBuf
|
||||||
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.renderer.DescriptorRenderer
|
import org.jetbrains.kotlin.renderer.DescriptorRenderer
|
||||||
import org.jetbrains.kotlin.resolve.TargetPlatform
|
import org.jetbrains.kotlin.resolve.TargetPlatform
|
||||||
import org.jetbrains.kotlin.serialization.SerializerExtensionProtocol
|
import org.jetbrains.kotlin.serialization.SerializerExtensionProtocol
|
||||||
@@ -120,7 +121,7 @@ sealed class FileWithMetadata {
|
|||||||
serializerProtocol: SerializerExtensionProtocol
|
serializerProtocol: SerializerExtensionProtocol
|
||||||
) : FileWithMetadata() {
|
) : FileWithMetadata() {
|
||||||
val nameResolver = NameResolverImpl(proto.strings, proto.qualifiedNames)
|
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<ProtoBuf.Class> =
|
open val classesToDecompile: List<ProtoBuf.Class> =
|
||||||
proto.class_List.filter { proto ->
|
proto.class_List.filter { proto ->
|
||||||
|
|||||||
+1
-28
@@ -20,21 +20,12 @@ import org.jetbrains.kotlin.cli.common.arguments.K2JSCompilerArguments
|
|||||||
import org.jetbrains.kotlin.cli.common.arguments.K2JsArgumentConstants
|
import org.jetbrains.kotlin.cli.common.arguments.K2JsArgumentConstants
|
||||||
import org.jetbrains.kotlin.compilerRunner.OutputItemsCollectorImpl
|
import org.jetbrains.kotlin.compilerRunner.OutputItemsCollectorImpl
|
||||||
import org.jetbrains.kotlin.config.Services
|
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.ProtoData
|
||||||
|
import org.jetbrains.kotlin.incremental.getProtoData
|
||||||
import org.jetbrains.kotlin.incremental.js.IncrementalResultsConsumer
|
import org.jetbrains.kotlin.incremental.js.IncrementalResultsConsumer
|
||||||
import org.jetbrains.kotlin.incremental.js.IncrementalResultsConsumerImpl
|
import org.jetbrains.kotlin.incremental.js.IncrementalResultsConsumerImpl
|
||||||
import org.jetbrains.kotlin.incremental.utils.TestMessageCollector
|
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.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 org.junit.Assert
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
@@ -79,21 +70,3 @@ abstract class AbstractJsProtoComparisonTest : AbstractProtoComparisonTest<Proto
|
|||||||
|
|
||||||
override fun ProtoData.toProtoData(): ProtoData? = this
|
override fun ProtoData.toProtoData(): ProtoData? = this
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getProtoData(sourceFile: File, metadata: ByteArray): Map<ClassId, ProtoData> {
|
|
||||||
val classes = hashMapOf<ClassId, ProtoData>()
|
|
||||||
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
|
|
||||||
}
|
|
||||||
|
|||||||
+1
-1
@@ -89,7 +89,7 @@ private val ProtoBuf.PackageFragment.fqName: FqName?
|
|||||||
get() {
|
get() {
|
||||||
val nameResolver = NameResolverImpl(strings, qualifiedNames)
|
val nameResolver = NameResolverImpl(strings, qualifiedNames)
|
||||||
return when {
|
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
|
class_Count > 0 -> nameResolver.getClassId(class_OrBuilderList.first().fqName).packageFqName
|
||||||
else -> null
|
else -> null
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user