Kotlin: Add a Kotlin 2 copy of the testsuite

This commit is contained in:
Ian Lynagh
2023-10-26 13:13:28 +01:00
parent e6f31c965e
commit 905583e00a
625 changed files with 32808 additions and 0 deletions

View File

@@ -0,0 +1,18 @@
package testuser
class User {
fun test() {
val a = OuterGeneric<Int>().InnerGeneric<String>("hello")
val a2 = OuterGeneric<Int>().InnerGeneric("hello")
val b = OuterGeneric<Int>().InnerNotGeneric()
val c = OuterNotGeneric().InnerGeneric<String>()
val result1 = a.returnsecond(0, "hello")
val result2 = b.identity(5)
val result3 = c.identity("world")
}
}

View File

@@ -0,0 +1,22 @@
package testuser
public class OuterGeneric<T> {
public inner class InnerNotGeneric {
fun identity(t: T): T { return t }
}
public inner class InnerGeneric<S> {
constructor() { }
constructor(s: S) { }
fun returnsecond(t: T, s: S): S { return s; }
}
}

View File

@@ -0,0 +1,11 @@
package testuser
public class OuterNotGeneric {
public inner class InnerGeneric<S> {
fun identity(s: S): S { return s }
}
}

View File

@@ -0,0 +1,60 @@
callArgs
| KotlinUser.kt:7:13:7:31 | new OuterGeneric<Integer>(...) | KotlinUser.kt:7:13:7:31 | OuterGeneric<Integer> | -3 |
| KotlinUser.kt:7:33:7:61 | new InnerGeneric<String>(...) | KotlinUser.kt:7:13:7:31 | new OuterGeneric<Integer>(...) | -2 |
| KotlinUser.kt:7:33:7:61 | new InnerGeneric<String>(...) | KotlinUser.kt:7:33:7:61 | InnerGeneric<String> | -3 |
| KotlinUser.kt:7:33:7:61 | new InnerGeneric<String>(...) | KotlinUser.kt:7:55:7:59 | "hello" | 0 |
| KotlinUser.kt:8:14:8:32 | new OuterGeneric<Integer>(...) | KotlinUser.kt:8:14:8:32 | OuterGeneric<Integer> | -3 |
| KotlinUser.kt:8:34:8:54 | new InnerGeneric<String>(...) | KotlinUser.kt:8:14:8:32 | new OuterGeneric<Integer>(...) | -2 |
| KotlinUser.kt:8:34:8:54 | new InnerGeneric<String>(...) | KotlinUser.kt:8:34:8:54 | InnerGeneric<String> | -3 |
| KotlinUser.kt:8:34:8:54 | new InnerGeneric<String>(...) | KotlinUser.kt:8:48:8:52 | "hello" | 0 |
| KotlinUser.kt:9:13:9:31 | new OuterGeneric<Integer>(...) | KotlinUser.kt:9:13:9:31 | OuterGeneric<Integer> | -3 |
| KotlinUser.kt:9:33:9:49 | new InnerNotGeneric<>(...) | KotlinUser.kt:9:13:9:31 | new OuterGeneric<Integer>(...) | -2 |
| KotlinUser.kt:9:33:9:49 | new InnerNotGeneric<>(...) | KotlinUser.kt:9:33:9:49 | InnerNotGeneric<> | -3 |
| KotlinUser.kt:10:13:10:29 | new OuterNotGeneric(...) | KotlinUser.kt:10:13:10:29 | OuterNotGeneric | -3 |
| KotlinUser.kt:10:31:10:52 | new InnerGeneric<String>(...) | KotlinUser.kt:10:13:10:29 | new OuterNotGeneric(...) | -2 |
| KotlinUser.kt:10:31:10:52 | new InnerGeneric<String>(...) | KotlinUser.kt:10:31:10:52 | InnerGeneric<String> | -3 |
| KotlinUser.kt:12:19:12:44 | returnsecond(...) | KotlinUser.kt:12:19:12:19 | a | -1 |
| KotlinUser.kt:12:19:12:44 | returnsecond(...) | KotlinUser.kt:12:34:12:34 | 0 | 0 |
| KotlinUser.kt:12:19:12:44 | returnsecond(...) | KotlinUser.kt:12:38:12:42 | "hello" | 1 |
| KotlinUser.kt:13:19:13:31 | identity(...) | KotlinUser.kt:13:19:13:19 | b | -1 |
| KotlinUser.kt:13:19:13:31 | identity(...) | KotlinUser.kt:13:30:13:30 | 5 | 0 |
| KotlinUser.kt:14:19:14:37 | identity(...) | KotlinUser.kt:14:19:14:19 | c | -1 |
| KotlinUser.kt:14:19:14:37 | identity(...) | KotlinUser.kt:14:31:14:35 | "world" | 0 |
genericTypes
| OuterGeneric.kt:3:1:21:1 | OuterGeneric | OuterGeneric.kt:3:27:3:27 | T |
| OuterGeneric.kt:11:3:19:3 | InnerGeneric | OuterGeneric.kt:11:35:11:35 | S |
| OuterNotGeneric.kt:5:3:9:3 | InnerGeneric | OuterNotGeneric.kt:5:35:5:35 | S |
paramTypes
| OuterGeneric.kt:3:1:21:1 | OuterGeneric | T |
| OuterGeneric.kt:11:3:19:3 | InnerGeneric | S |
| OuterNotGeneric.kt:5:3:9:3 | InnerGeneric | S |
| file:///!unknown-binary-location/testuser/OuterGeneric$InnerGeneric.class:0:0:0:0 | InnerGeneric<String> | String |
| file:///!unknown-binary-location/testuser/OuterGeneric.class:0:0:0:0 | OuterGeneric<Integer> | Integer |
| file:///!unknown-binary-location/testuser/OuterNotGeneric$InnerGeneric.class:0:0:0:0 | InnerGeneric<String> | String |
constructors
| KotlinUser.kt:3:1:18:1 | User |
| OuterGeneric.kt:3:8:21:1 | OuterGeneric |
| OuterGeneric.kt:5:16:9:3 | InnerNotGeneric |
| OuterGeneric.kt:13:5:13:21 | InnerGeneric |
| OuterGeneric.kt:15:5:15:25 | InnerGeneric |
| OuterNotGeneric.kt:3:8:11:1 | OuterNotGeneric |
| OuterNotGeneric.kt:5:16:9:3 | InnerGeneric |
| file:///!unknown-binary-location/testuser/OuterGeneric$InnerGeneric.class:0:0:0:0 | InnerGeneric<String> |
| file:///!unknown-binary-location/testuser/OuterGeneric$InnerGeneric.class:0:0:0:0 | InnerGeneric<String> |
| file:///!unknown-binary-location/testuser/OuterGeneric$InnerNotGeneric.class:0:0:0:0 | InnerNotGeneric<> |
| file:///!unknown-binary-location/testuser/OuterGeneric.class:0:0:0:0 | OuterGeneric<Integer> |
| file:///!unknown-binary-location/testuser/OuterNotGeneric$InnerGeneric.class:0:0:0:0 | InnerGeneric<String> |
nestedTypes
| OuterGeneric.kt:5:3:9:3 | InnerNotGeneric | OuterGeneric.kt:3:1:21:1 | OuterGeneric |
| OuterGeneric.kt:11:3:19:3 | InnerGeneric | OuterGeneric.kt:3:1:21:1 | OuterGeneric |
| OuterNotGeneric.kt:5:3:9:3 | InnerGeneric | OuterNotGeneric.kt:3:1:11:1 | OuterNotGeneric |
| file:///!unknown-binary-location/testuser/OuterGeneric$InnerGeneric.class:0:0:0:0 | InnerGeneric<String> | file:///!unknown-binary-location/testuser/OuterGeneric.class:0:0:0:0 | OuterGeneric<Integer> |
| file:///!unknown-binary-location/testuser/OuterGeneric$InnerNotGeneric.class:0:0:0:0 | InnerNotGeneric<> | file:///!unknown-binary-location/testuser/OuterGeneric.class:0:0:0:0 | OuterGeneric<Integer> |
| file:///!unknown-binary-location/testuser/OuterNotGeneric$InnerGeneric.class:0:0:0:0 | InnerGeneric<String> | OuterNotGeneric.kt:3:1:11:1 | OuterNotGeneric |
#select
| KotlinUser.kt:7:13:7:31 | new OuterGeneric<Integer>(...) | file:///!unknown-binary-location/testuser/OuterGeneric.class:0:0:0:0 | OuterGeneric<Integer> | file:///!unknown-binary-location/testuser/OuterGeneric.class:0:0:0:0 | OuterGeneric<Integer> | KotlinUser.kt:7:13:7:31 | Integer |
| KotlinUser.kt:7:33:7:61 | new InnerGeneric<String>(...) | file:///!unknown-binary-location/testuser/OuterGeneric$InnerGeneric.class:0:0:0:0 | InnerGeneric<String> | file:///!unknown-binary-location/testuser/OuterGeneric$InnerGeneric.class:0:0:0:0 | InnerGeneric<String> | KotlinUser.kt:7:33:7:61 | String |
| KotlinUser.kt:8:14:8:32 | new OuterGeneric<Integer>(...) | file:///!unknown-binary-location/testuser/OuterGeneric.class:0:0:0:0 | OuterGeneric<Integer> | file:///!unknown-binary-location/testuser/OuterGeneric.class:0:0:0:0 | OuterGeneric<Integer> | KotlinUser.kt:8:14:8:32 | Integer |
| KotlinUser.kt:8:34:8:54 | new InnerGeneric<String>(...) | file:///!unknown-binary-location/testuser/OuterGeneric$InnerGeneric.class:0:0:0:0 | InnerGeneric<String> | file:///!unknown-binary-location/testuser/OuterGeneric$InnerGeneric.class:0:0:0:0 | InnerGeneric<String> | KotlinUser.kt:8:34:8:54 | String |
| KotlinUser.kt:9:13:9:31 | new OuterGeneric<Integer>(...) | file:///!unknown-binary-location/testuser/OuterGeneric.class:0:0:0:0 | OuterGeneric<Integer> | file:///!unknown-binary-location/testuser/OuterGeneric.class:0:0:0:0 | OuterGeneric<Integer> | KotlinUser.kt:9:13:9:31 | Integer |
| KotlinUser.kt:10:31:10:52 | new InnerGeneric<String>(...) | file:///!unknown-binary-location/testuser/OuterNotGeneric$InnerGeneric.class:0:0:0:0 | InnerGeneric<String> | file:///!unknown-binary-location/testuser/OuterNotGeneric$InnerGeneric.class:0:0:0:0 | InnerGeneric<String> | KotlinUser.kt:10:31:10:52 | String |

View File

@@ -0,0 +1,28 @@
import java
query predicate callArgs(Call gc, Expr arg, int idx) {
arg.getParent() = gc and idx = arg.getIndex()
}
query predicate genericTypes(GenericType rt, TypeVariable param) {
rt.getPackage().getName() = "testuser" and
param = rt.getATypeParameter()
}
query predicate paramTypes(ParameterizedType rt, string typeArg) {
rt.getPackage().getName() = "testuser" and
typeArg = rt.getATypeArgument().toString()
}
query predicate constructors(Constructor c) {
c.getDeclaringType().getPackage().getName() = "testuser"
}
query predicate nestedTypes(NestedType nt, RefType parent) {
nt.getPackage().getName() = "testuser" and
parent = nt.getEnclosingType()
}
from ClassInstanceExpr cie
where cie.getFile().isSourceFile()
select cie, cie.getConstructedType(), cie.getConstructor(), cie.getATypeArgument()