Minor, don't throw exception on empty proto message

This commit is contained in:
Alexander Udalov
2017-02-01 11:32:28 +03:00
parent 5a00a97cf1
commit bafa0ec1ee
@@ -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
}
}