[Commonizer] Fix: Skip KNI bridge functions
This commit is contained in:
+3
-3
@@ -31,9 +31,9 @@ internal fun mergeClasses(
|
||||
classes.forEachIndexed { index, clazz ->
|
||||
clazz?.constructors?.forEach { constructorsMap[ConstructorApproximationKey(it)][index] = it }
|
||||
clazz?.unsubstitutedMemberScope?.collectMembers(
|
||||
CallableMemberCollector<PropertyDescriptor> { propertiesMap[PropertyApproximationKey(it)][index] = it },
|
||||
CallableMemberCollector<SimpleFunctionDescriptor> { functionsMap[FunctionApproximationKey(it)][index] = it },
|
||||
Collector<ClassDescriptor> { classesMap[it.name][index] = it }
|
||||
PropertyCollector { propertiesMap[PropertyApproximationKey(it)][index] = it },
|
||||
FunctionCollector { functionsMap[FunctionApproximationKey(it)][index] = it },
|
||||
ClassCollector { classesMap[it.name][index] = it }
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
+22
-4
@@ -19,7 +19,7 @@ internal fun MemberScope.collectMembers(vararg collectors: (DeclarationDescripto
|
||||
}
|
||||
|
||||
@Suppress("FunctionName")
|
||||
internal inline fun <reified T : DeclarationDescriptor> Collector(
|
||||
private inline fun <reified T : DeclarationDescriptor> Collector(
|
||||
crossinline typedCollector: (T) -> Unit
|
||||
): (DeclarationDescriptor) -> Boolean = { candidate ->
|
||||
if (candidate is T) {
|
||||
@@ -30,13 +30,31 @@ internal inline fun <reified T : DeclarationDescriptor> Collector(
|
||||
}
|
||||
|
||||
@Suppress("FunctionName")
|
||||
internal inline fun <reified T : CallableMemberDescriptor> CallableMemberCollector(
|
||||
crossinline typedCollector: (T) -> Unit
|
||||
): (DeclarationDescriptor) -> Boolean = Collector<T> { candidate ->
|
||||
internal inline fun ClassCollector(
|
||||
crossinline typedCollector: (ClassDescriptor) -> Unit
|
||||
): (DeclarationDescriptor) -> Boolean = Collector(typedCollector)
|
||||
|
||||
@Suppress("FunctionName")
|
||||
internal inline fun TypeAliasCollector(
|
||||
crossinline typedCollector: (TypeAliasDescriptor) -> Unit
|
||||
): (DeclarationDescriptor) -> Boolean = Collector(typedCollector)
|
||||
|
||||
@Suppress("FunctionName")
|
||||
internal inline fun PropertyCollector(
|
||||
crossinline typedCollector: (PropertyDescriptor) -> Unit
|
||||
): (DeclarationDescriptor) -> Boolean = Collector<PropertyDescriptor> { candidate ->
|
||||
if (candidate.kind.isReal) // omit fake overrides
|
||||
typedCollector(candidate)
|
||||
}
|
||||
|
||||
@Suppress("FunctionName")
|
||||
internal inline fun FunctionCollector(
|
||||
crossinline typedCollector: (SimpleFunctionDescriptor) -> Unit
|
||||
): (DeclarationDescriptor) -> Boolean = Collector<SimpleFunctionDescriptor> { candidate ->
|
||||
if (candidate.kind.isReal && !candidate.name.asString().startsWith("kniBridge"))
|
||||
typedCollector(candidate)
|
||||
}
|
||||
|
||||
/** Used for approximation of [PropertyDescriptor]s before running concrete [Commonizer]s */
|
||||
internal data class PropertyApproximationKey(
|
||||
val name: Name,
|
||||
|
||||
+4
-4
@@ -34,10 +34,10 @@ internal fun mergePackages(
|
||||
|
||||
packageMemberScopes.forEachIndexed { index, memberScope ->
|
||||
memberScope?.collectMembers(
|
||||
CallableMemberCollector<PropertyDescriptor> { propertiesMap[PropertyApproximationKey(it)][index] = it },
|
||||
CallableMemberCollector<SimpleFunctionDescriptor> { functionsMap[FunctionApproximationKey(it)][index] = it },
|
||||
Collector<ClassDescriptor> { classesMap[it.name][index] = it },
|
||||
Collector<TypeAliasDescriptor> { typeAliasesMap[it.name][index] = it }
|
||||
PropertyCollector { propertiesMap[PropertyApproximationKey(it)][index] = it },
|
||||
FunctionCollector { functionsMap[FunctionApproximationKey(it)][index] = it },
|
||||
ClassCollector { classesMap[it.name][index] = it },
|
||||
TypeAliasCollector { typeAliasesMap[it.name][index] = it }
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
+8
-8
@@ -76,10 +76,10 @@ internal class ComparingDeclarationsVisitor(
|
||||
val expectedTypeAliases = mutableMapOf<FqName, TypeAliasDescriptor>()
|
||||
|
||||
expected.collectMembers(
|
||||
CallableMemberCollector<PropertyDescriptor> { expectedProperties[PropertyApproximationKey(it)] = it },
|
||||
CallableMemberCollector<SimpleFunctionDescriptor> { expectedFunctions[FunctionApproximationKey(it)] = it },
|
||||
Collector<ClassDescriptor> { expectedClasses[it.fqNameSafe] = it },
|
||||
Collector<TypeAliasDescriptor> { expectedTypeAliases[it.fqNameSafe] = it }
|
||||
PropertyCollector { expectedProperties[PropertyApproximationKey(it)] = it },
|
||||
FunctionCollector { expectedFunctions[FunctionApproximationKey(it)] = it },
|
||||
ClassCollector { expectedClasses[it.fqNameSafe] = it },
|
||||
TypeAliasCollector { expectedTypeAliases[it.fqNameSafe] = it }
|
||||
)
|
||||
|
||||
val actualProperties = mutableMapOf<PropertyApproximationKey, PropertyDescriptor>()
|
||||
@@ -88,10 +88,10 @@ internal class ComparingDeclarationsVisitor(
|
||||
val actualTypeAliases = mutableMapOf<FqName, TypeAliasDescriptor>()
|
||||
|
||||
actual.collectMembers(
|
||||
CallableMemberCollector<PropertyDescriptor> { actualProperties[PropertyApproximationKey(it)] = it },
|
||||
CallableMemberCollector<SimpleFunctionDescriptor> { actualFunctions[FunctionApproximationKey(it)] = it },
|
||||
Collector<ClassDescriptor> { actualClasses[it.fqNameSafe] = it },
|
||||
Collector<TypeAliasDescriptor> { actualTypeAliases[it.fqNameSafe] = it }
|
||||
PropertyCollector { actualProperties[PropertyApproximationKey(it)] = it },
|
||||
FunctionCollector { actualFunctions[FunctionApproximationKey(it)] = it },
|
||||
ClassCollector { actualClasses[it.fqNameSafe] = it },
|
||||
TypeAliasCollector { actualTypeAliases[it.fqNameSafe] = it }
|
||||
)
|
||||
|
||||
context.assertSetsEqual(expectedProperties.keys, actualProperties.keys, "sets of properties")
|
||||
|
||||
Reference in New Issue
Block a user