Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/codeql/reusables/supported-versions-compilers.rst
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
Java,"Java 7 to 22 [5]_","javac (OpenJDK and Oracle JDK),

Eclipse compiler for Java (ECJ) [6]_",``.java``
Kotlin [7]_,"Kotlin 1.5.0 to 1.9.2\ *x*","kotlinc",``.kt``
Kotlin [7]_,"Kotlin 1.5.0 to 2.0.0\ *x*","kotlinc",``.kt``
JavaScript,ECMAScript 2022 or lower,Not applicable,"``.js``, ``.jsx``, ``.mjs``, ``.es``, ``.es6``, ``.htm``, ``.html``, ``.xhtm``, ``.xhtml``, ``.vue``, ``.hbs``, ``.ejs``, ``.njk``, ``.json``, ``.yaml``, ``.yml``, ``.raml``, ``.xml`` [8]_"
Python [9]_,"2.7, 3.5, 3.6, 3.7, 3.8, 3.9, 3.10, 3.11, 3.12",Not applicable,``.py``
Ruby [10]_,"up to 3.3",Not applicable,"``.rb``, ``.erb``, ``.gemspec``, ``Gemfile``"
Expand Down
2 changes: 1 addition & 1 deletion java/kotlin-extractor/kotlin_plugin_versions.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ def version_string_to_version(version):
return Version(int(m.group(1)), int(m.group(2)), int(m.group(3)), m.group(4))

# Version number used by CI.
ci_version = '1.9.0'
ci_version = '2.0.0'

