Kotlin: Remove KotlinSourceFileExtractor

This commit is contained in:
Ian Lynagh
2022-01-13 16:45:02 +00:00
parent c1c4e4f86c
commit e1cff50c39
5 changed files with 9 additions and 30 deletions

View File

@@ -43,7 +43,7 @@ class ExternalClassExtractor(val logger: FileLogger, val invocationTrapFile: Str
val binaryPath = getIrClassBinaryPath(irClass)
val ftw = tw.makeFileTrapWriter(binaryPath, true)
val fileExtractor = KotlinFileExtractor(logger, ftw, manager, this, primitiveTypeMapping, pluginContext, genericSpecialisationsExtracted)
val fileExtractor = KotlinFileExtractor(logger, ftw, binaryPath, manager, this, primitiveTypeMapping, pluginContext, genericSpecialisationsExtracted)
fileExtractor.extractClassSource(irClass)
}
}

View File

@@ -123,7 +123,7 @@ fun doFile(invocationTrapFile: String,
// file information
val sftw = tw.makeSourceFileTrapWriter(file, true)
val externalClassExtractor = ExternalClassExtractor(logger, invocationTrapFile, file.path, primitiveTypeMapping, pluginContext, genericSpecialisationsExtracted)
val fileExtractor = KotlinSourceFileExtractor(logger, sftw, file.path, externalClassExtractor, primitiveTypeMapping, pluginContext, genericSpecialisationsExtracted)
val fileExtractor = KotlinFileExtractor(logger, sftw, file.path, null, externalClassExtractor, primitiveTypeMapping, pluginContext, genericSpecialisationsExtracted)
fileExtractor.extractFileContents(file, sftw.fileId)
externalClassExtractor.extractExternalClasses()
}

View File

@@ -28,6 +28,7 @@ import java.util.*
open class KotlinFileExtractor(
override val logger: FileLogger,
override val tw: FileTrapWriter,
val filePath: String,
dependencyCollector: OdasaOutput.TrapFileManager?,
externalClassExtractor: ExternalClassExtractor,
primitiveTypeMapping: PrimitiveTypeMapping,
@@ -2524,7 +2525,7 @@ open class KotlinFileExtractor(
}
if (parent is IrFile) {
if (this is KotlinSourceFileExtractor && this.filePath == parent.path) {
if (this.filePath == parent.path) {
val fileId = extractFileClass(parent)
tw.writeEnclInReftype(id, fileId)
} else {

View File

@@ -1,23 +0,0 @@
package com.github.codeql
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
import org.jetbrains.kotlin.ir.declarations.IrClass
import org.jetbrains.kotlin.ir.declarations.IrFile
import org.jetbrains.kotlin.ir.expressions.IrConst
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
import org.jetbrains.kotlin.ir.types.IrSimpleType
import org.jetbrains.kotlin.ir.util.packageFqName
import org.jetbrains.kotlin.ir.util.IdSignature
// TODO: Is a separate class for this, vs KotlinFileExtractor, useful?
class KotlinSourceFileExtractor(
logger: FileLogger,
tw: FileTrapWriter,
val filePath: String,
externalClassExtractor: ExternalClassExtractor,
primitiveTypeMapping: PrimitiveTypeMapping,
pluginContext: IrPluginContext,
genericSpecialisationsExtracted: MutableSet<String>
) :
KotlinFileExtractor(logger, tw, null, externalClassExtractor, primitiveTypeMapping, pluginContext, genericSpecialisationsExtracted) {
}

View File

@@ -120,18 +120,19 @@ open class KotlinUsesExtractor(
val clsFile = cls.fileOrNull
if (isExternalDeclaration(cls) || clsFile == null) {
val newTrapWriter = tw.makeFileTrapWriter(getIrClassBinaryPath(cls), false)
val filePath = getIrClassBinaryPath(cls)
val newTrapWriter = tw.makeFileTrapWriter(filePath, false)
val newLogger = FileLogger(logger.logCounter, newTrapWriter)
return KotlinFileExtractor(newLogger, newTrapWriter, dependencyCollector, externalClassExtractor, primitiveTypeMapping, pluginContext, genericSpecialisationsExtracted)
return KotlinFileExtractor(newLogger, newTrapWriter, filePath, dependencyCollector, externalClassExtractor, primitiveTypeMapping, pluginContext, genericSpecialisationsExtracted)
}
if (this is KotlinSourceFileExtractor && this.filePath == clsFile.path) {
if (this is KotlinFileExtractor && this.filePath == clsFile.path) {
return this
}
val newTrapWriter = tw.makeSourceFileTrapWriter(clsFile, false)
val newLogger = FileLogger(logger.logCounter, newTrapWriter)
return KotlinSourceFileExtractor(newLogger, newTrapWriter, clsFile.path, externalClassExtractor, primitiveTypeMapping, pluginContext, genericSpecialisationsExtracted)
return KotlinFileExtractor(newLogger, newTrapWriter, clsFile.path, null, externalClassExtractor, primitiveTypeMapping, pluginContext, genericSpecialisationsExtracted)
}
// The Kotlin compiler internal representation of Outer<T>.Inner<S>.InnerInner<R> is InnerInner<R, S, T>. This function returns just `R`.