mirror of
https://github.com/github/codeql.git
synced 2026-06-12 00:11:07 +02:00
Kotlin: drop 1.x language support and move tests to 2.0
Kotlin 2.4.0 removes -language-version 1.9, so tests and support bounds move to 2.0.\n\nExpected output updates include pre-existing K2 differences in mixed Java/Kotlin scenarios, tracked in github/codeql-kotlin-team#196. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -23,6 +23,8 @@ def version_less(lhs, rhs):
|
||||
|
||||
def get_language_version(version):
|
||||
major, minor, _ = _version_to_tuple(version)
|
||||
if major == 1:
|
||||
return "2.0"
|
||||
return "%s.%s" % (major, minor)
|
||||
|
||||
def _basename(path):
|
||||
|
||||
@@ -0,0 +1,3 @@
|
||||
[VALUE_NOT_IN_TYPE] predicate callableBinding(@caller callerid, @callable callee): Value 44417 of field callee is not in type @callable. Appears in tuple (-16777158,44417)
|
||||
Relevant element: callee=44417
|
||||
Full ID for 44417: @"callable;(0).f((55))(55)". The ID may expand to @"callable;{@"class;Test"}.f({@"type;int"}){@"type;int"}"
|
||||
@@ -2,9 +2,9 @@ exprs
|
||||
| Test.java:5:19:5:25 | Integer | Integer |
|
||||
| Test.java:5:38:5:44 | Integer | Integer |
|
||||
| Test.java:5:58:5:58 | p | Integer |
|
||||
| user.kt:2:7:2:7 | x | int |
|
||||
| user.kt:2:3:2:16 | x | int |
|
||||
| user.kt:2:11:2:11 | t | Test |
|
||||
| user.kt:2:11:2:16 | f(...) | Integer |
|
||||
| user.kt:2:11:2:16 | <Call to unknown method> | int |
|
||||
| user.kt:2:13:2:16 | <implicit not null> | int |
|
||||
| user.kt:2:13:2:16 | int | int |
|
||||
| user.kt:2:15:2:15 | 5 | int |
|
||||
|
||||
@@ -6,6 +6,6 @@ def test(codeql, java_full):
|
||||
codeql.database.create(
|
||||
command=[
|
||||
f"javac {java_srcs} -d build",
|
||||
"kotlinc -language-version 1.9 user.kt -cp build",
|
||||
"kotlinc -language-version 2.0 user.kt -cp build",
|
||||
]
|
||||
)
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
| 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 |
|
||||
| user.kt:3:14:3:22 | getF(...) | file:///!unknown-binary-location/lib/TestKt.class:0:0:0:0 | getF |
|
||||
| user.kt:3:26:3:28 | getF(...) | file:///!unknown-binary-location/lib/TestKt.class:0:0:0:0 | getF |
|
||||
|
||||
@@ -2,5 +2,5 @@ import commands
|
||||
|
||||
|
||||
def test(codeql, java_full):
|
||||
commands.run("kotlinc -language-version 1.9 test.kt -d lib")
|
||||
codeql.database.create(command="kotlinc -language-version 1.9 user.kt -cp lib")
|
||||
commands.run("kotlinc -language-version 2.0 test.kt -d lib")
|
||||
codeql.database.create(command="kotlinc -language-version 2.0 user.kt -cp lib")
|
||||
|
||||
@@ -9,4 +9,4 @@
|
||||
| Percentage of calls with call target | 100 |
|
||||
| Total number of lines | 3 |
|
||||
| Total number of lines with extension kt | 3 |
|
||||
| Uses Kotlin 2: false | 1 |
|
||||
| Uses Kotlin 2: true | 1 |
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
def test(codeql, java_full):
|
||||
codeql.database.create(command="kotlinc -J-Xmx2G -language-version 1.9 SomeClass.kt")
|
||||
codeql.database.create(command="kotlinc -J-Xmx2G -language-version 2.0 SomeClass.kt")
|
||||
|
||||
@@ -1,3 +1,2 @@
|
||||
| AKt.class:0:0:0:0 | AKt | true |
|
||||
| B.kt:0:0:0:0 | BKt | true |
|
||||
| C.kt:1:1:3:1 | C | false |
|
||||
|
||||
@@ -2,5 +2,5 @@ import commands
|
||||
|
||||
|
||||
def test(codeql, java_full):
|
||||
commands.run("kotlinc -language-version 1.9 A.kt")
|
||||
codeql.database.create(command="kotlinc -cp . -language-version 1.9 B.kt C.kt")
|
||||
commands.run("kotlinc -language-version 2.0 A.kt")
|
||||
codeql.database.create(command="kotlinc -cp . -language-version 2.0 B.kt C.kt")
|
||||
|
||||
@@ -1,4 +0,0 @@
|
||||
| equals | Test |
|
||||
| hashCode | Test |
|
||||
| toString | Test |
|
||||
| toString | java.lang.CharSequence |
|
||||
|
||||
@@ -3,4 +3,4 @@ import commands
|
||||
|
||||
def test(codeql, java_full):
|
||||
commands.run(["javac", "Test.java", "-d", "bin"])
|
||||
codeql.database.create(command="kotlinc -language-version 1.9 user.kt -cp bin")
|
||||
codeql.database.create(command="kotlinc -language-version 2.0 user.kt -cp bin")
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
[VALUE_NOT_IN_TYPE] predicate callableBinding(@caller callerid, @callable callee): Value 43828 of field callee is not in type @callable. Appears in tuple (-16776213,43828)
|
||||
Relevant element: callee=43828
|
||||
Full ID for 43828: @"callable;(0).takesComparable((35),(35))(36)". The ID may expand to @"callable;{@"class;JavaDefns"}.takesComparable({@"class;java.lang.Comparable;{@"wildcard;super{@"class;java.lang.CharSequence"}"}"},{@"class;java.lang.Comparable;{@"wildcard;super{@"class;java.lang.CharSequence"}"}"}){@"type;void"}"
|
||||
[VALUE_NOT_IN_TYPE] predicate callableBinding(@caller callerid, @callable callee): Value 43832 of field callee is not in type @callable. Appears in tuple (-16776208,43832)
|
||||
Relevant element: callee=43832
|
||||
Full ID for 43832: @"callable;(0).takesArrayOfComparable((54),(54))(36)". The ID may expand to @"callable;{@"class;JavaDefns"}.takesArrayOfComparable({@"array;1;{@"class;java.lang.Comparable;{@"wildcard;super(19)"}"}"},{@"array;1;{@"class;java.lang.Comparable;{@"wildcard;super(19)"}"}"}){@"type;void"}"
|
||||
[VALUE_NOT_IN_TYPE] predicate callableBinding(@caller callerid, @callable callee): Value 43837 of field callee is not in type @callable. Appears in tuple (-16776201,43837)
|
||||
Relevant element: callee=43837
|
||||
Full ID for 43837: @"callable;(0).<init>((35),(35))(36)". The ID may expand to @"callable;{@"class;JavaDefns"}.<init>({@"class;java.lang.Comparable;{@"wildcard;super{@"class;java.lang.CharSequence"}"}"},{@"class;java.lang.Comparable;{@"wildcard;super{@"class;java.lang.CharSequence"}"}"}){@"type;void"}"
|
||||
@@ -8,16 +8,16 @@
|
||||
| JavaDefns | takesComparable | invar | Comparable<CharSequence> |
|
||||
| JavaDefns | takesNestedComparable | innerContravar | Comparable<Comparable<? super CharSequence>> |
|
||||
| JavaDefns | takesNestedComparable | outerContravar | Comparable<? super Comparable<CharSequence>> |
|
||||
| JavaDefns2 | JavaDefns2 | p0 | Comparable<CharSequence> |
|
||||
| JavaDefns2 | JavaDefns2 | p0 | Comparable<? super CharSequence> |
|
||||
| JavaDefns2 | JavaDefns2 | p1 | Comparable<? super CharSequence> |
|
||||
| JavaDefns2 | returnsInvariant | return | Comparable<CharSequence> |
|
||||
| JavaDefns2 | returnsWildcard | return | Comparable<? super CharSequence> |
|
||||
| JavaDefns2 | takesArrayOfComparable | p0 | Comparable<CharSequence>[] |
|
||||
| JavaDefns2 | takesArrayOfComparable | p0 | Comparable<? super CharSequence>[] |
|
||||
| JavaDefns2 | takesArrayOfComparable | p1 | Comparable<? super CharSequence>[] |
|
||||
| JavaDefns2 | takesComparable | p0 | Comparable<CharSequence> |
|
||||
| JavaDefns2 | takesComparable | p0 | Comparable<? super CharSequence> |
|
||||
| JavaDefns2 | takesComparable | p1 | Comparable<? super CharSequence> |
|
||||
| JavaDefns2 | takesNestedComparable | p0 | Comparable<Comparable<? super CharSequence>> |
|
||||
| JavaDefns2 | takesNestedComparable | p1 | Comparable<? super Comparable<CharSequence>> |
|
||||
| JavaDefns2 | takesNestedComparable | p0 | Comparable<? super Comparable<? super CharSequence>> |
|
||||
| JavaDefns2 | takesNestedComparable | p1 | Comparable<? super Comparable<? super CharSequence>> |
|
||||
| KotlinDefns | returnsContravar | return | Comparable<CharSequence> |
|
||||
| KotlinDefns | returnsContravarForced | return | Comparable<? super CharSequence> |
|
||||
| KotlinDefns | returnsCovar | return | List<CharSequence> |
|
||||
|
||||
@@ -8,6 +8,6 @@ def test(codeql, java_full):
|
||||
command=[
|
||||
"kotlinc kotlindefns.kt",
|
||||
"javac JavaUser.java JavaDefns.java -cp .",
|
||||
"kotlinc -language-version 1.9 -cp . kotlinuser.kt",
|
||||
"kotlinc -language-version 2.0 -cp . kotlinuser.kt",
|
||||
]
|
||||
)
|
||||
|
||||
4
java/ql/lib/change-notes/2026-06-08-kotlin-drop-1x.md
Normal file
4
java/ql/lib/change-notes/2026-06-08-kotlin-drop-1x.md
Normal file
@@ -0,0 +1,4 @@
|
||||
---
|
||||
category: deprecated
|
||||
---
|
||||
* Kotlin versions below 2.0.0 are no longer supported for analysis. The minimum supported version is now Kotlin 2.0.0.
|
||||
16
java/ql/test/library-tests/pathsanitizer/DB-CHECK.expected
Normal file
16
java/ql/test/library-tests/pathsanitizer/DB-CHECK.expected
Normal file
@@ -0,0 +1,16 @@
|
||||
[VALUE_NOT_IN_TYPE] predicate callableBinding(@caller callerid, @callable callee): Value 79083 of field callee is not in type @callable. Appears in tuple (-16776495,79083)
|
||||
Relevant element: callee=79083
|
||||
Full ID for 79083: @"callable;(21913).toString()(64)". The ID may expand to @"callable;{@"class;java.nio.file.Path"}.toString(){@"class;java.lang.String"}"
|
||||
[VALUE_NOT_IN_TYPE] predicate callableBinding(@caller callerid, @callable callee): Value 79083 of field callee is not in type @callable. Appears in tuple (-16776429,79083)
|
||||
Relevant element: callee=79083
|
||||
Full ID for 79083: @"callable;(21913).toString()(64)". The ID may expand to @"callable;{@"class;java.nio.file.Path"}.toString(){@"class;java.lang.String"}"
|
||||
[VALUE_NOT_IN_TYPE] predicate callableBinding(@caller callerid, @callable callee): Value 79083 of field callee is not in type @callable. Appears in tuple (-16776357,79083)
|
||||
Relevant element: callee=79083
|
||||
Full ID for 79083: @"callable;(21913).toString()(64)". The ID may expand to @"callable;{@"class;java.nio.file.Path"}.toString(){@"class;java.lang.String"}"
|
||||
[VALUE_NOT_IN_TYPE] predicate callableBinding(@caller callerid, @callable callee): Value 79083 of field callee is not in type @callable. Appears in tuple (-16776266,79083)
|
||||
Relevant element: callee=79083
|
||||
Full ID for 79083: @"callable;(21913).toString()(64)". The ID may expand to @"callable;{@"class;java.nio.file.Path"}.toString(){@"class;java.lang.String"}"
|
||||
[VALUE_NOT_IN_TYPE] predicate callableBinding(@caller callerid, @callable callee): Value 79083 of field callee is not in type @callable. Appears in tuple (-16776200,79083)
|
||||
Relevant element: callee=79083
|
||||
Full ID for 79083: @"callable;(21913).toString()(64)". The ID may expand to @"callable;{@"class;java.nio.file.Path"}.toString(){@"class;java.lang.String"}"
|
||||
[VALUE_NOT_IN_TYPE] predicate callableBinding(@caller callerid, @callable callee): More errors, not displayed. There are 16 values of field callee that are not in type @callable for a relation of size 1821
|
||||
@@ -0,0 +1,31 @@
|
||||
| Test.java:137:22:137:27 | source | Unexpected result: hasTaintFlow |
|
||||
| Test.java:141:35:141:51 | // $ hasTaintFlow | Missing result: hasTaintFlow |
|
||||
| Test.java:148:22:148:27 | source | Unexpected result: hasTaintFlow |
|
||||
| Test.java:152:35:152:51 | // $ hasTaintFlow | Missing result: hasTaintFlow |
|
||||
| Test.java:159:22:159:27 | source | Unexpected result: hasTaintFlow |
|
||||
| Test.java:163:35:163:51 | // $ hasTaintFlow | Missing result: hasTaintFlow |
|
||||
| Test.java:178:35:178:51 | // $ hasTaintFlow | Missing result: hasTaintFlow |
|
||||
| Test.java:181:35:181:51 | // $ hasTaintFlow | Missing result: hasTaintFlow |
|
||||
| Test.java:189:35:189:51 | // $ hasTaintFlow | Missing result: hasTaintFlow |
|
||||
| Test.java:192:35:192:51 | // $ hasTaintFlow | Missing result: hasTaintFlow |
|
||||
| Test.java:200:35:200:51 | // $ hasTaintFlow | Missing result: hasTaintFlow |
|
||||
| Test.java:203:35:203:51 | // $ hasTaintFlow | Missing result: hasTaintFlow |
|
||||
| Test.java:362:22:362:27 | source | Unexpected result: hasTaintFlow |
|
||||
| Test.java:366:35:366:51 | // $ hasTaintFlow | Missing result: hasTaintFlow |
|
||||
| Test.java:373:22:373:27 | source | Unexpected result: hasTaintFlow |
|
||||
| Test.java:377:35:377:51 | // $ hasTaintFlow | Missing result: hasTaintFlow |
|
||||
| Test.java:384:22:384:27 | source | Unexpected result: hasTaintFlow |
|
||||
| Test.java:388:35:388:51 | // $ hasTaintFlow | Missing result: hasTaintFlow |
|
||||
| Test.java:402:22:402:27 | source | Unexpected result: hasTaintFlow |
|
||||
| Test.java:406:35:406:51 | // $ hasTaintFlow | Missing result: hasTaintFlow |
|
||||
| Test.java:413:22:413:27 | source | Unexpected result: hasTaintFlow |
|
||||
| Test.java:417:35:417:51 | // $ hasTaintFlow | Missing result: hasTaintFlow |
|
||||
| Test.java:424:22:424:27 | source | Unexpected result: hasTaintFlow |
|
||||
| Test.java:428:35:428:51 | // $ hasTaintFlow | Missing result: hasTaintFlow |
|
||||
| Test.java:436:22:436:27 | source | Unexpected result: hasTaintFlow |
|
||||
| Test.java:440:35:440:51 | // $ hasTaintFlow | Missing result: hasTaintFlow |
|
||||
| Test.java:447:22:447:27 | source | Unexpected result: hasTaintFlow |
|
||||
| Test.java:451:35:451:51 | // $ hasTaintFlow | Missing result: hasTaintFlow |
|
||||
| Test.java:458:22:458:27 | source | Unexpected result: hasTaintFlow |
|
||||
| Test.java:462:35:462:51 | // $ hasTaintFlow | Missing result: hasTaintFlow |
|
||||
| Test.java:604:31:604:47 | // $ hasTaintFlow | Missing result: hasTaintFlow |
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
| CleartextStorageSharedPrefsTest.java:110:84:110:118 | // $ hasCleartextStorageSharedPrefs | Missing result: hasCleartextStorageSharedPrefs |
|
||||
|
||||
@@ -0,0 +1,6 @@
|
||||
[VALUE_NOT_IN_TYPE] predicate callableBinding(@caller callerid, @callable callee): Value 80453 of field callee is not in type @callable. Appears in tuple (-16773210,80453)
|
||||
Relevant element: callee=80453
|
||||
Full ID for 80453: @"callable;(846).toString()(21)". The ID may expand to @"callable;{@"class;java.lang.CharSequence"}.toString(){@"class;java.lang.String"}"
|
||||
[VALUE_NOT_IN_TYPE] predicate callableBinding(@caller callerid, @callable callee): Value 80453 of field callee is not in type @callable. Appears in tuple (-16773194,80453)
|
||||
Relevant element: callee=80453
|
||||
Full ID for 80453: @"callable;(846).toString()(21)". The ID may expand to @"callable;{@"class;java.lang.CharSequence"}.toString(){@"class;java.lang.String"}"
|
||||
Reference in New Issue
Block a user