Skip to content

Commit

Permalink
Fix tag generation to be used with KSP1 - retrieving tag properties i…
Browse files Browse the repository at this point in the history
…s causing issue
  • Loading branch information
arnaudgiuliani committed Feb 24, 2025
1 parent f5b3c39 commit 7063d99
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -187,9 +187,11 @@ class KoinTagWriter(
""".trimIndent())
}

// Compat with KSP1
//TODO change for property once KSP2
private fun prepareTagLine(tagName: String, asFunction: Boolean) : String {
return if (asFunction){
"\npublic val $TAG_PREFIX$tagName : Unit = Unit"
"\npublic fun $TAG_PREFIX$tagName() : Unit = Unit"
} else "\npublic class $TAG_PREFIX$tagName"
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package org.koin.compiler.resolver

import com.google.devtools.ksp.processing.Resolver
import com.google.devtools.ksp.symbol.KSDeclaration
import com.google.devtools.ksp.symbol.KSFunctionDeclaration
import com.google.devtools.ksp.symbol.KSPropertyDeclaration
import org.koin.compiler.metadata.KoinMetaData
import org.koin.compiler.metadata.TagFactory
Expand Down Expand Up @@ -29,21 +30,23 @@ fun Resolver.tagAlreadyExists(tag : String?) : Boolean {
}

fun Resolver.tagPropAlreadyExists(tag : String?) : Boolean {
return getResolutionForTagProp(tag) != null
return getResolutionForTagProp(tag).any()
}

fun Resolver.getResolutionForTag(tag : String?) : KSDeclaration?{
return getResolutionForClass("$codeGenerationPackage.$TAG_PREFIX$tag")
}

fun Resolver.getResolutionForTagProp(tag : String?) : KSPropertyDeclaration? {
fun Resolver.getResolutionForTagProp(tag : String?) : Sequence<KSFunctionDeclaration> {
return getResolutionForProp("$codeGenerationPackage.$TAG_PREFIX$tag")
}

fun Resolver.getResolutionForClass(name : String) : KSDeclaration?{
return getClassDeclarationByName(getKSNameFromString(name))
}

fun Resolver.getResolutionForProp(name : String) : KSPropertyDeclaration? {
return getPropertyDeclarationByName(getKSNameFromString(name),true)
// Compat with KSP1
//TODO change for property once KSP2
// getPropertyDeclarationByName(getKSNameFromString(name),true)
fun Resolver.getResolutionForProp(name : String) : Sequence<KSFunctionDeclaration> {
return getFunctionDeclarationsByName(getKSNameFromString(name),true)
}

0 comments on commit 7063d99

Please sign in to comment.