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

Skip to content

Commit 4e93134

Browse files
tamasvajkigfoo
authored andcommitted
Add 1.6.20 support
1 parent ff35088 commit 4e93134

25 files changed

Lines changed: 115 additions & 24 deletions

java/kotlin-extractor/build.gradle

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,11 @@ tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
2727
sourceSets {
2828
main {
2929
kotlin {
30-
excludes = ["utils/versions/v_1_4/*.kt", "utils/versions/v_1_6/*.kt"]
31-
// change the above line to the below for building with kotlinVersion=1.4.32:
32-
//excludes = ["utils/versions/default/*.kt", "utils/versions/v_1_6/*.kt"]
30+
// change the excludes for building with other versions:
31+
excludes = [
32+
"utils/versions/v_1_4_32/*.kt",
33+
"utils/versions/v_1_5_31/*.kt",
34+
"utils/versions/v_1_6_10/*.kt"]
3335
}
3436
}
3537
}

java/kotlin-extractor/build.py

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -12,15 +12,21 @@
1212
import sys
1313
import shlex
1414

15+
1516
def parse_args():
1617
parser = argparse.ArgumentParser()
17-
parser.add_argument('--dependencies', default='../../../resources/kotlin-dependencies', help='Folder containing the dependencies')
18-
parser.add_argument('--many', action='store_true', help='Build for all versions/kinds')
19-
parser.add_argument('--single', action='store_false', dest='many', help='Build for a single version/kind')
18+
parser.add_argument('--dependencies', default='../../../resources/kotlin-dependencies',
19+
help='Folder containing the dependencies')
20+
parser.add_argument('--many', action='store_true',
21+
help='Build for all versions/kinds')
22+
parser.add_argument('--single', action='store_false',
23+
dest='many', help='Build for a single version/kind')
2024
return parser.parse_args()
2125

26+
2227
args = parse_args()
2328

29+
2430
def is_windows():
2531
'''Whether we appear to be running on Windows'''
2632
if platform.system() == 'Windows':
@@ -29,10 +35,12 @@ def is_windows():
2935
return True
3036
return False
3137

38+
3239
kotlinc = 'kotlinc.bat' if is_windows() else 'kotlinc'
3340
javac = 'javac'
3441
kotlin_dependency_folder = args.dependencies
3542

43+
3644
def quote_for_batch(arg):
3745
if ';' in arg or '=' in arg:
3846
if '"' in arg:
@@ -41,6 +49,7 @@ def quote_for_batch(arg):
4149
else:
4250
return arg
4351

52+
4453
def run_process(cmd, capture_output=False):
4554
print("Running command: " + shlex.join(cmd))
4655
if is_windows():
@@ -156,15 +165,10 @@ def compile(jars, java_jars, dependency_folder, transform_to_embeddable, output,
156165
shutil.rmtree(tmp_dir)
157166
shutil.copytree('src', tmp_dir)
158167

159-
if version.startswith('1.4'):
160-
shutil.rmtree(tmp_dir + '/main/kotlin/utils/versions/default')
161-
shutil.rmtree(tmp_dir + '/main/kotlin/utils/versions/v_1_6')
162-
elif version.startswith('1.6'):
163-
shutil.rmtree(tmp_dir + '/main/kotlin/utils/versions/v_1_4')
164-
shutil.rmtree(tmp_dir + '/main/kotlin/utils/versions/default')
165-
else:
166-
shutil.rmtree(tmp_dir + '/main/kotlin/utils/versions/v_1_4')
167-
shutil.rmtree(tmp_dir + '/main/kotlin/utils/versions/v_1_6')
168+
for v in kotlin_plugin_versions.many_versions:
169+
if v != version:
170+
shutil.rmtree(
171+
tmp_dir + '/main/kotlin/utils/versions/v_' + v.replace('.', '_'))
168172

169173
srcs = find_sources(tmp_dir)
170174

java/kotlin-extractor/gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
kotlin.code.style=official
2-
kotlinVersion=1.5.21
2+
kotlinVersion=1.6.20
33

44
GROUP=com.github.codeql
55
VERSION_NAME=0.0.1

java/kotlin-extractor/kotlin_plugin_versions.py

Lines changed: 18 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,16 +10,28 @@ def is_windows():
1010
return True
1111
return False
1212

13-
many_versions = [ '1.4.32', '1.5.31', '1.6.10' ]
13+
many_versions = [ '1.4.32', '1.5.31', '1.6.10', '1.6.20' ]
1414

1515
def get_single_version():
1616
# TODO: `shell=True` is a workaround to get CI working on Windows. It breaks the build on Linux.
1717
versionOutput = subprocess.run(['kotlinc', '-version'], capture_output=True, text=True, shell=is_windows())
18-
m = re.match(r'.* kotlinc-jvm ([0-9]+\.[0-9]+\.)[0-9]+ .*', versionOutput.stderr)
18+
m = re.match(r'.* kotlinc-jvm ([0-9]+)\.([0-9]+\.)([0-9]+) .*', versionOutput.stderr)
1919
if m is None:
2020
raise Exception('Cannot detect version of kotlinc (got ' + str(versionOutput) + ')')
21-
prefix = m.group(1)
22-
for version in many_versions:
23-
if version.startswith(prefix):
21+
major = m.group(1)
22+
minor = m.group(2)
23+
patch = m.group(3)
24+
current_version = f'{major}.{minor}.{patch}'
25+
matching_minor_versions = [ version for version in many_versions if version.startswith(f'{major}.{minor}') ]
26+
if len(matching_minor_versions) == 0:
27+
raise Exception(f'Cannot find a matching minor version for kotlinc version {current_version} (got {versionOutput}; know about {str(many_versions)})')
28+
29+
matching_minor_versions.sort()
30+
31+
for version in matching_minor_versions:
32+
if current_version >= version:
2433
return version
25-
raise Exception('No suitable kotlinc version found for ' + prefix + ' (got ' + str(versionOutput) + '; know about ' + str(many_versions) + ')')
34+
35+
return matching_minor_versions[-1]
36+
37+
raise Exception(f'No suitable kotlinc version found for {current_version} (got {versionOutput}; know about {str(many_versions)})')

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

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

33
import com.github.codeql.utils.*
4+
import com.github.codeql.utils.versions.isRawType
45
import com.semmle.extractor.java.OdasaOutput
56
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
67
import org.jetbrains.kotlin.backend.common.lower.parentsWithSelf
7-
import org.jetbrains.kotlin.backend.jvm.codegen.isRawType
88
import org.jetbrains.kotlin.builtins.jvm.JavaToKotlinClassMap
99
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities
1010
import org.jetbrains.kotlin.ir.declarations.*
@@ -601,7 +601,6 @@ open class KotlinUsesExtractor(
601601
s.classifier.owner is IrClass -> {
602602
val classifier: IrClassifierSymbol = s.classifier
603603
val cls: IrClass = classifier.owner as IrClass
604-
605604
val args = if (s.isRawType()) null else s.arguments
606605

607606
return useSimpleTypeClass(cls, args, s.hasQuestionMark)

java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_4/Descriptors.kt renamed to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_4_32/Descriptors.kt

File renamed without changes.

java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_4/FileEntry.kt renamed to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_4_32/FileEntry.kt

File renamed without changes.

java/kotlin-extractor/src/main/kotlin/utils/versions/default/Functions.kt renamed to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_4_32/Functions.kt

File renamed without changes.

java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_4/Psi2Ir.kt renamed to java/kotlin-extractor/src/main/kotlin/utils/versions/v_1_4_32/Psi2Ir.kt

File renamed without changes.
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()

0 commit comments

Comments
 (0)