[ObjCExport] Remove unnecessary instances in favor of static methods

All state will later be stored inside the KtObjCExportSession

KT-64226
This commit is contained in:
Sebastian Sellmair
2023-12-14 13:13:02 +01:00
committed by Space Team
parent 2f759243ba
commit b78f185299
6 changed files with 31 additions and 23 deletions
@@ -9,7 +9,7 @@ import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol
import org.jetbrains.kotlin.psi.KtDeclaration import org.jetbrains.kotlin.psi.KtDeclaration
import org.jetbrains.kotlin.psi.KtPrimaryConstructor import org.jetbrains.kotlin.psi.KtPrimaryConstructor
internal fun KtSymbol.findKDocString(): String? { internal fun KtSymbol.getKDocString(): String? {
val psi = psi val psi = psi
if (psi is KtDeclaration) { if (psi is KtDeclaration) {
if (psi is KtPrimaryConstructor) if (psi is KtPrimaryConstructor)
@@ -7,11 +7,8 @@ package org.jetbrains.kotlin.objcexport
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.symbols.KtClassLikeSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtClassLikeSymbol
import org.jetbrains.kotlin.analysis.api.symbols.KtPropertySymbol
import org.jetbrains.kotlin.analysis.api.symbols.nameOrAnonymous import org.jetbrains.kotlin.analysis.api.symbols.nameOrAnonymous
import org.jetbrains.kotlin.backend.konan.objcexport.ObjCExportClassOrProtocolName import org.jetbrains.kotlin.backend.konan.objcexport.ObjCExportClassOrProtocolName
import org.jetbrains.kotlin.backend.konan.objcexport.ObjCExportPropertyName
context(KtAnalysisSession, KtObjCExportSession) context(KtAnalysisSession, KtObjCExportSession)
fun KtClassLikeSymbol.getObjCClassOrProtocolName(): ObjCExportClassOrProtocolName { fun KtClassLikeSymbol.getObjCClassOrProtocolName(): ObjCExportClassOrProtocolName {
@@ -22,13 +19,3 @@ fun KtClassLikeSymbol.getObjCClassOrProtocolName(): ObjCExportClassOrProtocolNam
swiftName = resolvedObjCNameAnnotation?.swiftName ?: nameOrAnonymous.asString() swiftName = resolvedObjCNameAnnotation?.swiftName ?: nameOrAnonymous.asString()
) )
} }
context(KtAnalysisSession, KtObjCExportSession)
fun KtPropertySymbol.getObjCPropertyName(): ObjCExportPropertyName {
val resolveObjCNameAnnotation = resolveObjCNameAnnotation()
return ObjCExportPropertyName(
objCName = resolveObjCNameAnnotation?.objCName ?: name.asString(),
swiftName = resolveObjCNameAnnotation?.swiftName ?: name.asString()
)
}
@@ -0,0 +1,21 @@
/*
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
*/
package org.jetbrains.kotlin.objcexport
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.symbols.KtPropertySymbol
import org.jetbrains.kotlin.backend.konan.objcexport.ObjCExportPropertyName
context(KtAnalysisSession, KtObjCExportSession)
fun KtPropertySymbol.getObjCPropertyName(): ObjCExportPropertyName {
val resolveObjCNameAnnotation = resolveObjCNameAnnotation()
return ObjCExportPropertyName(
objCName = resolveObjCNameAnnotation?.objCName ?: name.asString(),
swiftName = resolveObjCNameAnnotation?.swiftName ?: name.asString()
)
}
@@ -9,15 +9,15 @@ import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtPossiblyNamedSymbol import org.jetbrains.kotlin.analysis.api.symbols.markers.KtPossiblyNamedSymbol
import org.jetbrains.kotlin.backend.konan.objcexport.ObjCExportStubOrigin import org.jetbrains.kotlin.backend.konan.objcexport.ObjCExportStubOrigin
import org.jetbrains.kotlin.objcexport.analysisApiUtils.findKDocString import org.jetbrains.kotlin.objcexport.analysisApiUtils.getKDocString
context(KtAnalysisSession) context(KtAnalysisSession)
fun KtSymbol.objCStubOrigin(): ObjCExportStubOrigin { fun KtSymbol.getObjCStubOrigin(): ObjCExportStubOrigin {
// TODO: Differentiate origins // TODO: Differentiate origins
// TODO: Extract kdoc from deserialized symbols // TODO: Extract kdoc from deserialized symbols
return ObjCExportStubOrigin.Source( return ObjCExportStubOrigin.Source(
name = let { it as? KtPossiblyNamedSymbol }?.name, name = let { it as? KtPossiblyNamedSymbol }?.name,
psi = psi, psi = psi,
kdoc = findKDocString() kdoc = getKDocString()
) )
} }
@@ -43,7 +43,7 @@ fun KtClassOrObjectSymbol.translateToObjCProtocol(): ObjCProtocol {
return ObjCProtocolImpl( return ObjCProtocolImpl(
name = name.objCName, name = name.objCName,
comment = comment, comment = comment,
origin = this.objCStubOrigin(), origin = getObjCStubOrigin(),
attributes = emptyList(), attributes = emptyList(),
superProtocols = superProtocols, superProtocols = superProtocols,
members = members members = members
@@ -6,14 +6,14 @@
package org.jetbrains.kotlin.objcexport.tests package org.jetbrains.kotlin.objcexport.tests
import org.jetbrains.kotlin.analysis.api.analyze import org.jetbrains.kotlin.analysis.api.analyze
import org.jetbrains.kotlin.objcexport.analysisApiUtils.findKDocString import org.jetbrains.kotlin.objcexport.analysisApiUtils.getKDocString
import org.jetbrains.kotlin.objcexport.testUtils.InlineSourceCodeAnalysis import org.jetbrains.kotlin.objcexport.testUtils.InlineSourceCodeAnalysis
import org.jetbrains.kotlin.objcexport.testUtils.getClassOrFail import org.jetbrains.kotlin.objcexport.testUtils.getClassOrFail
import org.jetbrains.kotlin.objcexport.testUtils.getFunctionOrFail import org.jetbrains.kotlin.objcexport.testUtils.getFunctionOrFail
import org.junit.jupiter.api.Test import org.junit.jupiter.api.Test
import kotlin.test.assertEquals import kotlin.test.assertEquals
class FindKdocStringTest( class GetKdocStringTest(
private val inlineSourceCodeAnalysis: InlineSourceCodeAnalysis, private val inlineSourceCodeAnalysis: InlineSourceCodeAnalysis,
) { ) {
@Test @Test
@@ -35,7 +35,7 @@ class FindKdocStringTest(
* Kdoc for 'Foo' * Kdoc for 'Foo'
*/ */
""".trimIndent(), """.trimIndent(),
foo.findKDocString() foo.getKDocString()
) )
} }
} }
@@ -59,7 +59,7 @@ class FindKdocStringTest(
* Kdoc for 'foo' * Kdoc for 'foo'
*/ */
""".trimIndent(), """.trimIndent(),
foo.findKDocString() foo.getKDocString()
) )
} }
} }