commonMain.co.touchlab.skie.kir.descriptor.DescriptorProvider.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of kotlin-compiler-linker-plugin-kgp_1.9.20 Show documentation
Show all versions of kotlin-compiler-linker-plugin-kgp_1.9.20 Show documentation
Kotlin compiler plugin that improves Swift interface of a Kotlin Multiplatform framework.
The newest version!
package co.touchlab.skie.kir.descriptor
import co.touchlab.skie.kir.descriptor.cache.CachedObjCExportMapper
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.descriptors.CallableMemberDescriptor
import org.jetbrains.kotlin.descriptors.ClassConstructorDescriptor
import org.jetbrains.kotlin.descriptors.ClassDescriptor
import org.jetbrains.kotlin.descriptors.DeclarationDescriptor
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
import org.jetbrains.kotlin.descriptors.SourceFile
import org.jetbrains.kotlin.library.KotlinLibrary
import org.jetbrains.kotlin.utils.ResolvedDependency
interface DescriptorProvider {
val mapper: CachedObjCExportMapper
val builtIns: KotlinBuiltIns
val extraDescriptorBuiltins: ExtraDescriptorBuiltins
val exposedModules: Set
val exposedClasses: Set
val exposedFiles: Set
val exposedCategoryMembers: Set
val exposedTopLevelMembers: Set
val externalDependencies: Set
val buildInLibraries: Set
val resolvedLibraries: List
val externalLibraries: Set
val localLibraries: Set
fun isFromLocalModule(declarationDescriptor: DeclarationDescriptor): Boolean
fun isExposed(callableMemberDescriptor: CallableMemberDescriptor): Boolean
fun getFileModule(file: SourceFile): ModuleDescriptor
/**
* Functions/properties without extensions and constructors (including overridden ones)
*/
fun getExposedClassMembers(classDescriptor: ClassDescriptor): List
/**
* Functions/properties extensions for classes (not interfaces or generics)
*/
fun getExposedCategoryMembers(classDescriptor: ClassDescriptor): List
fun getExposedConstructors(classDescriptor: ClassDescriptor): List
fun getExposedStaticMembers(file: SourceFile): List
fun getReceiverClassDescriptorOrNull(descriptor: CallableMemberDescriptor): ClassDescriptor?
}
fun DescriptorProvider.getAllExposedMembers(classDescriptor: ClassDescriptor): List =
this.getExposedClassMembers(classDescriptor) +
this.getExposedCategoryMembers(classDescriptor) +
this.getExposedConstructors(classDescriptor)
val DescriptorProvider.allExposedMembers: Set
get() = this.exposedTopLevelMembers +
this.exposedClasses.flatMap { this.getExposedClassMembers(it) + this.getExposedConstructors(it) } +
this.exposedCategoryMembers