Skip to content

Commit 078733c

Browse files
authored
Merge pull request github#9263 from tamasvajk/kotlin-versions
Kotlin: Add support for versions 1.5.0, 1.5.10, and 1.5.21
2 parents 728ccaf + ccc6d25 commit 078733c

File tree

17 files changed

+179
-2
lines changed

17 files changed

+179
-2
lines changed

java/kotlin-extractor/build.gradle

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,13 @@ sourceSets {
3030
// change the excludes for building with other versions:
3131
excludes = [
3232
"utils/versions/v_1_4_32/*.kt",
33+
"utils/versions/v_1_5_0/*.kt",
34+
"utils/versions/v_1_5_10/*.kt",
35+
"utils/versions/v_1_5_21/*.kt",
3336
"utils/versions/v_1_5_31/*.kt",
34-
"utils/versions/v_1_6_10/*.kt"]
37+
"utils/versions/v_1_6_10/*.kt",
38+
// "utils/versions/v_1_6_20/*.kt",
39+
]
3540
}
3641
}
3742
}

java/kotlin-extractor/kotlin_plugin_versions.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ def version_string_to_tuple(version):
1919
m = re.match(r'([0-9]+)\.([0-9]+)\.([0-9]+)', version)
2020
return tuple([int(m.group(i)) for i in range(1, 4)])
2121

22-
many_versions = [ '1.4.32', '1.5.31', '1.6.10', '1.6.20' ]
22+
many_versions = [ '1.4.32', '1.5.0', '1.5.10', '1.5.21', '1.5.31', '1.6.10', '1.6.20' ]
2323

2424
many_versions_tuples = [version_string_to_tuple(v) for v in many_versions]
2525

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.github.codeql.utils.versions
2+
3+
import com.github.codeql.KotlinUsesExtractor
4+
import com.github.codeql.Severity
5+
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
6+
import org.jetbrains.kotlin.ir.util.DeclarationStubGenerator
7+
import org.jetbrains.kotlin.ir.util.SymbolTable
8+
9+
@OptIn(ObsoleteDescriptorBasedAPI::class)
10+
fun <TIrStub> KotlinUsesExtractor.getIrStubFromDescriptor(generateStub: (DeclarationStubGenerator) -> TIrStub) : TIrStub? =
11+
(pluginContext.symbolTable as? SymbolTable) ?.let {
12+
val stubGenerator = DeclarationStubGenerator(pluginContext.moduleDescriptor, it, pluginContext.languageVersionSettings)
13+
generateStub(stubGenerator)
14+
} ?: run {
15+
logger.error("Plugin context has no symbol table, couldn't get IR stub")
16+
null
17+
}
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.SourceManager
4+
5+
typealias FileEntry = SourceManager.FileEntry
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.github.codeql.utils.versions
2+
3+
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
4+
import org.jetbrains.kotlin.ir.declarations.IrClass
5+
6+
fun functionN(pluginContext: IrPluginContext): (Int) -> IrClass {
7+
return { i -> pluginContext.irBuiltIns.functionFactory.functionN(i) }
8+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
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+
import org.jetbrains.kotlin.psi2ir.PsiSourceManager
8+
9+
class Psi2Ir : Psi2IrFacade {
10+
companion object {
11+
val psiManager = PsiSourceManager()
12+
}
13+
14+
override fun getKtFile(irFile: IrFile): KtFile? {
15+
return psiManager.getKtFile(irFile)
16+
}
17+
18+
override fun findPsiElement(irElement: IrElement, irFile: IrFile): PsiElement? {
19+
return psiManager.findPsiElement(irElement, irFile)
20+
}
21+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.github.codeql.utils.versions
2+
3+
import org.jetbrains.kotlin.backend.jvm.codegen.isRawType
4+
import org.jetbrains.kotlin.ir.types.IrSimpleType
5+
6+
7+
fun IrSimpleType.isRawType() = this.isRawType()
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package com.github.codeql.utils.versions
2+
3+
import com.github.codeql.KotlinUsesExtractor
4+
import com.github.codeql.Severity
5+
import org.jetbrains.kotlin.ir.ObsoleteDescriptorBasedAPI
6+
import org.jetbrains.kotlin.ir.util.DeclarationStubGenerator
7+
import org.jetbrains.kotlin.ir.util.SymbolTable
8+
9+
@OptIn(ObsoleteDescriptorBasedAPI::class)
10+
fun <TIrStub> KotlinUsesExtractor.getIrStubFromDescriptor(generateStub: (DeclarationStubGenerator) -> TIrStub) : TIrStub? =
11+
(pluginContext.symbolTable as? SymbolTable) ?.let {
12+
val stubGenerator = DeclarationStubGenerator(pluginContext.moduleDescriptor, it, pluginContext.languageVersionSettings)
13+
generateStub(stubGenerator)
14+
} ?: run {
15+
logger.error("Plugin context has no symbol table, couldn't get IR stub")
16+
null
17+
}
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.SourceManager
4+
5+
typealias FileEntry = SourceManager.FileEntry
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package com.github.codeql.utils.versions
2+
3+
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
4+
import org.jetbrains.kotlin.ir.declarations.IrClass
5+
6+
fun functionN(pluginContext: IrPluginContext): (Int) -> IrClass {
7+
return { i -> pluginContext.irBuiltIns.functionFactory.functionN(i) }
8+
}

0 commit comments

Comments
 (0)