diff --git a/compiler/container/src/org/jetbrains/kotlin/container/Singletons.kt b/compiler/container/src/org/jetbrains/kotlin/container/Singletons.kt index 106ba17277e..70df19e3530 100644 --- a/compiler/container/src/org/jetbrains/kotlin/container/Singletons.kt +++ b/compiler/container/src/org/jetbrains/kotlin/container/Singletons.kt @@ -115,14 +115,9 @@ public abstract class SingletonDescriptor(val container: ComponentContainer) : C get() = true } -public abstract class SingletonComponentDescriptor(container: ComponentContainer, val klass: Class<*>) : SingletonDescriptor(container) { - override fun toString(): String = "Singleton: ${klass.getSimpleName()}" - - public override fun getRegistrations(): Iterable = klass.getInfo().registrations -} - -public class SingletonTypeComponentDescriptor(container: ComponentContainer, klass: Class<*>) : SingletonComponentDescriptor(container, klass) { +public open class SingletonTypeComponentDescriptor(container: ComponentContainer, val klass: Class<*>) : SingletonDescriptor(container) { override fun createInstance(context: ValueResolveContext): Any = createInstanceOf(klass, context) + public override fun getRegistrations(): Iterable = klass.getInfo().registrations private fun createInstanceOf(klass: Class<*>, context: ValueResolveContext): Any { val binding = klass.bindToConstructor(context) @@ -145,4 +140,12 @@ public class SingletonTypeComponentDescriptor(container: ComponentContainer, kla val classInfo = klass.getInfo() return classInfo.constructorInfo?.parameters.orEmpty() + classInfo.setterInfos.flatMap { it.parameters } } + + override fun toString(): String = "Singleton: ${klass.getSimpleName()}" +} + +class ImplicitSingletonTypeComponentDescriptor(container: ComponentContainer, klass: Class<*>) : SingletonTypeComponentDescriptor(container, klass) { + override fun toString(): String { + return "Implicit: ${klass.getSimpleName()}" + } } \ No newline at end of file diff --git a/compiler/container/src/org/jetbrains/kotlin/container/Storage.kt b/compiler/container/src/org/jetbrains/kotlin/container/Storage.kt index cfba964bf03..df288267aef 100644 --- a/compiler/container/src/org/jetbrains/kotlin/container/Storage.kt +++ b/compiler/container/src/org/jetbrains/kotlin/container/Storage.kt @@ -161,7 +161,7 @@ public class ComponentStorage(val myId: String) : ValueResolver { continue if (!Modifier.isAbstract(rawType.getModifiers()) && !rawType.isPrimitive()) { - val implicitDescriptor = SingletonTypeComponentDescriptor(context.container, rawType) + val implicitDescriptor = ImplicitSingletonTypeComponentDescriptor(context.container, rawType) adhocDescriptors.add(implicitDescriptor) collectAdhocComponents(context, implicitDescriptor, visitedTypes, adhocDescriptors) }