many_versions = [ '1.5.0', '1.5.10', '1.5.20', '1.5.30', '1.6.0', '1.6.20', '1.7.0', '1.7.20', '1.8.0', '1.9.0-Beta', '1.9.20-Beta', '2.0.0-RC1' ]

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -163,25 +163,25 @@ test.kt:
# 23| 2: [IntegerLiteral] 2
# 23| 3: [IntegerLiteral] 3
# 17| 2: [Annotation] Ann1
# 0| 1: [Annotation] Ann2
# 0| 1: [StringLiteral] "Hello"
# 0| 2: [TypeLiteral] String.class
# 0| 0: [TypeAccess] String
# 0| 3: [ArrayInit] {...}
# 0| 1: [IntegerLiteral] 1
# 0| 2: [IntegerLiteral] 2
# 0| 3: [IntegerLiteral] 3
# 0| 4: [ArrayInit] {...}
# 0| 1: [Annotation] Ann3
# 0| 1: [IntegerLiteral] 1
# 0| 2: [Annotation] Ann3
# 0| 1: [IntegerLiteral] 2
# 0| 5: [ArrayInit] {...}
# 0| 1: [TypeLiteral] String.class
# 0| 0: [TypeAccess] String
# 0| 2: [TypeLiteral] int.class
# 0| 0: [TypeAccess] int
# 17| 2: [IntegerLiteral] 1
# 17| 1: [IntegerLiteral] 1
# 17| 2: [Annotation] Ann2
# 17| 1: [StringLiteral] "Hello"
# 17| 2: [TypeLiteral] String.class
# 17| 0: [TypeAccess] String
# 17| 3: [ArrayInit] {...}
# 17| 1: [IntegerLiteral] 1
# 17| 2: [IntegerLiteral] 2
# 17| 3: [IntegerLiteral] 3
# 17| 4: [ArrayInit] {...}
# 17| 1: [Annotation] Ann3
# 17| 1: [IntegerLiteral] 1
# 17| 2: [Annotation] Ann3
# 17| 1: [IntegerLiteral] 2
# 17| 5: [ArrayInit] {...}
# 17| 1: [TypeLiteral] String.class
# 17| 0: [TypeAccess] String
# 17| 2: [TypeLiteral] int.class
# 17| 0: [TypeAccess] int
# 17| 3: [VarAccess] DayOfWeek.MONDAY
# 17| -1: [TypeAccess] DayOfWeek
# 18| 3: [Annotation] GenericAnnotation
Expand All @@ -193,17 +193,17 @@ test.kt:
# 18| 2: [TypeLiteral] String.class
# 18| 0: [TypeAccess] String
# 24| 4: [Annotation] AnnWithDefaults
# 0| 1: [IntegerLiteral] 1
# 0| 2: [StringLiteral] "hello"
# 0| 3: [VarAccess] DayOfWeek.TUESDAY
# 0| -1: [TypeAccess] DayOfWeek
# 0| 4: [ArrayInit] {...}
# 0| 1: [Annotation] Ann3
# 0| 1: [IntegerLiteral] 1
# 25| 1: [Constructor] Annotated
# 15| 1: [IntegerLiteral] 1
# 15| 2: [StringLiteral] "hello"
# 15| 3: [VarAccess] DayOfWeek.TUESDAY
# 15| -1: [TypeAccess] DayOfWeek
# 15| 4: [ArrayInit] {...}
# 15| 1: [Annotation] Ann3
# 15| 1: [IntegerLiteral] 1
# 17| 1: [Constructor] Annotated
# 17| 5: [BlockStmt] { ... }
# 17| 0: [SuperConstructorInvocationStmt] super(...)
# 25| 1: [BlockStmt] { ... }
# 17| 1: [BlockStmt] { ... }
# 27| 9: [Class] AnnotatedUsedByKotlin
#-----| -3: (Annotations)
# 0| 1: [Annotation] Container
Expand All @@ -228,25 +228,25 @@ test.kt:
# 33| 2: [IntegerLiteral] 2
# 33| 3: [IntegerLiteral] 3
# 27| 2: [Annotation] Ann1
# 0| 1: [Annotation] Ann2
# 0| 1: [StringLiteral] "Hello"
# 0| 2: [TypeLiteral] String.class
# 0| 0: [TypeAccess] String
# 0| 3: [ArrayInit] {...}
# 0| 1: [IntegerLiteral] 1
# 0| 2: [IntegerLiteral] 2
# 0| 3: [IntegerLiteral] 3
# 0| 4: [ArrayInit] {...}
# 0| 1: [Annotation] Ann3
# 0| 1: [IntegerLiteral] 1
# 0| 2: [Annotation] Ann3
# 0| 1: [IntegerLiteral] 2
# 0| 5: [ArrayInit] {...}
# 0| 1: [TypeLiteral] String.class
# 0| 0: [TypeAccess] String
# 0| 2: [TypeLiteral] int.class
# 0| 0: [TypeAccess] int
# 27| 2: [IntegerLiteral] 1
# 27| 1: [IntegerLiteral] 1
# 27| 2: [Annotation] Ann2
# 27| 1: [StringLiteral] "Hello"
# 27| 2: [TypeLiteral] String.class
# 27| 0: [TypeAccess] String
# 27| 3: [ArrayInit] {...}
# 27| 1: [IntegerLiteral] 1
# 27| 2: [IntegerLiteral] 2
# 27| 3: [IntegerLiteral] 3
# 27| 4: [ArrayInit] {...}
# 27| 1: [Annotation] Ann3
# 27| 1: [IntegerLiteral] 1
# 27| 2: [Annotation] Ann3
# 27| 1: [IntegerLiteral] 2
# 27| 5: [ArrayInit] {...}
# 27| 1: [TypeLiteral] String.class
# 27| 0: [TypeAccess] String
# 27| 2: [TypeLiteral] int.class
# 27| 0: [TypeAccess] int
# 27| 3: [VarAccess] DayOfWeek.MONDAY
# 27| -1: [TypeAccess] DayOfWeek
# 28| 3: [Annotation] GenericAnnotation
Expand All @@ -258,44 +258,48 @@ test.kt:
# 28| 2: [TypeLiteral] String.class
# 28| 0: [TypeAccess] String
# 34| 4: [Annotation] AnnWithDefaults
# 0| 1: [IntegerLiteral] 1
# 0| 2: [StringLiteral] "hello"
# 0| 3: [VarAccess] DayOfWeek.TUESDAY
# 0| -1: [TypeAccess] DayOfWeek
# 0| 4: [ArrayInit] {...}
# 0| 1: [Annotation] Ann3
# 0| 1: [IntegerLiteral] 1
# 35| 1: [Constructor] AnnotatedUsedByKotlin
# 15| 1: [IntegerLiteral] 1
# 15| 2: [StringLiteral] "hello"
# 15| 3: [VarAccess] DayOfWeek.TUESDAY
# 15| -1: [TypeAccess] DayOfWeek
# 15| 4: [ArrayInit] {...}
# 15| 1: [Annotation] Ann3
# 15| 1: [IntegerLiteral] 1
# 27| 1: [Constructor] AnnotatedUsedByKotlin
# 27| 5: [BlockStmt] { ... }
# 27| 0: [SuperConstructorInvocationStmt] super(...)
# 35| 1: [BlockStmt] { ... }
# 27| 1: [BlockStmt] { ... }
# 37| 10: [Class] HasJavaDeprecatedAnnotationUsedByJava
#-----| -3: (Annotations)
# 37| 1: [Annotation] Deprecated
# 38| 1: [Constructor] HasJavaDeprecatedAnnotationUsedByJava
# 0| 1: [StringLiteral] ""
# 0| 2: [BooleanLiteral] false
# 37| 1: [Constructor] HasJavaDeprecatedAnnotationUsedByJava
# 37| 5: [BlockStmt] { ... }
# 37| 0: [SuperConstructorInvocationStmt] super(...)
# 38| 1: [BlockStmt] { ... }
# 37| 1: [BlockStmt] { ... }
# 40| 11: [Class] HasKotlinDeprecatedAnnotationUsedByJava
#-----| -3: (Annotations)
# 40| 1: [Annotation] Deprecated
# 40| 1: [StringLiteral] "Kotlin deprecation message 1"
# 41| 1: [Constructor] HasKotlinDeprecatedAnnotationUsedByJava
# 40| 1: [Constructor] HasKotlinDeprecatedAnnotationUsedByJava
# 40| 5: [BlockStmt] { ... }
# 40| 0: [SuperConstructorInvocationStmt] super(...)
# 41| 1: [BlockStmt] { ... }
# 40| 1: [BlockStmt] { ... }
# 43| 12: [Class] HasJavaDeprecatedAnnotationUsedByKotlin
#-----| -3: (Annotations)
# 43| 1: [Annotation] Deprecated
# 44| 1: [Constructor] HasJavaDeprecatedAnnotationUsedByKotlin
# 0| 1: [StringLiteral] ""
# 0| 2: [BooleanLiteral] false
# 43| 1: [Constructor] HasJavaDeprecatedAnnotationUsedByKotlin
# 43| 5: [BlockStmt] { ... }
# 43| 0: [SuperConstructorInvocationStmt] super(...)
# 44| 1: [BlockStmt] { ... }
# 43| 1: [BlockStmt] { ... }
# 46| 13: [Class] HasKotlinDeprecatedAnnotationUsedByKotlin
#-----| -3: (Annotations)
# 46| 1: [Annotation] Deprecated
# 46| 1: [StringLiteral] "Kotlin deprecation message 2"
# 47| 1: [Constructor] HasKotlinDeprecatedAnnotationUsedByKotlin
# 46| 1: [Constructor] HasKotlinDeprecatedAnnotationUsedByKotlin
# 46| 5: [BlockStmt] { ... }
# 46| 0: [SuperConstructorInvocationStmt] super(...)
# 47| 1: [BlockStmt] { ... }
# 46| 1: [BlockStmt] { ... }
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@

