diff --git a/java/kotlin-extractor/src/main/kotlin/KotlinUsesExtractor.kt b/java/kotlin-extractor/src/main/kotlin/KotlinUsesExtractor.kt index a67fa9e91ef..928d0710b21 100644 --- a/java/kotlin-extractor/src/main/kotlin/KotlinUsesExtractor.kt +++ b/java/kotlin-extractor/src/main/kotlin/KotlinUsesExtractor.kt @@ -1146,15 +1146,6 @@ open class KotlinUsesExtractor( return res } - fun useFunctionCommon(f: IrFunction, label: String): Label { - val id: Label = tw.getLabelFor(label) - if (isExternalDeclaration(f)) { - extractFunctionLaterIfExternalFileMember(f) - extractExternalEnclosingClassLater(f) - } - return id - } - // These are classes with Java equivalents, but whose methods don't all exist on those Java equivalents-- // for example, the numeric classes define arithmetic functions (Int.plus, Long.or and so on) that lower to // primitive arithmetic on the JVM, but which we extract as calls to reflect the source syntax more closely. @@ -1214,15 +1205,20 @@ open class KotlinUsesExtractor( val ids = getLocallyVisibleFunctionLabels(f) return ids.function.cast() } else { - val realFunction = kotlinFunctionToJavaEquivalent(f, noReplace) - return useFunctionCommon(realFunction, getFunctionLabel(realFunction, classTypeArgsIncludingOuterClasses)) + return useFunction(f, null, classTypeArgsIncludingOuterClasses, noReplace) } } - fun useFunction(f: IrFunction, parentId: Label, classTypeArgsIncludingOuterClasses: List?, noReplace: Boolean = false) = - kotlinFunctionToJavaEquivalent(f, noReplace).let { - useFunctionCommon(it, getFunctionLabel(it, parentId, classTypeArgsIncludingOuterClasses)) + fun useFunction(f: IrFunction, parentId: Label?, classTypeArgsIncludingOuterClasses: List?, noReplace: Boolean = false): Label { + val javaFun = kotlinFunctionToJavaEquivalent(f, noReplace) + val label = getFunctionLabel(javaFun, parentId, classTypeArgsIncludingOuterClasses) + val id: Label = tw.getLabelFor(label) + if (isExternalDeclaration(javaFun)) { + extractFunctionLaterIfExternalFileMember(javaFun) + extractExternalEnclosingClassLater(javaFun) } + return id + } fun getTypeArgumentLabel( arg: IrTypeArgument