JS: enable release coroutines
This commit is contained in:
committed by
Anton Bannykh
parent
f77e023210
commit
4872c97929
+22
-10
@@ -101,7 +101,7 @@ object KotlinJavascriptSerializationUtil {
|
||||
val module = jsDescriptor.data
|
||||
|
||||
for (fqName in getPackagesFqNames(module).sortedBy { it.asString() }) {
|
||||
val fragment = serializePackageFragment(bindingContext, module, fqName)
|
||||
val fragment = serializePackageFragment(bindingContext, module, fqName, languageVersionSettings)
|
||||
|
||||
if (!fragment.isEmpty()) {
|
||||
serializedFragments[fqName] = fragment
|
||||
@@ -178,16 +178,28 @@ object KotlinJavascriptSerializationUtil {
|
||||
}
|
||||
}
|
||||
|
||||
private fun serializePackageFragment(bindingContext: BindingContext, module: ModuleDescriptor, fqName: FqName): ProtoBuf.PackageFragment {
|
||||
private fun serializePackageFragment(
|
||||
bindingContext: BindingContext,
|
||||
module: ModuleDescriptor,
|
||||
fqName: FqName,
|
||||
languageVersionSettings: LanguageVersionSettings
|
||||
): ProtoBuf.PackageFragment {
|
||||
val packageView = module.getPackage(fqName)
|
||||
return serializeDescriptors(bindingContext, module, packageView.memberScope.getContributedDescriptors(), fqName)
|
||||
return serializeDescriptors(
|
||||
bindingContext,
|
||||
module,
|
||||
packageView.memberScope.getContributedDescriptors(),
|
||||
fqName,
|
||||
languageVersionSettings
|
||||
)
|
||||
}
|
||||
|
||||
fun serializeDescriptors(
|
||||
bindingContext: BindingContext,
|
||||
module: ModuleDescriptor,
|
||||
scope: Collection<DeclarationDescriptor>,
|
||||
fqName: FqName
|
||||
bindingContext: BindingContext,
|
||||
module: ModuleDescriptor,
|
||||
scope: Collection<DeclarationDescriptor>,
|
||||
fqName: FqName,
|
||||
languageVersionSettings: LanguageVersionSettings
|
||||
): ProtoBuf.PackageFragment {
|
||||
val builder = ProtoBuf.PackageFragment.newBuilder()
|
||||
|
||||
@@ -203,7 +215,7 @@ object KotlinJavascriptSerializationUtil {
|
||||
}
|
||||
|
||||
val fileRegistry = KotlinFileRegistry()
|
||||
val extension = KotlinJavascriptSerializerExtension(fileRegistry)
|
||||
val extension = KotlinJavascriptSerializerExtension(fileRegistry, languageVersionSettings)
|
||||
|
||||
val classDescriptors = scope.filterIsInstance<ClassDescriptor>().sortedBy { it.fqNameSafe.asString() }
|
||||
|
||||
@@ -232,8 +244,8 @@ object KotlinJavascriptSerializationUtil {
|
||||
builder.`package` = DescriptorSerializer.createTopLevel(extension).packagePartProto(fqName, members).build()
|
||||
|
||||
builder.setExtension(
|
||||
JsProtoBuf.packageFragmentFiles,
|
||||
serializeFiles(fileRegistry, bindingContext, AnnotationSerializer(stringTable))
|
||||
JsProtoBuf.packageFragmentFiles,
|
||||
serializeFiles(fileRegistry, bindingContext, AnnotationSerializer(stringTable))
|
||||
)
|
||||
|
||||
val (strings, qualifiedNames) = stringTable.buildProto()
|
||||
|
||||
+6
-1
@@ -16,6 +16,8 @@
|
||||
|
||||
package org.jetbrains.kotlin.serialization.js
|
||||
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
import org.jetbrains.kotlin.config.LanguageVersionSettings
|
||||
import org.jetbrains.kotlin.descriptors.*
|
||||
import org.jetbrains.kotlin.metadata.ProtoBuf
|
||||
import org.jetbrains.kotlin.metadata.js.JsProtoBuf
|
||||
@@ -30,7 +32,8 @@ import org.jetbrains.kotlin.serialization.SerializerExtensionProtocol
|
||||
import org.jetbrains.kotlin.types.FlexibleType
|
||||
|
||||
class KotlinJavascriptSerializerExtension(
|
||||
private val fileRegistry: KotlinFileRegistry
|
||||
private val fileRegistry: KotlinFileRegistry,
|
||||
private val languageVersionSettings: LanguageVersionSettings
|
||||
) : KotlinSerializerExtensionBase(JsSerializerProtocol) {
|
||||
override val stringTable = JavaScriptStringTable()
|
||||
|
||||
@@ -77,6 +80,8 @@ class KotlinJavascriptSerializerExtension(
|
||||
val psiFile = file.psiFile
|
||||
return (psiFile as? KtFile)?.let { fileRegistry.lookup(KotlinPsiFileMetadata(it)) }
|
||||
}
|
||||
|
||||
override fun releaseCoroutines() = languageVersionSettings.supportsFeature(LanguageFeature.ReleaseCoroutines)
|
||||
}
|
||||
|
||||
object JsSerializerProtocol : SerializerExtensionProtocol(
|
||||
|
||||
Reference in New Issue
Block a user