@@ -26,6 +26,7 @@ import kotlin.reflect.jvm.internal.impl.load.kotlin.header.KotlinClassHeader
26
26
import kotlin.reflect.jvm.jvmName
27
27
28
28
private typealias IsNullableAnnotated = Boolean
29
+ private typealias FullClassName = String
29
30
30
31
internal object ReflectionMetadata {
31
32
private val logger = KotlinLogging .logger { }
@@ -81,7 +82,7 @@ internal object ReflectionMetadata {
81
82
.disableNestedJarScanning()
82
83
.scan()
83
84
.use { scan ->
84
- val referencedByFactories = hashSetOf<Class < * > >()
85
+ val referencedByFactories = hashSetOf<FullClassName >()
85
86
scan.allClasses
86
87
.filterLibraryClasses(config, referencedByFactories)
87
88
.filterClasses(config)
@@ -101,10 +102,10 @@ internal object ReflectionMetadata {
101
102
scannedParams = true
102
103
}
103
104
104
- private fun List<ClassInfo>.filterLibraryClasses (config : BConfig , referencedByFactories : MutableSet <Class < * > >): List <ClassInfo > = filter { classInfo ->
105
+ private fun List<ClassInfo>.filterLibraryClasses (config : BConfig , referencedByFactories : MutableSet <FullClassName >): List <ClassInfo > = filter { classInfo ->
105
106
if (! classInfo.isFromLib()) return @filter true
106
107
107
- if (classInfo.loadClass() in referencedByFactories) return @filter true
108
+ if (classInfo.name in referencedByFactories) return @filter true
108
109
109
110
if (classInfo.isServiceOrHasFactories(config, referencedByFactories)) return @filter true
110
111
if (classInfo.outerClasses.any { it.isServiceOrHasFactories(config, referencedByFactories) }) return @filter true
@@ -114,12 +115,12 @@ internal object ReflectionMetadata {
114
115
return @filter false
115
116
}
116
117
117
- private fun ClassInfo.isServiceOrHasFactories (config : BConfig , referencedByFactories : MutableSet <Class < * > >): Boolean {
118
+ private fun ClassInfo.isServiceOrHasFactories (config : BConfig , referencedByFactories : MutableSet <FullClassName >): Boolean {
118
119
if (this .isService(config)) return true
119
120
120
121
val factories = this .methodInfo.filter { it.isService(config) }
121
122
if (factories.isNotEmpty()) {
122
- referencedByFactories + = factories.map { it.loadClassAndGetMethod().returnType }
123
+ referencedByFactories + = factories.map { it.typeDescriptor.resultType.toStringWithSimpleNames() }
123
124
return true
124
125
} else {
125
126
return false
0 commit comments