diff --git a/projects/koin-ksp-compiler/src/jvmMain/kotlin/org/koin/compiler/scanner/ext/KspExt.kt b/projects/koin-ksp-compiler/src/jvmMain/kotlin/org/koin/compiler/scanner/ext/KspExt.kt index 5e140605..d64159c7 100644 --- a/projects/koin-ksp-compiler/src/jvmMain/kotlin/org/koin/compiler/scanner/ext/KspExt.kt +++ b/projects/koin-ksp-compiler/src/jvmMain/kotlin/org/koin/compiler/scanner/ext/KspExt.kt @@ -92,7 +92,9 @@ fun List.getParameters(): List KoinMetaData.DefinitionParameter.ParameterInject(name = paramName, isNullable = isNullable, hasDefault = hasDefault) + "${InjectedParam::class.simpleName}" -> KoinMetaData.DefinitionParameter.ParameterInject(name = paramName, isNullable = isNullable, hasDefault = hasDefault,) "${Property::class.simpleName}" -> KoinMetaData.DefinitionParameter.Property(name = paramName, value = annotationValue, isNullable, hasDefault = hasDefault) "${Named::class.simpleName}" -> { val qualifier = firstAnnotation.arguments.getNamed().getValue() - KoinMetaData.DefinitionParameter.Dependency(name = paramName, qualifier = qualifier, isNullable = isNullable, hasDefault = hasDefault, type = resolvedType) + KoinMetaData.DefinitionParameter.Dependency(name = paramName, qualifier = qualifier, isNullable = isNullable, hasDefault = hasDefault, type = resolvedType, alreadyProvided = hasProvidedAnnotation(param)) } "${Qualifier::class.simpleName}" -> { val qualifier = firstAnnotation.arguments.getQualifier().getValue() - KoinMetaData.DefinitionParameter.Dependency(name = paramName, qualifier = qualifier, isNullable = isNullable, hasDefault = hasDefault, type = resolvedType) + KoinMetaData.DefinitionParameter.Dependency(name = paramName, qualifier = qualifier, isNullable = isNullable, hasDefault = hasDefault, type = resolvedType, alreadyProvided = hasProvidedAnnotation(param)) } "${ScopeId::class.simpleName}" -> { val scopeIdValue: String = firstAnnotation.arguments.getScope().getValue() @@ -126,8 +128,7 @@ private fun getParameter(param: KSValueParameter): KoinMetaData.DefinitionParame isLazy -> KoinMetaData.DependencyKind.Lazy else -> KoinMetaData.DependencyKind.Single } - val provided = (annotationName == "${Provided::class.simpleName}") - KoinMetaData.DefinitionParameter.Dependency(name = paramName, hasDefault = hasDefault, kind = kind, isNullable = isNullable, type = resolvedType, alreadyProvided = provided) + KoinMetaData.DefinitionParameter.Dependency(name = paramName, hasDefault = hasDefault, kind = kind, isNullable = isNullable, type = resolvedType, alreadyProvided = hasProvidedAnnotation(param)) } } } @@ -144,3 +145,7 @@ fun String.filterForbiddenKeywords() : String{ if (it in forbiddenKeywords) "`$it`" else it } } + +private fun hasProvidedAnnotation(param: KSValueParameter): Boolean { + return param.annotations.any { it.shortName.asString() == Provided::class.simpleName } +}