os.mkdir('build')
runSuccessfully(["javac"] + glob.glob("*.java") + ["-d", "build"])
run_codeql_database_create(["javac " + " ".join(glob.glob("*.java")) + " -d build", "kotlinc user.kt -cp build"], lang="java")
run_codeql_database_create(["javac " + " ".join(glob.glob("*.java")) + " -d build", "kotlinc -language-version 1.9 user.kt -cp build"], lang="java")
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
| user.kt:3:15:3:22 | getF(...) | lib/lib/TestKt.class:0:0:0:0 | getF |
| user.kt:3:14:3:22 | getF(...) | lib/lib/TestKt.class:0:0:0:0 | getF |
| user.kt:3:26:3:28 | getF(...) | lib/lib/TestKt.class:0:0:0:0 | getF |
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from create_database_utils import *

os.mkdir('lib')
runSuccessfully([get_cmd("kotlinc"), "test.kt", "-d", "lib"])
run_codeql_database_create(["kotlinc user.kt -cp lib"], lang="java")
runSuccessfully([get_cmd("kotlinc"), "-language-version", "1.9", "test.kt", "-d", "lib"])
run_codeql_database_create(["kotlinc -language-version 1.9 user.kt -cp lib"], lang="java")
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
from create_database_utils import *

run_codeql_database_create(["kotlinc -J-Xmx2G SomeClass.kt"], lang="java")
run_codeql_database_create(["kotlinc -J-Xmx2G -language-version 1.9 SomeClass.kt"], lang="java")
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
from create_database_utils import *

