Skip to content

Commit 2edeeaa

Browse files
authored
Merge pull request github#9801 from igfoo/igfoo/psi
Kotlin: We can't extract comments for < 1.5.20
2 parents 2ddcf83 + 960d1db commit 2edeeaa

File tree

10 files changed

+42
-42
lines changed

10 files changed

+42
-42
lines changed

java/kotlin-extractor/src/main/kotlin/comments/CommentExtractor.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ import org.jetbrains.kotlin.psi.psiUtil.startOffset
1616
class CommentExtractor(private val fileExtractor: KotlinFileExtractor, private val file: IrFile, private val fileLabel: Label<out DbFile>) {
1717
private val tw = fileExtractor.tw
1818
private val logger = fileExtractor.logger
19-
private val ktFile = Psi2Ir().getKtFile(file)
19+
private val psi2Ir = Psi2Ir(logger)
20+
private val ktFile = psi2Ir.getKtFile(file)
2021

2122
fun extract() {
2223
if (ktFile == null) {
@@ -85,7 +86,7 @@ class CommentExtractor(private val fileExtractor: KotlinFileExtractor, private v
8586
val ownerPsi = getKDocOwner(comment) ?: return
8687

8788
val owners = mutableListOf<IrElement>()
88-
file.accept(IrVisitorLookup(ownerPsi, file), owners)
89+
file.accept(IrVisitorLookup(psi2Ir, ownerPsi, file), owners)
8990

9091
for (ownerIr in owners) {
9192
val ownerLabel =

java/kotlin-extractor/src/main/kotlin/utils/IrVisitorLookup.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import org.jetbrains.kotlin.ir.declarations.IrFile
88
import org.jetbrains.kotlin.ir.util.isFakeOverride
99
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
1010

11-
class IrVisitorLookup(private val psi: PsiElement, private val file: IrFile) :
11+
class IrVisitorLookup(private val psi2Ir: Psi2Ir, private val psi: PsiElement, private val file: IrFile) :
1212
IrElementVisitor<Unit, MutableCollection<IrElement>> {
1313
private val location = psi.getLocation()
1414

@@ -27,12 +27,12 @@ class IrVisitorLookup(private val psi: PsiElement, private val file: IrFile) :
2727
}
2828

2929
if (location.contains(elementLocation)) {
30-
val psiElement = Psi2Ir().findPsiElement(element, file)
30+
val psiElement = psi2Ir.findPsiElement(element, file)
3131
if (psiElement == psi) {
3232
// There can be multiple IrElements that match the same PSI element.
3333
data.add(element)
3434
}
3535
}
3636
element.acceptChildren(this, data)
3737
}
38-
}
38+
}
Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,19 @@
11
package com.github.codeql.utils.versions
22

3+
import com.github.codeql.FileLogger
34
import com.intellij.psi.PsiElement
45
import org.jetbrains.kotlin.ir.IrElement
56
import org.jetbrains.kotlin.ir.declarations.IrFile
67
import org.jetbrains.kotlin.psi.KtFile
7-
import org.jetbrains.kotlin.psi2ir.PsiSourceManager
8-
9-
class Psi2Ir : Psi2IrFacade {
10-
companion object {
11-
val psiManager = PsiSourceManager()
12-
}
138

9+
class Psi2Ir(private val logger: FileLogger) : Psi2IrFacade {
1410
override fun getKtFile(irFile: IrFile): KtFile? {
15-
return psiManager.getKtFile(irFile)
11+
logger.warn("Comment extraction is not supported for Kotlin < 1.5.20")
12+
return null
1613
}
1714

1815
override fun findPsiElement(irElement: IrElement, irFile: IrFile): PsiElement? {
19-
return psiManager.findPsiElement(irElement, irFile)
16+
logger.error("Attempted comment extraction for Kotlin < 1.5.20")
17+
return null
2018
}
21-
}
19+
}
Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,19 @@
11
package com.github.codeql.utils.versions
22

3+
import com.github.codeql.FileLogger
34
import com.intellij.psi.PsiElement
45
import org.jetbrains.kotlin.ir.IrElement
56
import org.jetbrains.kotlin.ir.declarations.IrFile
67
import org.jetbrains.kotlin.psi.KtFile
7-
import org.jetbrains.kotlin.psi2ir.PsiSourceManager
8-
9-
class Psi2Ir : Psi2IrFacade {
10-
companion object {
11-
val psiManager = PsiSourceManager()
12-
}
138

9+
class Psi2Ir(private val logger: FileLogger) : Psi2IrFacade {
1410
override fun getKtFile(irFile: IrFile): KtFile? {
15-
return psiManager.getKtFile(irFile)
11+
logger.warn("Comment extraction is not supported for Kotlin < 1.5.20")
12+
return null
1613
}
1714

1815
override fun findPsiElement(irElement: IrElement, irFile: IrFile): PsiElement? {
19-
return psiManager.findPsiElement(irElement, irFile)
16+
logger.error("Attempted comment extraction for Kotlin < 1.5.20")
17+
return null
2018
}
21-
}
19+
}
Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,19 @@
11
package com.github.codeql.utils.versions
22

3+
import com.github.codeql.FileLogger
34
import com.intellij.psi.PsiElement
45
import org.jetbrains.kotlin.ir.IrElement
56
import org.jetbrains.kotlin.ir.declarations.IrFile
67
import org.jetbrains.kotlin.psi.KtFile
7-
import org.jetbrains.kotlin.psi2ir.PsiSourceManager
8-
9-
class Psi2Ir : Psi2IrFacade {
10-
companion object {
11-
val psiManager = PsiSourceManager()
12-
}
138

9+
class Psi2Ir(private val logger: FileLogger) : Psi2IrFacade {
1410
override fun getKtFile(irFile: IrFile): KtFile? {
15-
return psiManager.getKtFile(irFile)
11+
logger.warn("Comment extraction is not supported for Kotlin < 1.5.20")
12+
return null
1613
}
1714

1815
override fun findPsiElement(irElement: IrElement, irFile: IrFile): PsiElement? {
19-
return psiManager.findPsiElement(irElement, irFile)
16+
logger.error("Attempted comment extraction for Kotlin < 1.5.20")
17+
return null
2018
}
21-
}
19+
}
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
package com.github.codeql.utils.versions
22

3+
import com.github.codeql.FileLogger
34
import com.intellij.psi.PsiElement
45
import org.jetbrains.kotlin.backend.common.psi.PsiSourceManager
56
import org.jetbrains.kotlin.backend.jvm.ir.getKtFile
67
import org.jetbrains.kotlin.ir.IrElement
78
import org.jetbrains.kotlin.ir.declarations.IrFile
89
import org.jetbrains.kotlin.psi.KtFile
910

10-
class Psi2Ir: Psi2IrFacade {
11+
class Psi2Ir(private val logger: FileLogger): Psi2IrFacade {
1112
override fun getKtFile(irFile: IrFile): KtFile? {
1213
return irFile.getKtFile()
1314
}
1415

1516
override fun findPsiElement(irElement: IrElement, irFile: IrFile): PsiElement? {
1617
return PsiSourceManager.findPsiElement(irElement, irFile)
1718
}
18-
}
19+
}
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
package com.github.codeql.utils.versions
22

3+
import com.github.codeql.FileLogger
34
import com.intellij.psi.PsiElement
45
import org.jetbrains.kotlin.backend.common.psi.PsiSourceManager
56
import org.jetbrains.kotlin.backend.jvm.ir.getKtFile
67
import org.jetbrains.kotlin.ir.IrElement
78
import org.jetbrains.kotlin.ir.declarations.IrFile
89
import org.jetbrains.kotlin.psi.KtFile
910

10-
class Psi2Ir: Psi2IrFacade {
11+
class Psi2Ir(private val logger: FileLogger): Psi2IrFacade {
1112
override fun getKtFile(irFile: IrFile): KtFile? {
1213
return irFile.getKtFile()
1314
}
1415

1516
override fun findPsiElement(irElement: IrElement, irFile: IrFile): PsiElement? {
1617
return PsiSourceManager.findPsiElement(irElement, irFile)
1718
}
18-
}
19+
}
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
package com.github.codeql.utils.versions
22

3+
import com.github.codeql.FileLogger
34
import com.intellij.psi.PsiElement
45
import org.jetbrains.kotlin.backend.common.psi.PsiSourceManager
56
import org.jetbrains.kotlin.backend.jvm.ir.getKtFile
67
import org.jetbrains.kotlin.ir.IrElement
78
import org.jetbrains.kotlin.ir.declarations.IrFile
89
import org.jetbrains.kotlin.psi.KtFile
910

10-
class Psi2Ir: Psi2IrFacade {
11+
class Psi2Ir(private val logger: FileLogger): Psi2IrFacade {
1112
override fun getKtFile(irFile: IrFile): KtFile? {
1213
return irFile.getKtFile()
1314
}
1415

1516
override fun findPsiElement(irElement: IrElement, irFile: IrFile): PsiElement? {
1617
return PsiSourceManager.findPsiElement(irElement, irFile)
1718
}
18-
}
19+
}
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
package com.github.codeql.utils.versions
22

3+
import com.github.codeql.FileLogger
34
import com.intellij.psi.PsiElement
45
import org.jetbrains.kotlin.backend.common.psi.PsiSourceManager
56
import org.jetbrains.kotlin.backend.jvm.ir.getKtFile
67
import org.jetbrains.kotlin.ir.IrElement
78
import org.jetbrains.kotlin.ir.declarations.IrFile
89
import org.jetbrains.kotlin.psi.KtFile
910

10-
class Psi2Ir: Psi2IrFacade {
11+
class Psi2Ir(private val logger: FileLogger): Psi2IrFacade {
1112
override fun getKtFile(irFile: IrFile): KtFile? {
1213
return irFile.getKtFile()
1314
}
1415

1516
override fun findPsiElement(irElement: IrElement, irFile: IrFile): PsiElement? {
1617
return PsiSourceManager.findPsiElement(irElement, irFile)
1718
}
18-
}
19+
}
Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,19 @@
11
package com.github.codeql.utils.versions
22

3+
import com.github.codeql.FileLogger
34
import com.intellij.psi.PsiElement
45
import org.jetbrains.kotlin.backend.common.psi.PsiSourceManager
56
import org.jetbrains.kotlin.backend.jvm.ir.getKtFile
67
import org.jetbrains.kotlin.ir.IrElement
78
import org.jetbrains.kotlin.ir.declarations.IrFile
89
import org.jetbrains.kotlin.psi.KtFile
910

10-
class Psi2Ir: Psi2IrFacade {
11+
class Psi2Ir(private val logger: FileLogger): Psi2IrFacade {
1112
override fun getKtFile(irFile: IrFile): KtFile? {
1213
return irFile.getKtFile()
1314
}
1415

1516
override fun findPsiElement(irElement: IrElement, irFile: IrFile): PsiElement? {
1617
return PsiSourceManager.findPsiElement(irElement, irFile)
1718
}
18-
}
19+
}

0 commit comments

Comments
 (0)