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

Skip to content

Commit e16a135

Browse files
smowtonigfoo
authored andcommitted
Add inner generic class test
1 parent 0a4f97b commit e16a135

5 files changed

Lines changed: 137 additions & 0 deletions

File tree

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package testuser
2+
3+
class User {
4+
5+
fun test() {
6+
7+
val a = OuterGeneric<Int>().InnerGeneric<String>("hello")
8+
val a2 = OuterGeneric<Int>().InnerGeneric("hello")
9+
val b = OuterGeneric<Int>().InnerNotGeneric()
10+
val c = OuterNotGeneric().InnerGeneric<String>()
11+
12+
val result1 = a.returnsecond(0, "hello")
13+
val result2 = b.identity(5)
14+
val result3 = c.identity("world")
15+
16+
}
17+
18+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package testuser
2+
3+
public class OuterGeneric<T> {
4+
5+
public inner class InnerNotGeneric {
6+
7+
fun identity(t: T): T { return t }
8+
9+
}
10+
11+
public inner class InnerGeneric<S> {
12+
13+
constructor() { }
14+
15+
constructor(s: S) { }
16+
17+
fun returnsecond(t: T, s: S): S { return s; }
18+
19+
}
20+
21+
}
22+
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package testuser
2+
3+
public class OuterNotGeneric {
4+
5+
public inner class InnerGeneric<S> {
6+
7+
fun identity(s: S): S { return s }
8+
9+
}
10+
11+
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
callArgs
2+
| KotlinUser.kt:7:13:7:31 | new OuterGeneric<Integer>(...) | KotlinUser.kt:7:13:7:31 | OuterGeneric<Integer> | -3 |
3+
| KotlinUser.kt:7:33:7:61 | new InnerGeneric<String>(...) | KotlinUser.kt:7:13:7:31 | new OuterGeneric<Integer>(...) | -2 |
4+
| KotlinUser.kt:7:33:7:61 | new InnerGeneric<String>(...) | KotlinUser.kt:7:33:7:61 | InnerGeneric<String> | -3 |
5+
| KotlinUser.kt:7:33:7:61 | new InnerGeneric<String>(...) | KotlinUser.kt:7:55:7:59 | hello | 0 |
6+
| KotlinUser.kt:8:14:8:32 | new OuterGeneric<Integer>(...) | KotlinUser.kt:8:14:8:32 | OuterGeneric<Integer> | -3 |
7+
| KotlinUser.kt:8:34:8:54 | new InnerGeneric<String>(...) | KotlinUser.kt:8:14:8:32 | new OuterGeneric<Integer>(...) | -2 |
8+
| KotlinUser.kt:8:34:8:54 | new InnerGeneric<String>(...) | KotlinUser.kt:8:34:8:54 | InnerGeneric<String> | -3 |
9+
| KotlinUser.kt:8:34:8:54 | new InnerGeneric<String>(...) | KotlinUser.kt:8:48:8:52 | hello | 0 |
10+
| KotlinUser.kt:9:13:9:31 | new OuterGeneric<Integer>(...) | KotlinUser.kt:9:13:9:31 | OuterGeneric<Integer> | -3 |
11+
| KotlinUser.kt:9:33:9:49 | new InnerNotGeneric(...) | KotlinUser.kt:9:13:9:31 | new OuterGeneric<Integer>(...) | -2 |
12+
| KotlinUser.kt:9:33:9:49 | new InnerNotGeneric(...) | KotlinUser.kt:9:33:9:49 | InnerNotGeneric | -3 |
13+
| KotlinUser.kt:10:13:10:29 | new OuterNotGeneric(...) | KotlinUser.kt:10:13:10:29 | OuterNotGeneric | -3 |
14+
| KotlinUser.kt:10:31:10:52 | new InnerGeneric<String>(...) | KotlinUser.kt:10:13:10:29 | new OuterNotGeneric(...) | -2 |
15+
| KotlinUser.kt:10:31:10:52 | new InnerGeneric<String>(...) | KotlinUser.kt:10:31:10:52 | InnerGeneric<String> | -3 |
16+
| KotlinUser.kt:12:21:12:44 | returnsecond(...) | KotlinUser.kt:12:19:12:19 | a | -1 |
17+
| KotlinUser.kt:12:21:12:44 | returnsecond(...) | KotlinUser.kt:12:34:12:34 | 0 | 0 |
18+
| KotlinUser.kt:12:21:12:44 | returnsecond(...) | KotlinUser.kt:12:38:12:42 | hello | 1 |
19+
| KotlinUser.kt:13:21:13:31 | identity(...) | KotlinUser.kt:13:19:13:19 | b | -1 |
20+
| KotlinUser.kt:13:21:13:31 | identity(...) | KotlinUser.kt:13:30:13:30 | 5 | 0 |
21+
| KotlinUser.kt:14:21:14:37 | identity(...) | KotlinUser.kt:14:19:14:19 | c | -1 |
22+
| KotlinUser.kt:14:21:14:37 | identity(...) | KotlinUser.kt:14:31:14:35 | world | 0 |
23+
genericTypes
24+
| OuterGeneric.kt:3:1:21:1 | OuterGeneric | OuterGeneric.kt:3:27:3:27 | T |
25+
| OuterGeneric.kt:11:3:19:3 | InnerGeneric | OuterGeneric.kt:11:35:11:35 | S |
26+
| OuterNotGeneric.kt:5:3:9:3 | InnerGeneric | OuterNotGeneric.kt:5:35:5:35 | S |
27+
paramTypes
28+
| OuterGeneric.kt:3:1:21:1 | OuterGeneric | T |
29+
| OuterGeneric.kt:3:1:21:1 | OuterGeneric<Integer> | Integer |
30+
| OuterGeneric.kt:11:3:19:3 | InnerGeneric | S |
31+
| OuterGeneric.kt:11:3:19:3 | InnerGeneric<String> | String |
32+
| OuterNotGeneric.kt:5:3:9:3 | InnerGeneric | S |
33+
| OuterNotGeneric.kt:5:3:9:3 | InnerGeneric<String> | String |
34+
constructors
35+
| KotlinUser.kt:3:1:18:1 | User |
36+
| OuterGeneric.kt:3:8:21:1 | OuterGeneric |
37+
| OuterGeneric.kt:3:8:21:1 | OuterGeneric<Integer> |
38+
| OuterGeneric.kt:5:16:9:3 | InnerNotGeneric |
39+
| OuterGeneric.kt:13:5:13:21 | InnerGeneric |
40+
| OuterGeneric.kt:13:5:13:21 | InnerGeneric<String> |
41+
| OuterGeneric.kt:15:5:15:25 | InnerGeneric |
42+
| OuterGeneric.kt:15:5:15:25 | InnerGeneric<String> |
43+
| OuterNotGeneric.kt:3:8:11:1 | OuterNotGeneric |
44+
| OuterNotGeneric.kt:5:16:9:3 | InnerGeneric |
45+
| OuterNotGeneric.kt:5:16:9:3 | InnerGeneric<String> |
46+
nestedTypes
47+
| OuterGeneric.kt:5:3:9:3 | InnerNotGeneric | OuterGeneric.kt:3:1:21:1 | OuterGeneric |
48+
| OuterGeneric.kt:11:3:19:3 | InnerGeneric | OuterGeneric.kt:3:1:21:1 | OuterGeneric |
49+
| OuterGeneric.kt:11:3:19:3 | InnerGeneric<String> | OuterGeneric.kt:3:1:21:1 | OuterGeneric<Integer> |
50+
| OuterNotGeneric.kt:5:3:9:3 | InnerGeneric | OuterNotGeneric.kt:3:1:11:1 | OuterNotGeneric |
51+
| OuterNotGeneric.kt:5:3:9:3 | InnerGeneric<String> | OuterNotGeneric.kt:3:1:11:1 | OuterNotGeneric |
52+
#select
53+
| KotlinUser.kt:7:13:7:31 | new OuterGeneric<Integer>(...) | OuterGeneric.kt:3:1:21:1 | OuterGeneric<Integer> | OuterGeneric.kt:3:8:21:1 | OuterGeneric<Integer> | KotlinUser.kt:7:13:7:31 | Integer |
54+
| KotlinUser.kt:7:33:7:61 | new InnerGeneric<String>(...) | OuterGeneric.kt:11:3:19:3 | InnerGeneric<String> | OuterGeneric.kt:15:5:15:25 | InnerGeneric<String> | KotlinUser.kt:7:33:7:61 | String |
55+
| KotlinUser.kt:8:14:8:32 | new OuterGeneric<Integer>(...) | OuterGeneric.kt:3:1:21:1 | OuterGeneric<Integer> | OuterGeneric.kt:3:8:21:1 | OuterGeneric<Integer> | KotlinUser.kt:8:14:8:32 | Integer |
56+
| KotlinUser.kt:8:34:8:54 | new InnerGeneric<String>(...) | OuterGeneric.kt:11:3:19:3 | InnerGeneric<String> | OuterGeneric.kt:15:5:15:25 | InnerGeneric<String> | KotlinUser.kt:8:34:8:54 | String |
57+
| KotlinUser.kt:9:13:9:31 | new OuterGeneric<Integer>(...) | OuterGeneric.kt:3:1:21:1 | OuterGeneric<Integer> | OuterGeneric.kt:3:8:21:1 | OuterGeneric<Integer> | KotlinUser.kt:9:13:9:31 | Integer |
58+
| KotlinUser.kt:10:31:10:52 | new InnerGeneric<String>(...) | OuterNotGeneric.kt:5:3:9:3 | InnerGeneric<String> | OuterNotGeneric.kt:5:16:9:3 | InnerGeneric<String> | KotlinUser.kt:10:31:10:52 | String |
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import java
2+
3+
query predicate callArgs(Call gc, Expr arg, int idx) {
4+
arg.getParent() = gc and idx = arg.getIndex()
5+
}
6+
7+
query predicate genericTypes(GenericType rt, TypeVariable param) {
8+
rt.getPackage().getName() = "testuser" and
9+
param = rt.getATypeParameter()
10+
}
11+
12+
query predicate paramTypes(ParameterizedType rt, string typeArg) {
13+
rt.getPackage().getName() = "testuser" and
14+
typeArg = rt.getATypeArgument().toString()
15+
}
16+
17+
query predicate constructors(Constructor c) {
18+
c.getDeclaringType().getPackage().getName() = "testuser"
19+
}
20+
21+
query predicate nestedTypes(NestedType nt, RefType parent) {
22+
nt.getPackage().getName() = "testuser" and
23+
parent = nt.getEnclosingType()
24+
}
25+
26+
from ClassInstanceExpr cie
27+
where cie.getFile().isSourceFile()
28+
select cie, cie.getConstructedType(), cie.getConstructor(), cie.getATypeArgument()

0 commit comments

Comments
 (0)