Extract generic type parameters as reference types even for primitive Kotlin types + add simplified array extraction

This commit is contained in:
Tamas Vajk
2021-10-08 16:30:03 +02:00
committed by Ian Lynagh
parent b542769fe9
commit 85e713fa31
5 changed files with 72 additions and 70 deletions

View File

@@ -1,5 +0,0 @@
[VALUE_NOT_IN_TYPE] predicate typeArgs(@reftype argumentid, int pos, @typeorcallable parentid): Value 55 of field argumentid is not in type @reftype. The value is however in the following types: @primitive. Appears in tuple (55,0,189)
Relevant element: argumentid=55
Full ID for 55: @"type;boolean"
Relevant element: parentid=189
Full ID for 189: @"class;kotlin.reflect.KClass;(55)". The ID may expand to @"class;kotlin.reflect.KClass;{@"type;boolean"}"

View File

@@ -1,31 +0,0 @@
[VALUE_NOT_IN_TYPE] predicate typeArgs(@reftype argumentid, int pos, @typeorcallable parentid): Value 12 of field argumentid is not in type @reftype. The value is however in the following types: @primitive. Appears in tuple (12,0,135)
Relevant element: argumentid=12
Full ID for 12: @"type;int"
Relevant element: parentid=135
Full ID for 135: @"class;foo.bar.C1;(12);(12)". The ID may expand to @"class;foo.bar.C1;{@"type;int"};{@"type;int"}"
[VALUE_NOT_IN_TYPE] predicate typeArgs(@reftype argumentid, int pos, @typeorcallable parentid): Value 12 of field argumentid is not in type @reftype. The value is however in the following types: @primitive. Appears in tuple (12,0,206)
Relevant element: argumentid=12
Full ID for 12: @"type;int"
Relevant element: parentid=206
Full ID for 206: @"class;foo.bar.C0;(12)". The ID may expand to @"class;foo.bar.C0;{@"type;int"}"
[VALUE_NOT_IN_TYPE] predicate typeArgs(@reftype argumentid, int pos, @typeorcallable parentid): Value 12 of field argumentid is not in type @reftype. The value is however in the following types: @primitive. Appears in tuple (12,1,135)
Relevant element: argumentid=12
Full ID for 12: @"type;int"
Relevant element: parentid=135
Full ID for 135: @"class;foo.bar.C1;(12);(12)". The ID may expand to @"class;foo.bar.C1;{@"type;int"};{@"type;int"}"
[VALUE_NOT_IN_TYPE] predicate typeArgs(@reftype argumentid, int pos, @typeorcallable parentid): Value 12 of field argumentid is not in type @reftype. The value is however in the following types: @primitive. Appears in tuple (12,1,163)
Relevant element: argumentid=12
Full ID for 12: @"type;int"
Relevant element: parentid=163
Full ID for 163: @"class;foo.bar.C1;(14);(12)". The ID may expand to @"class;foo.bar.C1;{@"type;string"};{@"type;int"}"
[VALUE_NOT_IN_TYPE] predicate typeArgs(@reftype argumentid, int pos, @typeorcallable parentid): Value 14 of field argumentid is not in type @reftype. The value is however in the following types: @primitive. Appears in tuple (14,0,152)
Relevant element: argumentid=14
Full ID for 14: @"type;string"
Relevant element: parentid=152
Full ID for 152: @"class;foo.bar.C1;(14);(14)". The ID may expand to @"class;foo.bar.C1;{@"type;string"};{@"type;string"}"
[VALUE_NOT_IN_TYPE] predicate typeArgs(@reftype argumentid, int pos, @typeorcallable parentid): Value 14 of field argumentid is not in type @reftype. The value is however in the following types: @primitive. Appears in tuple (14,0,163)
Relevant element: argumentid=14
Full ID for 14: @"type;string"
Relevant element: parentid=163
Full ID for 163: @"class;foo.bar.C1;(14);(12)". The ID may expand to @"class;foo.bar.C1;{@"type;string"};{@"type;int"}"
[VALUE_NOT_IN_TYPE] predicate typeArgs(@reftype argumentid, int pos, @typeorcallable parentid): More errors, not displayed. There are 7 values of field argumentid that are not in type @reftype for a relation of size 12

View File

