[ObjCExport] Document getObjCClassOrProtocolName
^KT-65670 Fixed
This commit is contained in:
committed by
Space Team
parent
436e16efd8
commit
b7de3709e4
+20
-1
@@ -10,6 +10,25 @@ import org.jetbrains.kotlin.analysis.api.symbols.*
|
|||||||
import org.jetbrains.kotlin.backend.konan.objcexport.ObjCExportClassOrProtocolName
|
import org.jetbrains.kotlin.backend.konan.objcexport.ObjCExportClassOrProtocolName
|
||||||
import org.jetbrains.kotlin.util.capitalizeDecapitalize.capitalizeAsciiOnly
|
import org.jetbrains.kotlin.util.capitalizeDecapitalize.capitalizeAsciiOnly
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs the name of the given [KtClassLikeSymbol] by composing
|
||||||
|
* ```
|
||||||
|
* {Current Framework Name}{Additional Module Prefix}{ObjC Class or Protocol Name}
|
||||||
|
* (1) (2) (3)
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* 1) Current Framework Name: See [KtObjCExportConfiguration.frameworkName]
|
||||||
|
* 2) Additional Module Prefix: Dependency modules that are not directly exported will add the prefix to distinguish from which
|
||||||
|
* dependency module a symbol came from. Note: This module name can be abbreviated e.g. `LongModuleName` will be `LMN`
|
||||||
|
* 3) ObjC Class or Protocol Name: This is either the name of the symbol, or the defined name in the `ObjCName` annotation
|
||||||
|
* (see [resolveObjCNameAnnotation]): e.g.
|
||||||
|
* ```
|
||||||
|
* @ObjCName("ObjCFoo")
|
||||||
|
* class Foo
|
||||||
|
* ```
|
||||||
|
* will use `ObjCFoo` instead of the class name `Foo`
|
||||||
|
*
|
||||||
|
*/
|
||||||
context(KtAnalysisSession, KtObjCExportSession)
|
context(KtAnalysisSession, KtObjCExportSession)
|
||||||
fun KtClassLikeSymbol.getObjCClassOrProtocolName(): ObjCExportClassOrProtocolName {
|
fun KtClassLikeSymbol.getObjCClassOrProtocolName(): ObjCExportClassOrProtocolName {
|
||||||
val resolvedObjCNameAnnotation = resolveObjCNameAnnotation()
|
val resolvedObjCNameAnnotation = resolveObjCNameAnnotation()
|
||||||
@@ -118,7 +137,7 @@ context(KtAnalysisSession, KtObjCExportSession)
|
|||||||
private fun KtSymbol.getObjCModuleNamePrefix(): String? {
|
private fun KtSymbol.getObjCModuleNamePrefix(): String? {
|
||||||
val module = getContainingModule()
|
val module = getContainingModule()
|
||||||
val moduleName = module.getObjCKotlinModuleName() ?: return null
|
val moduleName = module.getObjCKotlinModuleName() ?: return null
|
||||||
if(moduleName == "stdlib" || moduleName == "kotlin-stdlib-common") return "Kotlin"
|
if (moduleName == "stdlib" || moduleName == "kotlin-stdlib-common") return "Kotlin"
|
||||||
if (moduleName in configuration.exportedModuleNames) return null
|
if (moduleName in configuration.exportedModuleNames) return null
|
||||||
return abbreviateModuleName(moduleName)
|
return abbreviateModuleName(moduleName)
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user