@@ -3,9 +3,11 @@ package com.github.codeql.comments
33import com.github.codeql.*
44import com.github.codeql.utils.IrVisitorLookup
55import com.github.codeql.utils.isLocalFunction
6- import com.github.codeql.utils.versions.Psi2Ir
6+ import com.github.codeql.utils.versions.getPsi2Ir
7+ import com.github.codeql.utils.versions.Psi2IrFacade
78import com.intellij.psi.PsiComment
89import com.intellij.psi.PsiElement
10+ import org.jetbrains.kotlin.config.KotlinCompilerVersion
911import org.jetbrains.kotlin.ir.IrElement
1012import org.jetbrains.kotlin.ir.declarations.*
1113import org.jetbrains.kotlin.ir.expressions.IrBody
@@ -21,18 +23,23 @@ import org.jetbrains.kotlin.psi.psiUtil.startOffset
2123class CommentExtractor (private val fileExtractor : KotlinFileExtractor , private val file : IrFile , private val fileLabel : Label <out DbFile >) {
2224 private val tw = fileExtractor.tw
2325 private val logger = fileExtractor.logger
24- private val psi2Ir = Psi2Ir (logger)
25- private val ktFile = psi2Ir.getKtFile(file)
2626
2727 fun extract () {
28+ val psi2Ir = getPsi2Ir(logger)
29+ if (psi2Ir == null ) {
30+ logger.warn(" Comments will not be extracted as Kotlin version is too old (${KotlinCompilerVersion .getVersion()} )" )
31+ return
32+ }
33+ val ktFile = psi2Ir.getKtFile(file)
2834 if (ktFile == null ) {
2935 logger.warn(" Comments are not being processed in ${file.path} ." )
30- } else {
31- ktFile.accept(commentVisitor)
36+ return
3237 }
38+ val commentVisitor = mkCommentVisitor(psi2Ir)
39+ ktFile.accept(commentVisitor)
3340 }
3441
35- private val commentVisitor =
42+ private fun mkCommentVisitor ( psi2Ir : Psi2IrFacade ): KtVisitor < Unit , Unit > =
3643 object : KtVisitor <Unit , Unit >() {
3744 override fun visitElement (element : PsiElement ) {
3845 element.acceptChildren(this )
0 commit comments