runSuccessfully([get_cmd("kotlinc"), 'A.kt'])
run_codeql_database_create(['kotlinc -cp . B.kt C.kt'], lang="java")
runSuccessfully([get_cmd("kotlinc"), '-language-version', '1.9', 'A.kt'])
run_codeql_database_create(['kotlinc -cp . -language-version 1.9 B.kt C.kt'], lang="java")
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@

os.mkdir('bin')
runSuccessfully(["javac", "Test.java", "-d", "bin"])
run_codeql_database_create(["kotlinc user.kt -cp bin"], lang="java")
run_codeql_database_create(["kotlinc -language-version 1.9 user.kt -cp bin"], lang="java")
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
| extlib.jar/extlib/A.class:0:0:0:0 | m | protected |
| test.kt:4:12:4:22 | m | override, protected |
| test.kt:4:3:4:22 | m | override, protected |
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
| test.kt:3:17:3:45 | f | test.kt:3:23:3:32 | x |
| test.kt:3:17:3:45 | f | test.kt:3:35:3:40 | y |
| test.kt:3:17:3:45 | f | test.kt:3:35:3:40 | y |
| test.kt:3:17:3:45 | f$default | test.kt:3:17:3:45 | p0 |
| test.kt:3:17:3:45 | f$default | test.kt:3:17:3:45 | p1 |
| test.kt:3:17:3:45 | f$default | test.kt:3:17:3:45 | p2 |
| test.kt:3:17:3:45 | f$default | test.kt:3:17:3:45 | p3 |
| test.kt:3:17:3:45 | f$default | test.kt:3:17:3:45 | p4 |
| test.kt:3:3:3:45 | f | test.kt:3:23:3:32 | x |
| test.kt:3:3:3:45 | f | test.kt:3:35:3:40 | y |
| test.kt:3:3:3:45 | f | test.kt:3:35:3:40 | y |
| test.kt:3:3:3:45 | f$default | test.kt:3:3:3:45 | p0 |
| test.kt:3:3:3:45 | f$default | test.kt:3:3:3:45 | p1 |
| test.kt:3:3:3:45 | f$default | test.kt:3:3:3:45 | p2 |
| test.kt:3:3:3:45 | f$default | test.kt:3:3:3:45 | p3 |
| test.kt:3:3:3:45 | f$default | test.kt:3:3:3:45 | p4 |
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,4 @@

