From ab19d8c3c3a99e07e708ad99c93520c43649f298 Mon Sep 17 00:00:00 2001 From: Ian Lynagh Date: Thu, 23 Jun 2022 17:59:28 +0100 Subject: [PATCH 1/3] Kotlin: Move useFunctionCommon --- .../src/main/kotlin/KotlinUsesExtractor.kt | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/java/kotlin-extractor/src/main/kotlin/KotlinUsesExtractor.kt b/java/kotlin-extractor/src/main/kotlin/KotlinUsesExtractor.kt index b5fcad1372d..a413ea7e553 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. @@ -1224,6 +1215,15 @@ open class KotlinUsesExtractor( useFunctionCommon(it, getFunctionLabel(it, parentId, classTypeArgsIncludingOuterClasses)) } + private fun useFunctionCommon(f: IrFunction, label: String): Label { + val id: Label = tw.getLabelFor(label) + if (isExternalDeclaration(f)) { + extractFunctionLaterIfExternalFileMember(f) + extractExternalEnclosingClassLater(f) + } + return id + } + fun getTypeArgumentLabel( arg: IrTypeArgument ): TypeResult { From 3934491dcc0ecd9a85ac286f593bf22ad189a3b6 Mon Sep 17 00:00:00 2001 From: Ian Lynagh Date: Thu, 23 Jun 2022 18:05:14 +0100 Subject: [PATCH 2/3] Kotlin: Refactor useFunction* They now work in a way more similar to other families of functions we have. --- .../src/main/kotlin/KotlinUsesExtractor.kt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/java/kotlin-extractor/src/main/kotlin/KotlinUsesExtractor.kt b/java/kotlin-extractor/src/main/kotlin/KotlinUsesExtractor.kt index a413ea7e553..8467e27033f 100644 --- a/java/kotlin-extractor/src/main/kotlin/KotlinUsesExtractor.kt +++ b/java/kotlin-extractor/src/main/kotlin/KotlinUsesExtractor.kt @@ -1205,17 +1205,17 @@ 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 { + return kotlinFunctionToJavaEquivalent(f, noReplace).let { + useFunction(it, getFunctionLabel(it, parentId, classTypeArgsIncludingOuterClasses)) } + } - private fun useFunctionCommon(f: IrFunction, label: String): Label { + private fun useFunction(f: IrFunction, label: String): Label { val id: Label = tw.getLabelFor(label) if (isExternalDeclaration(f)) { extractFunctionLaterIfExternalFileMember(f) From bee703a870d7a5351e276c95a37af173b2e84d5e Mon Sep 17 00:00:00 2001 From: Ian Lynagh Date: Thu, 23 Jun 2022 18:10:30 +0100 Subject: [PATCH 3/3] Kotlin: Inline away useFunctionCommon --- .../src/main/kotlin/KotlinUsesExtractor.kt | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/java/kotlin-extractor/src/main/kotlin/KotlinUsesExtractor.kt b/java/kotlin-extractor/src/main/kotlin/KotlinUsesExtractor.kt index 8467e27033f..5047b8593ff 100644 --- a/java/kotlin-extractor/src/main/kotlin/KotlinUsesExtractor.kt +++ b/java/kotlin-extractor/src/main/kotlin/KotlinUsesExtractor.kt @@ -1210,16 +1210,12 @@ open class KotlinUsesExtractor( } fun useFunction(f: IrFunction, parentId: Label?, classTypeArgsIncludingOuterClasses: List?, noReplace: Boolean = false): Label { - return kotlinFunctionToJavaEquivalent(f, noReplace).let { - useFunction(it, getFunctionLabel(it, parentId, classTypeArgsIncludingOuterClasses)) - } - } - - private fun useFunction(f: IrFunction, label: String): Label { + val javaFun = kotlinFunctionToJavaEquivalent(f, noReplace) + val label = getFunctionLabel(javaFun, parentId, classTypeArgsIncludingOuterClasses) val id: Label = tw.getLabelFor(label) - if (isExternalDeclaration(f)) { - extractFunctionLaterIfExternalFileMember(f) - extractExternalEnclosingClassLater(f) + if (isExternalDeclaration(javaFun)) { + extractFunctionLaterIfExternalFileMember(javaFun) + extractExternalEnclosingClassLater(javaFun) } return id }