Kotlin: give external extension properties with matching name and file distinct trap filenames

This commit is contained in:
Chris Smowton
2022-10-21 14:26:42 +01:00
parent 5e28e5a170
commit 42d6968c20
7 changed files with 29 additions and 6 deletions

View File

@@ -35,8 +35,6 @@ class ExternalDeclExtractor(val logger: FileLogger, val invocationTrapFile: Stri
if (ret) externalDeclWorkList.add(Pair(d, signature))
return ret
}
fun extractLater(p: IrProperty) = extractLater(p, propertySignature)
fun extractLater(f: IrField) = extractLater(f, fieldSignature)
fun extractLater(c: IrClass) = extractLater(c, "")
fun extractExternalClasses() {

View File

@@ -253,19 +253,24 @@ open class KotlinUsesExtractor(
}
}
private fun propertySignature(p: IrProperty) =
((p.getter ?: p.setter)?.extensionReceiverParameter?.let { useType(erase(it.type)).javaResult.signature } ?: "")
private fun extractPropertyLaterIfExternalFileMember(p: IrProperty) {
if (isExternalFileClassMember(p)) {
extractExternalClassLater(p.parentAsClass)
dependencyCollector?.addDependency(p, externalClassExtractor.propertySignature)
externalClassExtractor.extractLater(p)
val signature = propertySignature(p) + externalClassExtractor.propertySignature
dependencyCollector?.addDependency(p, signature)
externalClassExtractor.extractLater(p, signature)
}
}
private fun extractFieldLaterIfExternalFileMember(f: IrField) {
if (isExternalFileClassMember(f)) {
extractExternalClassLater(f.parentAsClass)
dependencyCollector?.addDependency(f, externalClassExtractor.fieldSignature)
externalClassExtractor.extractLater(f)
val signature = (f.correspondingPropertySymbol?.let { propertySignature(it.owner) } ?: "") + externalClassExtractor.fieldSignature
dependencyCollector?.addDependency(f, signature)
externalClassExtractor.extractLater(f, signature)
}
}