Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit c4ad2f3

Browse files
tamasvajkigfoo
authored andcommitted
Add kotlin 1.4 support
1 parent 3939a2a commit c4ad2f3

13 files changed

Lines changed: 90 additions & 12 deletions

File tree

java/kotlin-extractor/build.gradle

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,15 @@ repositories {
1818
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
1919
kotlinOptions {
2020
jvmTarget = "1.8"
21+
freeCompilerArgs += "-Xopt-in=kotlin.RequiresOptIn"
22+
}
23+
}
24+
25+
sourceSets {
26+
main {
27+
kotlin {
28+
excludes = ["utils/versions/v_1_4/*.kt"]
29+
}
2130
}
2231
}
2332

java/kotlin-extractor/build.py

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -119,14 +119,20 @@ def transform_to_embeddable(srcs):
119119
f.write(content)
120120

121121

122-
def compile(jars, java_jars, dependency_folder, transform_to_embeddable, output, tmp_dir):
122+
def compile(jars, java_jars, dependency_folder, transform_to_embeddable, output, tmp_dir, version):
123123
classpath = patterns_to_classpath(dependency_folder, jars)
124124
java_classpath = patterns_to_classpath(dependency_folder, java_jars)
125125

126126
try:
127127
if os.path.exists(tmp_dir):
128128
shutil.rmtree(tmp_dir)
129129
shutil.copytree('src', tmp_dir)
130+
131+
if version.startswith('1.4'):
132+
shutil.rmtree(tmp_dir + '/main/kotlin/utils/versions/default')
133+
else:
134+
shutil.rmtree(tmp_dir + '/main/kotlin/utils/versions/v_1_4')
135+
130136
srcs = find_sources(tmp_dir)
131137

132138
transform_to_embeddable(srcs)
@@ -143,7 +149,8 @@ def compile_embeddable(version):
143149
kotlin_dependency_folder,
144150
transform_to_embeddable,
145151
'codeql-extractor-kotlin-embeddable-%s.jar' % (version),
146-
'build/temp_src')
152+
'build/temp_src',
153+
version)
147154

148155

149156
def compile_standalone(version):
@@ -152,7 +159,8 @@ def compile_standalone(version):
152159
kotlin_dependency_folder,
153160
lambda srcs: None,
154161
'codeql-extractor-kotlin-standalone-%s.jar' % (version),
155-
'build/temp_src')
162+
'build/temp_src',
163+
version)
156164

157165

158166
for version in kotlin_plugin_versions.versions:

