mirror of
https://github.com/github/codeql.git
synced 2026-07-08 21:15:32 +02:00
kotlin tests: synchronise test inputs between test-kotlin1 and test-kotlin2
- Port ministdlib from test-kotlin1 to test-kotlin2. The ministdlib test exercises a minimal Kotlin standard library written from scratch. Its options file is updated to include -language-version 2.0 so the test runs in K2 mode when the K2 compiler is active. - Port nested_types from test-kotlin2 to test-kotlin1. The nested_types test exercises type-alias and inner-type queries. Expected output is identical in K1 and K2 modes so no expected-file changes are needed. - Add test-kotlin2/options with codeql-extractor-kotlin-options: -language-version 2.0. The CodeQL CLI adds -language-version 1.9 by default in legacy test extraction mode. Without this override the K2 test suite would run in K1 mode, defeating the purpose of the split. Both ministdlib and nested_types produce byte-identical expected output across K1 (2.3.20, -language-version 1.9) and K2 (2.4.0, default K2). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
16
java/ql/test-kotlin1/library-tests/nested_types/test.kt
Normal file
16
java/ql/test-kotlin1/library-tests/nested_types/test.kt
Normal file
@@ -0,0 +1,16 @@
|
||||
|
||||
import java.util.Stack;
|
||||
|
||||
// Diagnostic Matches: %Making use of Stack a raw type to avoid infinite recursion%
|
||||
|
||||
class MyType
|
||||
|
||||
fun foo1(x: List<List<List<List<MyType>>>>) { }
|
||||
|
||||
fun foo2(x: Stack<Stack<Stack<Stack<MyType>>>>) { }
|
||||
|
||||
class MkT<T> { }
|
||||
|
||||
fun foo3(x: MkT<MkT<MkT<MkT<MyType>>>>) { }
|
||||
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
| file:///!unknown-binary-location/MkT.class:0:0:0:0 | MkT<MkT<MkT<MkT<MyType>>>> |
|
||||
| file:///!unknown-binary-location/MkT.class:0:0:0:0 | MkT<MkT<MkT<MyType>>> |
|
||||
| file:///!unknown-binary-location/MkT.class:0:0:0:0 | MkT<MkT<MyType>> |
|
||||
| file:///!unknown-binary-location/MkT.class:0:0:0:0 | MkT<MyType> |
|
||||
| file:///modules/java.base/java/util/List.class:0:0:0:0 | List<? extends List<? extends List<? extends List<MyType>>>> |
|
||||
| file:///modules/java.base/java/util/List.class:0:0:0:0 | List<? extends List<? extends List<MyType>>> |
|
||||
| file:///modules/java.base/java/util/List.class:0:0:0:0 | List<? extends List<MyType>> |
|
||||
| file:///modules/java.base/java/util/List.class:0:0:0:0 | List<MyType> |
|
||||
| file:///modules/java.base/java/util/List.class:0:0:0:0 | List<Stack<MyType>> |
|
||||
| file:///modules/java.base/java/util/Stack.class:0:0:0:0 | Stack<MyType> |
|
||||
| file:///modules/java.base/java/util/Stack.class:0:0:0:0 | Stack<Stack<MyType>> |
|
||||
| file:///modules/java.base/java/util/Stack.class:0:0:0:0 | Stack<Stack<Stack<MyType>>> |
|
||||
| file:///modules/java.base/java/util/Stack.class:0:0:0:0 | Stack<Stack<Stack<Stack<MyType>>>> |
|
||||
7
java/ql/test-kotlin1/library-tests/nested_types/types.ql
Normal file
7
java/ql/test-kotlin1/library-tests/nested_types/types.ql
Normal file
@@ -0,0 +1,7 @@
|
||||
import java
|
||||
|
||||
from Type t
|
||||
where
|
||||
t.getName().matches("%MyType%") and
|
||||
t.getName().matches(["List<%", "Stack<%", "MkT<%"])
|
||||
select t
|
||||
47
java/ql/test-kotlin2/library-tests/ministdlib/MiniStdLib.kt
Normal file
47
java/ql/test-kotlin2/library-tests/ministdlib/MiniStdLib.kt
Normal file
@@ -0,0 +1,47 @@
|
||||
package kotlin
|
||||
|
||||
/*
|
||||
This is a mini standard library replacement, to make it easy to write
|
||||
very small tests that create very small databases.
|
||||
|
||||
If you define a class, then you will need to also define any members that
|
||||
compiler/ir/ir.psi2ir/src/org/jetbrains/kotlin/psi2ir/descriptors/IrBuiltInsOverDescriptors.kt
|
||||
expects (e.g. with findFunctions(...).first) to exist.
|
||||
*/
|
||||
|
||||
public open class Any {
|
||||
fun toString(): String { return this.toString() }
|
||||
open operator fun equals(other: Any?): Boolean { return this.equals(other) }
|
||||
}
|
||||
|
||||
public class String {
|
||||
operator fun plus(other: Any?): String { return this.plus(other) }
|
||||
}
|
||||
|
||||
public class Boolean {
|
||||
operator fun not(): Boolean { return this.not() }
|
||||
}
|
||||
|
||||
public class Int {
|
||||
operator fun plus(other: Int): Int { return this.plus(other) }
|
||||
operator fun times(other: Int): Int { return this.times(other) }
|
||||
infix fun xor(other: Int): Int { return this.xor(other) }
|
||||
infix fun and(other: Int): Int { return this.and(other) }
|
||||
}
|
||||
|
||||
public object Unit {
|
||||
}
|
||||
|
||||
// Diagnostic Matches: % Can't find java.lang.Boolean
|
||||
// Diagnostic Matches: % Can't find java.lang.Byte
|
||||
// Diagnostic Matches: % Can't find java.lang.Character
|
||||
// Diagnostic Matches: % Can't find java.lang.Double
|
||||
// Diagnostic Matches: % Can't find java.lang.Float
|
||||
// Diagnostic Matches: % Can't find java.lang.Integer
|
||||
// Diagnostic Matches: % Can't find java.lang.Long
|
||||
// Diagnostic Matches: % Can't find java.lang.Short
|
||||
// Diagnostic Matches: % Can't find java.lang.Void
|
||||
// Diagnostic Matches: % Can't find kotlin.UByte
|
||||
// Diagnostic Matches: % Can't find kotlin.UInt
|
||||
// Diagnostic Matches: % Can't find kotlin.ULong
|
||||
// Diagnostic Matches: % Can't find kotlin.UShort
|
||||
1
java/ql/test-kotlin2/library-tests/ministdlib/MyClass.kt
Normal file
1
java/ql/test-kotlin2/library-tests/ministdlib/MyClass.kt
Normal file
@@ -0,0 +1 @@
|
||||
class MyClass {}
|
||||
@@ -0,0 +1,7 @@
|
||||
| MiniStdLib.kt:12:1:15:1 | Any |
|
||||
| MiniStdLib.kt:17:1:19:1 | String |
|
||||
| MiniStdLib.kt:21:1:23:1 | Boolean |
|
||||
| MiniStdLib.kt:25:1:30:1 | Int |
|
||||
| MiniStdLib.kt:32:1:33:1 | Unit |
|
||||
| MyClass.kt:1:1:1:16 | MyClass |
|
||||
| file://:0:0:0:0 | FakeKotlinClass |
|
||||
4
java/ql/test-kotlin2/library-tests/ministdlib/classes.ql
Normal file
4
java/ql/test-kotlin2/library-tests/ministdlib/classes.ql
Normal file
@@ -0,0 +1,4 @@
|
||||
import java
|
||||
|
||||
from Class c
|
||||
select c
|
||||
1
java/ql/test-kotlin2/library-tests/ministdlib/options
Normal file
1
java/ql/test-kotlin2/library-tests/ministdlib/options
Normal file
@@ -0,0 +1 @@
|
||||
codeql-extractor-kotlin-options: -no-jdk -no-reflect -no-stdlib -Xallow-kotlin-package -language-version 2.0
|
||||
1
java/ql/test-kotlin2/options
Normal file
1
java/ql/test-kotlin2/options
Normal file
@@ -0,0 +1 @@
|
||||
codeql-extractor-kotlin-options: -language-version 2.0
|
||||
Reference in New Issue
Block a user