@@ -14,6 +14,7 @@ import org.jetbrains.kotlin.descriptors.ClassDescriptor
1414import org.jetbrains.kotlin.descriptors.ModuleDescriptor
1515import org.jetbrains.kotlin.descriptors.SourceFile
1616import org.jetbrains.kotlin.resolve.scopes.MemberScope
17+ import kotlinx.coroutines.*
1718
1819abstract class ObjCExportHeaderGenerator @InternalKotlinNativeApi constructor(
1920 val moduleDescriptors : List <ModuleDescriptor >,
@@ -117,29 +118,35 @@ abstract class ObjCExportHeaderGenerator @InternalKotlinNativeApi constructor(
117118 .flatMap { it.getPackageFragments() }
118119 .makePackagesOrderStable()
119120
120- packageFragments.forEach { packageFragment ->
121- packageFragment.getMemberScope().getContributedDescriptors()
122- .asSequence()
123- .filterIsInstance<CallableMemberDescriptor >()
124- .filter { mapper.shouldBeExposed(it) }
125- .forEach {
126- val classDescriptor = getClassIfCategory(it)
127- if (classDescriptor == null ) {
128- topLevel.getOrPut(it.findSourceFile(), { mutableListOf () }) + = it
129- } else {
130- // If a class is hidden from Objective-C API then it is meaningless
131- // to export its extensions.
132- if (! classDescriptor.isHiddenFromObjC()) {
133- extensions.getOrPut(classDescriptor, { mutableListOf () }) + = it
121+ val classesToTranslate = mutableListOf<ClassDescriptor >()
122+
123+ runBlocking {
124+ packageFragments.forEach { packageFragment ->
125+ val memberScope = packageFragment.getMemberScope()
126+
127+ launch(Dispatchers .Default ) {
128+ memberScope.getContributedDescriptors()
129+ .asSequence()
130+ .filterIsInstance<CallableMemberDescriptor >()
131+ .filter { mapper.shouldBeExposed(it) }
132+ .forEach {
133+ val classDescriptor = getClassIfCategory(it)
134+ if (classDescriptor == null ) {
135+ topLevel.getOrPut(it.findSourceFile(), { mutableListOf () }) + = it
136+ } else {
137+ // If a class is hidden from Objective-C API then it is meaningless
138+ // to export its extensions.
139+ if (! classDescriptor.isHiddenFromObjC()) {
140+ extensions.getOrPut(classDescriptor, { mutableListOf () }) + = it
141+ }
142+ }
134143 }
135- }
136144 }
137- }
138145
139- val classesToTranslate = mutableListOf< ClassDescriptor >()
140-
141- packageFragments.forEach { packageFragment ->
142- packageFragment.getMemberScope().collectClasses(classesToTranslate)
146+ launch( Dispatchers . Default ) {
147+ memberScope.collectClasses(classesToTranslate)
148+ }
149+ }
143150 }
144151
145152 classesToTranslate.makeClassesOrderStable().forEach { translateClass(it) }
0 commit comments