@@ -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,
0 commit comments