Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit e64a8bc

Browse files
committed
Use binary names not fqnames for uniquing IrDeclarations
Otherwise we fall into the trap of confusing the two overloads of `MapsKt.iterator` which have differing jvmnames.
1 parent 57ea34d commit e64a8bc

1 file changed

Lines changed: 4 additions & 2 deletions

File tree

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

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ import java.util.zip.GZIPOutputStream
1818

1919
class ExternalDeclExtractor(val logger: FileLogger, val invocationTrapFile: String, val sourceFilePath: String, val primitiveTypeMapping: PrimitiveTypeMapping, val pluginContext: IrPluginContext, val globalExtensionState: KotlinExtractorGlobalState, val diagnosticTrapWriter: TrapWriter) {
2020

21-
val externalDeclsDone = HashSet<Pair<FqName, String>>()
21+
val declBinaryNames = HashMap<IrDeclaration, String>()
22+
val externalDeclsDone = HashSet<Pair<String, String>>()
2223
val externalDeclWorkList = ArrayList<Pair<IrDeclaration, String>>()
2324

2425
val propertySignature = ";property"
@@ -29,7 +30,8 @@ class ExternalDeclExtractor(val logger: FileLogger, val invocationTrapFile: Stri
2930
logger.errorElement("External declaration is neither a class, nor a top-level declaration", d)
3031
return false
3132
}
32-
val ret = externalDeclsDone.add(Pair(d.fqNameWhenAvailable!!, signature))
33+
val declBinaryName = declBinaryNames.getOrPut(d) { getIrDeclBinaryName(d) }
34+
val ret = externalDeclsDone.add(Pair(declBinaryName, signature))
3335
if (ret) externalDeclWorkList.add(Pair(d, signature))
3436
return ret
3537
}

0 commit comments

Comments
 (0)