@@ -6,28 +6,30 @@ import com.semmle.extractor.java.OdasaOutput
6
6
import com.semmle.util.data.StringDigestor
7
7
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
8
8
import org.jetbrains.kotlin.ir.declarations.*
9
+ import org.jetbrains.kotlin.ir.util.fqNameWhenAvailable
9
10
import org.jetbrains.kotlin.ir.util.isFileClass
10
11
import org.jetbrains.kotlin.ir.util.packageFqName
11
12
import org.jetbrains.kotlin.ir.util.parentClassOrNull
13
+ import org.jetbrains.kotlin.name.FqName
12
14
import java.io.File
13
15
import java.util.ArrayList
14
16
import java.util.HashSet
15
17
import java.util.zip.GZIPOutputStream
16
18
17
19
class ExternalDeclExtractor (val logger : FileLogger , val invocationTrapFile : String , val sourceFilePath : String , val primitiveTypeMapping : PrimitiveTypeMapping , val pluginContext : IrPluginContext , val globalExtensionState : KotlinExtractorGlobalState , val diagnosticTrapWriter : TrapWriter ) {
18
20
19
- val externalDeclsDone = HashSet <IrDeclaration >()
21
+ val externalDeclsDone = HashSet <Pair < FqName , String > >()
20
22
val externalDeclWorkList = ArrayList <Pair <IrDeclaration , String >>()
21
23
22
24
val propertySignature = " ;property"
23
25
val fieldSignature = " ;field"
24
26
25
- fun extractLater (d : IrDeclaration , signature : String ): Boolean {
27
+ fun extractLater (d : IrDeclarationWithName , signature : String ): Boolean {
26
28
if (d !is IrClass && ! isExternalFileClassMember(d)) {
27
29
logger.errorElement(" External declaration is neither a class, nor a top-level declaration" , d)
28
30
return false
29
31
}
30
- val ret = externalDeclsDone.add(d )
32
+ val ret = externalDeclsDone.add(Pair (d.fqNameWhenAvailable !! , signature) )
31
33
if (ret) externalDeclWorkList.add(Pair (d, signature))
32
34
return ret
33
35
}
0 commit comments