Minor, don't throw exception on empty proto message
This commit is contained in:
+14
-7
@@ -20,6 +20,7 @@ import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
|||||||
import org.jetbrains.kotlin.descriptors.PackageFragmentProvider
|
import org.jetbrains.kotlin.descriptors.PackageFragmentProvider
|
||||||
import org.jetbrains.kotlin.descriptors.PackageFragmentProviderImpl
|
import org.jetbrains.kotlin.descriptors.PackageFragmentProviderImpl
|
||||||
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
import org.jetbrains.kotlin.incremental.components.LookupTracker
|
||||||
|
import org.jetbrains.kotlin.name.FqName
|
||||||
import org.jetbrains.kotlin.serialization.ProtoBuf
|
import org.jetbrains.kotlin.serialization.ProtoBuf
|
||||||
import org.jetbrains.kotlin.serialization.deserialization.*
|
import org.jetbrains.kotlin.serialization.deserialization.*
|
||||||
import org.jetbrains.kotlin.storage.StorageManager
|
import org.jetbrains.kotlin.storage.StorageManager
|
||||||
@@ -30,14 +31,10 @@ fun createKotlinJavascriptPackageFragmentProvider(
|
|||||||
packageFragmentProtos: List<ProtoBuf.PackageFragment>,
|
packageFragmentProtos: List<ProtoBuf.PackageFragment>,
|
||||||
configuration: DeserializationConfiguration
|
configuration: DeserializationConfiguration
|
||||||
): PackageFragmentProvider {
|
): PackageFragmentProvider {
|
||||||
val packageFragments = packageFragmentProtos.map { proto ->
|
val packageFragments = packageFragmentProtos.mapNotNull { proto ->
|
||||||
val nameResolver = NameResolverImpl(proto.strings, proto.qualifiedNames)
|
proto.fqName?.let { fqName ->
|
||||||
val fqName = when {
|
KotlinJavascriptPackageFragment(fqName, storageManager, module, proto)
|
||||||
proto.hasPackage() -> nameResolver.getPackageFqName(proto.`package`.getExtension(JsProtoBuf.packageFqName))
|
|
||||||
proto.class_Count > 0 -> nameResolver.getClassId(proto.class_OrBuilderList.first().fqName).packageFqName
|
|
||||||
else -> throw IllegalStateException("Invalid library part: either a Package or a Class must be present")
|
|
||||||
}
|
}
|
||||||
KotlinJavascriptPackageFragment(fqName, storageManager, module, proto)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
val provider = PackageFragmentProviderImpl(packageFragments)
|
val provider = PackageFragmentProviderImpl(packageFragments)
|
||||||
@@ -65,3 +62,13 @@ fun createKotlinJavascriptPackageFragmentProvider(
|
|||||||
|
|
||||||
return provider
|
return provider
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val ProtoBuf.PackageFragment.fqName: FqName?
|
||||||
|
get() {
|
||||||
|
val nameResolver = NameResolverImpl(strings, qualifiedNames)
|
||||||
|
return when {
|
||||||
|
hasPackage() -> nameResolver.getPackageFqName(`package`.getExtension(JsProtoBuf.packageFqName))
|
||||||
|
class_Count > 0 -> nameResolver.getClassId(class_OrBuilderList.first().fqName).packageFqName
|
||||||
|
else -> null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user