java/kotlin-extractor/generate_dbscheme.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,7 @@ def genTable(kt, relname, columns, enum = None, kind = None, num = None, typ = N
171171
genTable(kt, relname, columns, enum, kind, num, typ)
172172

173173
for typ in sorted(supertypes):
174-
kt.write('sealed interface Db' + upperFirst(typ))
174+
kt.write('interface Db' + upperFirst(typ))
175175
# Sorting makes the output deterministic.
176176
names = sorted(supertypes[typ])
177177
if names:
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
versions = ['1.5.31', '1.6.0-RC2']
1+
versions = [ '1.4.32', '1.5.31', '1.6.0-RC2' ]

java/kotlin-extractor/src/main/kotlin/KotlinExtractorExtension.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,7 @@ class KotlinSourceFileExtractor(
242242
CommentExtractor(this).extract()
243243
}
244244

245+
@OptIn(kotlin.ExperimentalStdlibApi::class)
245246
fun extractFileClass(f: IrFile): Label<out DbClass> {
246247
val fileName = f.fileEntry.name
247248
val pkg = f.fqName.asString()

java/kotlin-extractor/src/main/kotlin/TrapWriter.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package com.github.codeql
22

3+
import com.github.codeql.utils.versions.FileEntry
34
import java.io.BufferedWriter
45
import java.io.File
56
import org.jetbrains.kotlin.ir.IrElement
6-
import org.jetbrains.kotlin.ir.IrFileEntry
77
import org.jetbrains.kotlin.ir.declarations.path
88
import org.jetbrains.kotlin.ir.declarations.IrFile
99
import org.jetbrains.kotlin.ir.declarations.IrVariable
@@ -82,7 +82,7 @@ open class TrapWriter (val lm: TrapLabelManager, val bw: BufferedWriter) {
8282
* Gets a FileTrapWriter like this one (using the same label manager, writer etc), but with the given
8383
* default file used in getLocation etc.
8484
*/
85-
fun withTargetFile(filePath: String, fileEntry: IrFileEntry?, populateFileTables: Boolean = true) =
85+
fun withTargetFile(filePath: String, fileEntry: FileEntry?, populateFileTables: Boolean = true) =
8686
FileTrapWriter(lm, bw, filePath, fileEntry, populateFileTables)
8787
}
8888

@@ -104,7 +104,7 @@ open class FileTrapWriter (
104104
lm: TrapLabelManager,
105105
bw: BufferedWriter,
106106
val filePath: String,
107-
val sourceFileEntry: IrFileEntry?,
107+
val sourceFileEntry: FileEntry?,
108108
populateFileTables: Boolean = true
109109
): TrapWriter (lm, bw) {
110110
val populateFile = PopulateFile(this)

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,9 @@ package com.github.codeql.comments
22

33
import com.github.codeql.*
44
import com.github.codeql.utils.IrVisitorLookup
5+
import com.github.codeql.utils.versions.Psi2Ir
56
import com.intellij.psi.PsiComment
67
import com.intellij.psi.PsiElement
7-
import org.jetbrains.kotlin.backend.jvm.ir.getKtFile
88
import org.jetbrains.kotlin.ir.IrElement
99
import org.jetbrains.kotlin.ir.declarations.path
1010
import org.jetbrains.kotlin.kdoc.psi.api.KDoc
@@ -17,7 +17,7 @@ class CommentExtractor(private val fileExtractor: KotlinSourceFileExtractor) {
1717
private val file = fileExtractor.file
1818
private val tw = fileExtractor.tw
1919
private val logger = fileExtractor.logger
20-
private val ktFile = file.getKtFile()
20+
private val ktFile = Psi2Ir().getKtFile(file)
2121

2222
init {
2323
if (ktFile == null) {

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package com.github.codeql.utils
22

3+
import com.github.codeql.utils.versions.Psi2Ir
34
import com.intellij.psi.PsiElement
4-
import org.jetbrains.kotlin.backend.common.psi.PsiSourceManager
55
import org.jetbrains.kotlin.ir.IrElement
66
import org.jetbrains.kotlin.ir.declarations.IrFile
77
import org.jetbrains.kotlin.ir.visitors.IrElementVisitor
@@ -19,7 +19,7 @@ class IrVisitorLookup(private val psi: PsiElement, private val file: IrFile) :
1919
}
2020

2121
if (location.contains(elementLocation)) {
22-
val psiElement = PsiSourceManager.findPsiElement(element, file)
22+
val psiElement = Psi2Ir().findPsiElement(element, file)
2323
if (psiElement == psi) {
2424
// There can be multiple IrElements that match the same PSI element.
2525
data.add(element)
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package com.github.codeql.utils.versions
2+
3+
import com.intellij.psi.PsiElement
4+
import org.jetbrains.kotlin.ir.IrElement
5+
import org.jetbrains.kotlin.ir.declarations.IrFile
6+
import org.jetbrains.kotlin.psi.KtFile
7+
8+
interface Psi2IrFacade {
9+
fun getKtFile(irFile: IrFile): KtFile?
10+
fun findPsiElement(irElement: IrElement, irFile: IrFile): PsiElement?
11+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
package com.github.codeql.utils.versions
2+
3+
import org.jetbrains.kotlin.ir.IrFileEntry
4+
5+
typealias FileEntry = IrFileEntry

0 commit comments

Comments
 (0)