@@ -4,18 +4,18 @@ genericType
| generics.kt:13:1:18:1 | C1 | generics.kt:13:13:13:13 | W | 1 |
parameterizedType
| generics.kt:11:1:11:19 | C0 | generics.kt:11:1:11:19 | C0 | 0 | file://:0:0:0:0 | * |
| generics.kt:11:1:11:19 | C0 | generics.kt:11:1:11:19 | C0 | 0 | file://:0:0:0:0 | int |
| generics.kt:11:1:11:19 | C0 | generics.kt:11:1:11:19 | C0 | 0 | file://:0:0:0:0 | Int |
| generics.kt:11:1:11:19 | C0 | generics.kt:11:1:11:19 | C0 | 0 | generics.kt:7:6:7:6 | S |
| generics.kt:11:1:11:19 | C0 | generics.kt:11:1:11:19 | C0 | 0 | generics.kt:11:15:11:15 | V |
| generics.kt:11:1:11:19 | C0 | generics.kt:11:1:11:19 | C0 | 0 | generics.kt:13:13:13:13 | W |
| generics.kt:13:1:18:1 | C1 | generics.kt:13:1:18:1 | C1 | 0 | file://:0:0:0:0 | int |
| generics.kt:13:1:18:1 | C1 | generics.kt:13:1:18:1 | C1 | 0 | file://:0:0:0:0 | string |
| generics.kt:13:1:18:1 | C1 | generics.kt:13:1:18:1 | C1 | 0 | file://:0:0:0:0 | string |
| generics.kt:13:1:18:1 | C1 | generics.kt:13:1:18:1 | C1 | 0 | file://:0:0:0:0 | Int |
| generics.kt:13:1:18:1 | C1 | generics.kt:13:1:18:1 | C1 | 0 | file://:0:0:0:0 | String |
| generics.kt:13:1:18:1 | C1 | generics.kt:13:1:18:1 | C1 | 0 | file://:0:0:0:0 | String |
| generics.kt:13:1:18:1 | C1 | generics.kt:13:1:18:1 | C1 | 0 | generics.kt:13:10:13:10 | T |
| generics.kt:13:1:18:1 | C1 | generics.kt:13:1:18:1 | C1 | 0 | generics.kt:15:10:15:10 | U |
| generics.kt:13:1:18:1 | C1 | generics.kt:13:1:18:1 | C1 | 1 | file://:0:0:0:0 | int |
| generics.kt:13:1:18:1 | C1 | generics.kt:13:1:18:1 | C1 | 1 | file://:0:0:0:0 | int |
| generics.kt:13:1:18:1 | C1 | generics.kt:13:1:18:1 | C1 | 1 | file://:0:0:0:0 | string |
| generics.kt:13:1:18:1 | C1 | generics.kt:13:1:18:1 | C1 | 1 | file://:0:0:0:0 | Int |
| generics.kt:13:1:18:1 | C1 | generics.kt:13:1:18:1 | C1 | 1 | file://:0:0:0:0 | Int |
| generics.kt:13:1:18:1 | C1 | generics.kt:13:1:18:1 | C1 | 1 | file://:0:0:0:0 | String |
| generics.kt:13:1:18:1 | C1 | generics.kt:13:1:18:1 | C1 | 1 | generics.kt:13:13:13:13 | W |
| generics.kt:13:1:18:1 | C1 | generics.kt:13:1:18:1 | C1 | 1 | generics.kt:15:10:15:10 | U |
genericFunction

View File

@@ -1,14 +1,18 @@
import java
query predicate genericType(GenericType t, TypeVariable tv, int i) { t.getTypeParameter(i) = tv }
query predicate genericType(GenericType t, TypeVariable tv, int i) {
t.getTypeParameter(i) = tv and t.getFile().getExtension() = "kt"
}
query predicate parameterizedType(ParameterizedType t, GenericType gt, int i, RefType ta) {
t.getGenericType() = gt and
t.getTypeArgument(i) = ta
t.getTypeArgument(i) = ta and
t.getFile().getExtension() = "kt"
}
query predicate genericFunction(GenericCallable c, TypeVariable tv, int i) {
c.getTypeParameter(i) = tv
c.getTypeParameter(i) = tv and
c.getFile().getExtension() = "kt"
}
query predicate genericCall(GenericCall c, TypeVariable tv, Type t) { c.getATypeArgument(tv) = t }