Skip to content

Commit ae16a87

Browse files
authored
Merge pull request #9694 from igfoo/igfoo/useFunction
Kotlin: Some useFunction simplification
2 parents b708e62 + bee703a commit ae16a87

File tree

1 file changed

+10
-14
lines changed

1 file changed

+10
-14
lines changed

java/kotlin-extractor/src/main/kotlin/KotlinUsesExtractor.kt

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1146,15 +1146,6 @@ open class KotlinUsesExtractor(
11461146
return res
11471147
}
11481148

1149-
fun <T: DbCallable> useFunctionCommon(f: IrFunction, label: String): Label<out T> {
1150-
val id: Label<T> = tw.getLabelFor(label)
1151-
if (isExternalDeclaration(f)) {
1152-
extractFunctionLaterIfExternalFileMember(f)
1153-
extractExternalEnclosingClassLater(f)
1154-
}
1155-
return id
1156-
}
1157-
11581149
// These are classes with Java equivalents, but whose methods don't all exist on those Java equivalents--
11591150
// for example, the numeric classes define arithmetic functions (Int.plus, Long.or and so on) that lower to
11601151
// 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(
12141205
val ids = getLocallyVisibleFunctionLabels(f)
12151206
return ids.function.cast<T>()
12161207
} else {
1217-
val realFunction = kotlinFunctionToJavaEquivalent(f, noReplace)
1218-
return useFunctionCommon<T>(realFunction, getFunctionLabel(realFunction, classTypeArgsIncludingOuterClasses))
1208+
return useFunction(f, null, classTypeArgsIncludingOuterClasses, noReplace)
12191209
}
12201210
}
12211211

1222-
fun <T: DbCallable> useFunction(f: IrFunction, parentId: Label<out DbElement>, classTypeArgsIncludingOuterClasses: List<IrTypeArgument>?, noReplace: Boolean = false) =
1223-
kotlinFunctionToJavaEquivalent(f, noReplace).let {
1224-
useFunctionCommon<T>(it, getFunctionLabel(it, parentId, classTypeArgsIncludingOuterClasses))
1212+
fun <T: DbCallable> useFunction(f: IrFunction, parentId: Label<out DbElement>?, classTypeArgsIncludingOuterClasses: List<IrTypeArgument>?, noReplace: Boolean = false): Label<out T> {
1213+
val javaFun = kotlinFunctionToJavaEquivalent(f, noReplace)
1214+
val label = getFunctionLabel(javaFun, parentId, classTypeArgsIncludingOuterClasses)
1215+
val id: Label<T> = tw.getLabelFor(label)
1216+
if (isExternalDeclaration(javaFun)) {
1217+
extractFunctionLaterIfExternalFileMember(javaFun)
1218+
extractExternalEnclosingClassLater(javaFun)
12251219
}
1220+
return id
1221+
}
12261222

12271223
fun getTypeArgumentLabel(
12281224
arg: IrTypeArgument

0 commit comments

Comments
 (0)