diff --git a/projects/koin-ksp-compiler/src/jvmMain/kotlin/org/koin/compiler/generator/DefinitionWriter.kt b/projects/koin-ksp-compiler/src/jvmMain/kotlin/org/koin/compiler/generator/DefinitionWriter.kt index ce94bb4..98fbc54 100644 --- a/projects/koin-ksp-compiler/src/jvmMain/kotlin/org/koin/compiler/generator/DefinitionWriter.kt +++ b/projects/koin-ksp-compiler/src/jvmMain/kotlin/org/koin/compiler/generator/DefinitionWriter.kt @@ -41,7 +41,7 @@ class DefinitionWriter( } if (def.alreadyGenerated == true){ - LOGGER.logging("skip ${def.label} -> ${TagFactory.getTag(def)} - already generated") + LOGGER.logging("skip ${def.label} -> ${TagFactory.getTagClass(def)} - already generated") } else { if (def.isExpect.not()){ LOGGER.logging("write definition ${def.label} ...") diff --git a/projects/koin-ksp-compiler/src/jvmMain/kotlin/org/koin/compiler/metadata/KoinTagWriter.kt b/projects/koin-ksp-compiler/src/jvmMain/kotlin/org/koin/compiler/metadata/KoinTagWriter.kt index f703724..fc166e0 100644 --- a/projects/koin-ksp-compiler/src/jvmMain/kotlin/org/koin/compiler/metadata/KoinTagWriter.kt +++ b/projects/koin-ksp-compiler/src/jvmMain/kotlin/org/koin/compiler/metadata/KoinTagWriter.kt @@ -96,7 +96,7 @@ class KoinTagWriter( } if (module.alreadyGenerated == false){ - val tag = TagFactory.getTag(module).camelCase() + val tag = TagFactory.getTagClass(module) if (tag !in alreadyDeclaredTags) { if (isConfigCheckActive){ val metaLine = MetaAnnotationFactory.generate(module) @@ -120,9 +120,9 @@ class KoinTagWriter( private fun writeScopeTag( scope: KSDeclaration ) { - val name = scope.qualifiedName?.asString() - if (name !in typeWhiteList) { - val tag = TagFactory.getTag(scope) + val scopeName = scope.qualifiedName?.asString() + if (scopeName !in typeWhiteList) { + val tag = TagFactory.getTagClass(scope) val alreadyGenerated = resolver.isAlreadyExisting(tag) if (tag !in alreadyDeclaredTags && !alreadyGenerated) { writeTag(tag) @@ -138,7 +138,7 @@ class KoinTagWriter( } if (!definition.isExpect && definition.alreadyGenerated == false){ - val tag = TagFactory.getTag(definition) + val tag = TagFactory.getTagClass(definition) if (tag !in alreadyDeclaredTags) { if (isConfigCheckActive){ val metaLine = MetaAnnotationFactory.generate(definition) @@ -155,7 +155,7 @@ class KoinTagWriter( ) { val name = binding.qualifiedName?.asString() if (name !in typeWhiteList) { - val tag = TagFactory.getTag(def, binding).camelCase() + val tag = TagFactory.getTagClass(def, binding) val alreadyGenerated = resolver.isAlreadyExisting(tag) if (tag !in alreadyDeclaredTags && !alreadyGenerated) { writeTag(tag) diff --git a/projects/koin-ksp-compiler/src/jvmMain/kotlin/org/koin/compiler/metadata/MetaAnnotationFactory.kt b/projects/koin-ksp-compiler/src/jvmMain/kotlin/org/koin/compiler/metadata/MetaAnnotationFactory.kt index 73a3f13..23a7d14 100644 --- a/projects/koin-ksp-compiler/src/jvmMain/kotlin/org/koin/compiler/metadata/MetaAnnotationFactory.kt +++ b/projects/koin-ksp-compiler/src/jvmMain/kotlin/org/koin/compiler/metadata/MetaAnnotationFactory.kt @@ -12,7 +12,7 @@ object MetaAnnotationFactory { val fullpath = module.packageName + "." + module.name val includesTags = if (module.includes?.isNotEmpty() == true) { - module.includes.joinToString("\",\"", prefix = "\"", postfix = "\"") { TagFactory.getTag(it) } + module.includes.joinToString("\",\"", prefix = "\"", postfix = "\"") { TagFactory.getMetaTag(it) } } else null val includesString = includesTags?.let { ", includes=[$it]" } ?: "" @@ -28,10 +28,10 @@ object MetaAnnotationFactory { val cleanedDependencies = dependencies .filter { !it.alreadyProvided && !it.hasDefault && !it.isNullable } .mapNotNull { dep -> - if (dep.kind == DependencyKind.Single) TagFactory.getTag(dep) + if (dep.kind == DependencyKind.Single) TagFactory.getMetaTag(dep) else { val ksDeclaration = extractLazyOrListType(dep) - ksDeclaration?.let { TagFactory.getTag(def, dep ,ksDeclaration) } + ksDeclaration?.let { TagFactory.getMetaTag(def, dep ,ksDeclaration) } } } diff --git a/projects/koin-ksp-compiler/src/jvmMain/kotlin/org/koin/compiler/metadata/TagFactory.kt b/projects/koin-ksp-compiler/src/jvmMain/kotlin/org/koin/compiler/metadata/TagFactory.kt index e4f0a67..df41199 100644 --- a/projects/koin-ksp-compiler/src/jvmMain/kotlin/org/koin/compiler/metadata/TagFactory.kt +++ b/projects/koin-ksp-compiler/src/jvmMain/kotlin/org/koin/compiler/metadata/TagFactory.kt @@ -7,7 +7,6 @@ import org.koin.compiler.scanner.ext.getPackageName import org.koin.compiler.type.clearPackageSymbols import org.koin.compiler.verify.DefinitionVerification import org.koin.compiler.verify.qualifiedNameCamelCase -import java.util.* const val KOIN_TAG_SEPARATOR = "_" private const val QUALIFIER_SYMBOL = "Q_" @@ -25,7 +24,11 @@ object TagFactory { } } - fun getTag(module: KoinMetaData.ModuleInclude): String { + fun getTagClass(module: KoinMetaData.Module): String { + return getTag(module).camelCase() + } + + fun getMetaTag(module: KoinMetaData.ModuleInclude): String { return with(module) { listOfNotNull( packageName.clearPackageSymbols() + "." +className.capitalize(), @@ -35,7 +38,7 @@ object TagFactory { } } - fun getTag(definition: KoinMetaData.Definition, clazz: KSDeclaration): String { + fun getTagClass(definition: KoinMetaData.Definition, clazz: KSDeclaration): String { return with(definition) { listOfNotNull( clazz.qualifiedName?.asString() ?: "", @@ -43,11 +46,11 @@ object TagFactory { scope?.getTagValue()?.camelCase()?.let { "$SCOPE_SYMBOL$it" }, if (isExpect) "Expect" else null, if (isActual) "Actual" else null - ).joinToString(separator = KOIN_TAG_SEPARATOR) + ).joinToString(separator = KOIN_TAG_SEPARATOR).camelCase() } } - fun getTag(definition: KoinMetaData.Definition,dep: KoinMetaData.DefinitionParameter.Dependency ,clazz: KSDeclaration): String { + fun getMetaTag(definition: KoinMetaData.Definition,dep: KoinMetaData.DefinitionParameter.Dependency ,clazz: KSDeclaration): String { return with(definition) { listOfNotNull( clazz.qualifiedName?.asString() ?: "", @@ -59,11 +62,10 @@ object TagFactory { } } - fun getTag(classTag: String, dv: DefinitionVerification) = "$classTag$KOIN_TAG_SEPARATOR$SCOPE_SYMBOL${dv.scope}" + fun updateTagWithScope(classTag: String, dv: DefinitionVerification) = "$classTag$KOIN_TAG_SEPARATOR$SCOPE_SYMBOL${dv.scope}" + fun getTagClass(clazz: KSDeclaration): String = clazz.qualifiedNameCamelCase() ?: "" - fun getTag(clazz: KSDeclaration): String = clazz.qualifiedNameCamelCase() ?: "" - - fun getTag(definition: KoinMetaData.Definition): String { + fun getTagClass(definition: KoinMetaData.Definition): String { return with(definition) { listOfNotNull( packageName.camelCase().clearPackageSymbols() + label.capitalize(), @@ -75,7 +77,7 @@ object TagFactory { } } - fun getTag(dep: KoinMetaData.DefinitionParameter.Dependency): String { + fun getMetaTag(dep: KoinMetaData.DefinitionParameter.Dependency): String { return with(dep) { val ksClassDeclaration = (dep.type.declaration as KSClassDeclaration) val packageName = ksClassDeclaration.getPackageName().filterForbiddenKeywords() @@ -99,8 +101,4 @@ object TagFactory { qualifier.split(".").joinToString("") { it.capitalize() } } } - - fun getTagFromFullPath(path: String) : String { - return path.split(".").joinToString(separator = "") { it.capitalize() } - } } \ No newline at end of file diff --git a/projects/koin-ksp-compiler/src/jvmMain/kotlin/org/koin/compiler/resolver/ResolverExt.kt b/projects/koin-ksp-compiler/src/jvmMain/kotlin/org/koin/compiler/resolver/ResolverExt.kt index be80da6..775a6c2 100644 --- a/projects/koin-ksp-compiler/src/jvmMain/kotlin/org/koin/compiler/resolver/ResolverExt.kt +++ b/projects/koin-ksp-compiler/src/jvmMain/kotlin/org/koin/compiler/resolver/ResolverExt.kt @@ -20,7 +20,7 @@ fun Resolver.isAlreadyExisting(def : KoinMetaData.Definition) : Boolean { } fun Resolver.getResolution(def : KoinMetaData.Definition) : KSDeclaration?{ - return getResolutionForTag(TagFactory.getTag(def)) + return getResolutionForTag(TagFactory.getTagClass(def)) } fun Resolver.isAlreadyExisting(tag : String?) : Boolean { diff --git a/projects/koin-ksp-compiler/src/jvmMain/kotlin/org/koin/compiler/verify/KoinConfigChecker.kt b/projects/koin-ksp-compiler/src/jvmMain/kotlin/org/koin/compiler/verify/KoinConfigChecker.kt index be7dd76..3d5bde2 100644 --- a/projects/koin-ksp-compiler/src/jvmMain/kotlin/org/koin/compiler/verify/KoinConfigChecker.kt +++ b/projects/koin-ksp-compiler/src/jvmMain/kotlin/org/koin/compiler/verify/KoinConfigChecker.kt @@ -75,7 +75,7 @@ class KoinConfigChecker(val logger: KSPLogger, val resolver: Resolver) { val name = tagData[0] val type = tagData[1].clearPackageSymbols() val tag = type.camelCase() - val exists = if (dv.scope == null) resolver.isAlreadyExisting(tag) else resolver.isAlreadyExisting(tag) || resolver.isAlreadyExisting(TagFactory.getTag(tag,dv)) + val exists = if (dv.scope == null) resolver.isAlreadyExisting(tag) else resolver.isAlreadyExisting(tag) || resolver.isAlreadyExisting(TagFactory.updateTagWithScope(tag,dv)) if (!exists && type !in typeWhiteList) { logger.error("--> Missing Definition for property '$name : $type' in '${dv.value}'. Fix your configuration: add definition annotation on the class.") }