Skip to content

Commit 03ad04b

Browse files
authored
Merge pull request github#14118 from igfoo/igfoo/kotlin_master
Kotlin: Make it possible to build with master
2 parents e2602fb + 181594b commit 03ad04b

File tree

15 files changed

+49
-23
lines changed

15 files changed

+49
-23
lines changed

java/kotlin-extractor/build.py

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,7 @@ def compile_to_dir(build_dir, srcs, classpath, java_classpath, output):
9292
kotlin_arg_file = build_dir + '/kotlin.args'
9393
kotlin_args = ['-Werror',
9494
'-opt-in=kotlin.RequiresOptIn',
95+
'-opt-in=org.jetbrains.kotlin.ir.symbols.IrSymbolInternals',
9596
'-d', output,
9697
'-module-name', 'codeql-kotlin-extractor',
9798
'-no-reflect', '-no-stdlib',
@@ -168,7 +169,7 @@ def compile(jars, java_jars, dependency_folder, transform_to_embeddable, output,
168169
shutil.rmtree(tmp_src_dir)
169170
shutil.copytree('src', tmp_src_dir)
170171

171-
include_version_folder = tmp_src_dir + '/main/kotlin/utils/versions/to_include'
172+
include_version_folder = tmp_src_dir + '/main/kotlin/utils/this_version'
172173
os.makedirs(include_version_folder)
173174

174175
resource_dir = tmp_src_dir + '/main/resources/com/github/codeql'
@@ -192,11 +193,7 @@ def compile(jars, java_jars, dependency_folder, transform_to_embeddable, output,
192193
shutil.copytree(d, include_version_folder, dirs_exist_ok=True)
193194

194195
# remove all version folders:
195-
for version in kotlin_plugin_versions.many_versions:
196-
d = tmp_src_dir + '/main/kotlin/utils/versions/v_' + \
197-
version.replace('.', '_')
198-
if os.path.exists(d):
199-
shutil.rmtree(d)
196+
shutil.rmtree(tmp_src_dir + '/main/kotlin/utils/versions')
200197

201198
srcs = find_sources(tmp_src_dir)
202199

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

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ open class KotlinFileExtractor(
107107
fun extractFileContents(file: IrFile, id: Label<DbFile>) {
108108
with("file", file) {
109109
val locId = tw.getWholeFileLocation()
110-
val pkg = file.fqName.asString()
110+
val pkg = file.packageFqName.asString()
111111
val pkgId = extractPackage(pkg)
112112
tw.writeHasLocation(id, locId)
113113
tw.writeCupackage(id, pkgId)
@@ -1901,8 +1901,9 @@ open class KotlinFileExtractor(
19011901
verboseln("No match as didn't find target package")
19021902
return false
19031903
}
1904-
if (targetPkg.fqName.asString() != pName) {
1905-
verboseln("No match as package name is ${targetPkg.fqName.asString()}")
1904+
val targetName = targetPkg.packageFqName.asString()
1905+
if (targetName != pName) {
1906+
verboseln("No match as package name is $targetName")
19061907
return false
19071908
}
19081909
verboseln("Match")
@@ -2556,8 +2557,9 @@ open class KotlinFileExtractor(
25562557
verboseln("No match as didn't find target package")
25572558
return false
25582559
}
2559-
if (targetPkg.fqName.asString() != pkgName) {
2560-
verboseln("No match as package name is ${targetPkg.fqName.asString()} not $pkgName")
2560+
val targetName = targetPkg.packageFqName.asString()
2561+
if (targetName != pkgName) {
2562+
verboseln("No match as package name is $targetName not $pkgName")
25612563
return false
25622564
}
25632565
verboseln("Match")

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

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import com.github.codeql.utils.versions.codeQlWithHasQuestionMark
55
import com.github.codeql.utils.versions.getFileClassFqName
66
import com.github.codeql.utils.versions.getKotlinType
77
import com.github.codeql.utils.versions.isRawType
8+
import com.github.codeql.utils.versions.packageFqName
89
import com.semmle.extractor.java.OdasaOutput
910
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
1011
import org.jetbrains.kotlin.backend.common.ir.*
@@ -83,7 +84,7 @@ open class KotlinUsesExtractor(
8384
)
8485

8586
fun extractFileClass(f: IrFile): Label<out DbClassorinterface> {
86-
val pkg = f.fqName.asString()
87+
val pkg = f.packageFqName.asString()
8788
val jvmName = getFileClassName(f)
8889
val id = extractFileClass(pkg, jvmName)
8990
if (tw.lm.fileClassLocationsExtracted.add(f)) {
@@ -848,7 +849,7 @@ open class KotlinUsesExtractor(
848849
when(dp) {
849850
is IrFile ->
850851
if(canBeTopLevel) {
851-
usePackage(dp.fqName.asString())
852+
usePackage(dp.packageFqName.asString())
852853
} else {
853854
extractFileClass(dp)
854855
}

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -276,8 +276,8 @@ class MetaAnnotationSupport(private val logger: FileLogger, private val pluginCo
276276
run { logger.warnElement("Expected property's parent class to have a receiver parameter", parentClass); return }
277277
val newParam = copyParameterToFunction(thisReceiever, this)
278278
dispatchReceiverParameter = newParam
279-
body = factory.createBlockBody(
280-
UNDEFINED_OFFSET, UNDEFINED_OFFSET, listOf(
279+
body = factory.createBlockBody(UNDEFINED_OFFSET, UNDEFINED_OFFSET).apply({
280+
this.statements.add(
281281
IrReturnImpl(
282282
UNDEFINED_OFFSET, UNDEFINED_OFFSET,
283283
pluginContext.irBuiltIns.nothingType,
@@ -294,7 +294,7 @@ class MetaAnnotationSupport(private val logger: FileLogger, private val pluginCo
294294
)
295295
)
296296
)
297-
)
297+
})
298298
}
299299
}
300300

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

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,12 @@ import org.jetbrains.kotlin.ir.types.IrSimpleType
88
import org.jetbrains.kotlin.ir.types.classOrNull
99
import org.jetbrains.kotlin.name.FqName
1010
import com.github.codeql.utils.*
11+
import com.github.codeql.utils.versions.packageFqName
1112

1213
class PrimitiveTypeMapping(val logger: Logger, val pluginContext: IrPluginContext) {
1314
fun getPrimitiveInfo(s: IrSimpleType) =
1415
s.classOrNull?.let {
15-
if ((it.owner.parent as? IrPackageFragment)?.fqName == StandardNames.BUILT_INS_PACKAGE_FQ_NAME)
16+
if ((it.owner.parent as? IrPackageFragment)?.packageFqName == StandardNames.BUILT_INS_PACKAGE_FQ_NAME)
1617
mapping[it.owner.name]
1718
else
1819
null

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ package com.github.codeql.comments
33
import com.github.codeql.*
44
import com.github.codeql.utils.IrVisitorLookup
55
import com.github.codeql.utils.isLocalFunction
6+
import com.github.codeql.utils.Psi2IrFacade
67
import com.github.codeql.utils.versions.getPsi2Ir
7-
import com.github.codeql.utils.versions.Psi2IrFacade
88
import com.intellij.psi.PsiComment
99
import com.intellij.psi.PsiElement
1010
import org.jetbrains.kotlin.config.KotlinCompilerVersion

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

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

33
import com.github.codeql.utils.getJvmName
44
import com.github.codeql.utils.versions.getFileClassFqName
5+
import com.github.codeql.utils.versions.packageFqName
56
import com.intellij.openapi.vfs.StandardFileSystems
67
import org.jetbrains.kotlin.load.java.sources.JavaSourceElement
78
import org.jetbrains.kotlin.load.java.structure.impl.classFiles.BinaryJavaClass
@@ -33,7 +34,7 @@ fun getFileClassName(f: IrFile) =
3334
fun getIrElementBinaryName(that: IrElement): String {
3435
if (that is IrFile) {
3536
val shortName = getFileClassName(that)
36-
val pkg = that.fqName.asString()
37+
val pkg = that.packageFqName.asString()
3738
return if (pkg.isEmpty()) shortName else "$pkg.$shortName"
3839
}
3940

@@ -59,7 +60,7 @@ fun getIrElementBinaryName(that: IrElement): String {
5960
.forEach {
6061
when (it) {
6162
is IrClass -> internalName.insert(0, getName(it) + "$")
62-
is IrPackageFragment -> it.fqName.asString().takeIf { fqName -> fqName.isNotEmpty() }?.let { fqName -> internalName.insert(0, "$fqName.") }
63+
is IrPackageFragment -> it.packageFqName.asString().takeIf { fqName -> fqName.isNotEmpty() }?.let { fqName -> internalName.insert(0, "$fqName.") }
6364
}
6465
}
6566
return internalName.toString()

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.github.codeql.utils
22

3-
import com.github.codeql.utils.versions.Psi2IrFacade
3+
import com.github.codeql.utils.Psi2IrFacade
44
import com.intellij.psi.PsiElement
55
import org.jetbrains.kotlin.ir.IrElement
66
import org.jetbrains.kotlin.ir.declarations.IrDeclaration
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.github.codeql.utils.versions
1+
package com.github.codeql.utils
22

33
import com.intellij.psi.PsiElement
44
import org.jetbrains.kotlin.ir.IrElement
@@ -8,4 +8,4 @@ import org.jetbrains.kotlin.psi.KtFile
88
interface Psi2IrFacade {
99
fun getKtFile(irFile: IrFile): KtFile?
1010
fun findPsiElement(irElement: IrElement, irFile: IrFile): PsiElement?
11-
}
11+
}
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package org.jetbrains.kotlin.ir.symbols
2+
3+
@RequiresOptIn(level = RequiresOptIn.Level.WARNING)
4+
annotation class IrSymbolInternals

0 commit comments

Comments
 (0)