Skip to content

Commit 211dd9f

Browse files
0.4.1 - Address Fix for Qualifier propagation in functions calls
1 parent 5056152 commit 211dd9f

6 files changed

Lines changed: 26 additions & 8 deletions

File tree

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ A native Kotlin Compiler Plugin for [Koin](https://insert-koin.io/) dependency i
77
```kotlin
88
// build.gradle.kts
99
plugins {
10-
id("io.insert-koin.compiler.plugin") version "0.4.0"
10+
id("io.insert-koin.compiler.plugin") version "0.4.1"
1111
}
1212

1313
dependencies {

docs/MIGRATION_FROM_KSP.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ ksp {
8484
```kotlin
8585
// build.gradle.kts
8686
plugins {
87-
id("io.insert-koin.compiler.plugin") version "0.4.0"
87+
id("io.insert-koin.compiler.plugin") version "0.4.1"
8888
}
8989

9090
dependencies {
@@ -302,7 +302,7 @@ Just apply the plugin:
302302
```kotlin
303303
// feature/build.gradle.kts
304304
plugins {
305-
id("io.insert-koin.compiler.plugin") version "0.4.0"
305+
id("io.insert-koin.compiler.plugin") version "0.4.1"
306306
}
307307
```
308308

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
kotlin.code.style=official
22

33
# Plugin version
4-
pluginVersion=0.4.0
4+
pluginVersion=0.4.1
55

66
# Gradle
77
org.gradle.daemon=true

gradle/libs.versions.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[versions]
2-
kotlin = "2.3.20-RC2"
3-
koin = "4.2.0-RC2"
2+
kotlin = "2.3.20"
3+
koin = "4.2.0"
44
kotzilla-sdk = "1.4.2"
55
build-config = "5.6.5"
66
bcv = "0.16.3"

koin-compiler-plugin/src/org/koin/compiler/plugin/ir/KoinDSLTransformer.kt

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -113,15 +113,33 @@ class KoinDSLTransformer(
113113
val previousContext = transformContext
114114
transformContext = transformContext.copy(lambda = expression.function)
115115
val result = super.visitFunctionExpression(expression)
116+
// Preserve qualifier propagation from inner create(::T) across lambda boundary
117+
val innerQualifier = transformContext.createQualifier
118+
val innerReturnClass = transformContext.createReturnClass
116119
transformContext = previousContext
120+
if (innerQualifier != null) {
121+
transformContext = transformContext.copy(
122+
createQualifier = innerQualifier,
123+
createReturnClass = innerReturnClass
124+
)
125+
}
117126
return result
118127
}
119128

120129
override fun visitFunction(declaration: IrFunction): IrStatement {
121130
val previousContext = transformContext
122131
transformContext = transformContext.copy(function = declaration)
123132
val result = super.visitFunction(declaration)
133+
// Preserve qualifier propagation from inner create(::T) across function boundary
134+
val innerQualifier = transformContext.createQualifier
135+
val innerReturnClass = transformContext.createReturnClass
124136
transformContext = previousContext
137+
if (innerQualifier != null) {
138+
transformContext = transformContext.copy(
139+
createQualifier = innerQualifier,
140+
createReturnClass = innerReturnClass
141+
)
142+
}
125143
return result
126144
}
127145

@@ -400,7 +418,7 @@ class KoinDSLTransformer(
400418
}
401419
is IrSimpleFunction -> {
402420
// Extract qualifier from function for propagation to enclosing definition
403-
val funcQualifier = qualifierExtractor.extractFromDeclaration(referencedFunction)
421+
val funcQualifier = qualifierExtractor.extractFromDeclaration(referencedFunction, "function ${referencedFunction.name}")
404422
if (funcQualifier != null && currentDefinitionCall != null) {
405423
transformContext = transformContext.copy(
406424
createQualifier = funcQualifier,

test-apps/gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
[versions]
22
kotlin = "2.3.20-RC"
33
koin = "4.2.0-RC1"
4-
koin-plugin = "0.4.0"
4+
koin-plugin = "0.4.1"
55

66
[libraries]
77
koin-core = { module = "io.insert-koin:koin-core", version.ref = "koin" }

0 commit comments

Comments
 (0)