Kotlin: KotlinSourceFileExtractor: Take filePath rather than file

This commit is contained in:
Ian Lynagh
2022-01-13 16:05:52 +00:00
parent 8e31bd8ec7
commit d43efd4cc7
5 changed files with 10 additions and 10 deletions

View File

@@ -123,8 +123,8 @@ 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, externalClassExtractor, primitiveTypeMapping, pluginContext, genericSpecialisationsExtracted)
fileExtractor.extractFileContents(sftw.fileId)
val fileExtractor = KotlinSourceFileExtractor(logger, sftw, file.path, externalClassExtractor, primitiveTypeMapping, pluginContext, genericSpecialisationsExtracted)
fileExtractor.extractFileContents(file, sftw.fileId)
externalClassExtractor.extractExternalClasses()
}
if (checkTrapIdentical && trapFile.exists()) {

View File

@@ -2513,7 +2513,7 @@ open class KotlinFileExtractor(
}
if (parent is IrFile) {
if (this is KotlinSourceFileExtractor && this.file == parent) {
if (this is KotlinSourceFileExtractor && this.filePath == parent.path) {
val fileId = extractFileClass(parent)
tw.writeEnclInReftype(id, fileId)
} else {

View File

@@ -14,7 +14,7 @@ import org.jetbrains.kotlin.ir.util.IdSignature
class KotlinSourceFileExtractor(
logger: FileLogger,
tw: FileTrapWriter,
val file: IrFile,
val filePath: String,
externalClassExtractor: ExternalClassExtractor,
primitiveTypeMapping: PrimitiveTypeMapping,
pluginContext: IrPluginContext,
@@ -22,13 +22,13 @@ class KotlinSourceFileExtractor(
) :
KotlinFileExtractor(logger, tw, null, externalClassExtractor, primitiveTypeMapping, pluginContext, genericSpecialisationsExtracted) {
fun extractFileContents(id: Label<DbFile>) {
fun extractFileContents(file: IrFile, id: Label<DbFile>) {
val locId = tw.getWholeFileLocation()
val pkg = file.fqName.asString()
val pkgId = extractPackage(pkg)
tw.writeHasLocation(id, locId)
tw.writeCupackage(id, pkgId)
file.declarations.map { extractDeclaration(it) }
CommentExtractor(this).extract()
CommentExtractor(this, file).extract()
}
}

View File

@@ -125,13 +125,13 @@ open class KotlinUsesExtractor(
return KotlinFileExtractor(newLogger, newTrapWriter, dependencyCollector, externalClassExtractor, primitiveTypeMapping, pluginContext, genericSpecialisationsExtracted)
}
if (this is KotlinSourceFileExtractor && this.file == clsFile) {
if (this is KotlinSourceFileExtractor && this.filePath == clsFile.path) {
return this
}
val newTrapWriter = tw.makeSourceFileTrapWriter(clsFile, false)
val newLogger = FileLogger(logger.logCounter, newTrapWriter)
return KotlinSourceFileExtractor(newLogger, newTrapWriter, clsFile, externalClassExtractor, primitiveTypeMapping, pluginContext, genericSpecialisationsExtracted)
return KotlinSourceFileExtractor(newLogger, newTrapWriter, clsFile.path, 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`.

View File

@@ -7,14 +7,14 @@ import com.intellij.psi.PsiComment
import com.intellij.psi.PsiElement
import org.jetbrains.kotlin.ir.IrElement
import org.jetbrains.kotlin.ir.declarations.path
import org.jetbrains.kotlin.ir.declarations.IrFile
import org.jetbrains.kotlin.kdoc.psi.api.KDoc
import org.jetbrains.kotlin.lexer.KtTokens
import org.jetbrains.kotlin.psi.KtVisitor
import org.jetbrains.kotlin.psi.psiUtil.endOffset
import org.jetbrains.kotlin.psi.psiUtil.startOffset
class CommentExtractor(private val fileExtractor: KotlinSourceFileExtractor) {
private val file = fileExtractor.file
class CommentExtractor(private val fileExtractor: KotlinSourceFileExtractor, private val file: IrFile) {
private val tw = fileExtractor.tw
private val logger = fileExtractor.logger
private val ktFile = Psi2Ir().getKtFile(file)