# Compile the JavaDefns2 copy outside tracing, to make sure the Kotlin view of it matches the Java view seen by the traced javac compilation of JavaDefns.java below.
runSuccessfully(["javac", "JavaDefns2.java"])
run_codeql_database_create(["kotlinc kotlindefns.kt", "javac JavaUser.java JavaDefns.java -cp .", "kotlinc -cp . kotlinuser.kt"], lang="java")
run_codeql_database_create(["kotlinc kotlindefns.kt", "javac JavaUser.java JavaDefns.java -cp .", "kotlinc -language-version 1.9 -cp . kotlinuser.kt"], lang="java")
Original file line number Diff line number Diff line change
@@ -1,26 +1,26 @@
edges
| hasFields.kt:5:5:5:34 | constField : String | ReadsFields.java:5:10:5:29 | HasFields.constField | provenance | |
| hasFields.kt:5:28:5:34 | "taint" : String | hasFields.kt:5:5:5:34 | constField : String | provenance | |
| hasFields.kt:7:5:7:38 | <set-?> : String | hasFields.kt:7:5:7:38 | <set-?> : String | provenance | |
| hasFields.kt:7:5:7:38 | <set-?> : String | hasFields.kt:7:5:7:38 | lateinitField : String | provenance | |
| hasFields.kt:7:5:7:38 | lateinitField : String | ReadsFields.java:6:10:6:32 | HasFields.lateinitField | provenance | |
| hasFields.kt:7:14:7:38 | <set-?> : String | hasFields.kt:7:5:7:38 | lateinitField : String | provenance | |
| hasFields.kt:7:14:7:38 | <set-?> : String | hasFields.kt:7:14:7:38 | <set-?> : String | provenance | |
| hasFields.kt:9:5:9:50 | jvmFieldAnnotatedField : String | ReadsFields.java:7:10:7:41 | HasFields.jvmFieldAnnotatedField | provenance | |
| hasFields.kt:9:44:9:50 | "taint" : String | hasFields.kt:9:5:9:50 | jvmFieldAnnotatedField : String | provenance | |
| hasFields.kt:14:22:14:26 | "taint" : String | hasFields.kt:7:14:7:38 | <set-?> : String | provenance | |
| hasFields.kt:14:21:14:27 | "taint" : String | hasFields.kt:7:5:7:38 | <set-?> : String | provenance | |
nodes
| ReadsFields.java:5:10:5:29 | HasFields.constField | semmle.label | HasFields.constField |
| ReadsFields.java:6:10:6:32 | HasFields.lateinitField | semmle.label | HasFields.lateinitField |
| ReadsFields.java:7:10:7:41 | HasFields.jvmFieldAnnotatedField | semmle.label | HasFields.jvmFieldAnnotatedField |
| hasFields.kt:5:5:5:34 | constField : String | semmle.label | constField : String |
| hasFields.kt:5:28:5:34 | "taint" : String | semmle.label | "taint" : String |
| hasFields.kt:7:5:7:38 | <set-?> : String | semmle.label | <set-?> : String |
| hasFields.kt:7:5:7:38 | <set-?> : String | semmle.label | <set-?> : String |
| hasFields.kt:7:5:7:38 | lateinitField : String | semmle.label | lateinitField : String |
| hasFields.kt:7:14:7:38 | <set-?> : String | semmle.label | <set-?> : String |
| hasFields.kt:7:14:7:38 | <set-?> : String | semmle.label | <set-?> : String |
| hasFields.kt:9:5:9:50 | jvmFieldAnnotatedField : String | semmle.label | jvmFieldAnnotatedField : String |
| hasFields.kt:9:44:9:50 | "taint" : String | semmle.label | "taint" : String |
| hasFields.kt:14:22:14:26 | "taint" : String | semmle.label | "taint" : String |
| hasFields.kt:14:21:14:27 | "taint" : String | semmle.label | "taint" : String |
subpaths
#select
| hasFields.kt:5:28:5:34 | "taint" : String | hasFields.kt:5:28:5:34 | "taint" : String | ReadsFields.java:5:10:5:29 | HasFields.constField | flow path |
| hasFields.kt:9:44:9:50 | "taint" : String | hasFields.kt:9:44:9:50 | "taint" : String | ReadsFields.java:7:10:7:41 | HasFields.jvmFieldAnnotatedField | flow path |
| hasFields.kt:14:22:14:26 | "taint" : String | hasFields.kt:14:22:14:26 | "taint" : String | ReadsFields.java:6:10:6:32 | HasFields.lateinitField | flow path |
| hasFields.kt:14:21:14:27 | "taint" : String | hasFields.kt:14:21:14:27 | "taint" : String | ReadsFields.java:6:10:6:32 | HasFields.lateinitField | flow path |
Loading