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

Skip to content

Commit 936c29b

Browse files
tamasvajkigfoo
authored andcommitted
Handle star type argument
1 parent 8dff527 commit 936c29b

5 files changed

Lines changed: 16 additions & 9 deletions

File tree

java/kotlin-extractor/src/main/kotlin/KotlinExtractorExtension.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -342,9 +342,11 @@ class KotlinFileExtractor(val logger: FileLogger, val tw: FileTrapWriter, val fi
342342
): Label<out DbReftype> {
343343
when (arg) {
344344
is IrStarProjection -> {
345-
// todo handle this
346-
logger.warnElement(Severity.ErrorSevere, "Star is not yet handled.", reportOn)
347-
return fakeLabel()
345+
val wildcardLabel = "@\"wildcard;\""
346+
val wildcardId: Label<DbWildcard> = tw.getLabelFor(wildcardLabel)
347+
tw.writeWildcards(wildcardId, "*", 1)
348+
tw.writeHasLocation(wildcardId, tw.getLocation(-1, -1))
349+
return wildcardId
348350
}
349351
is IrTypeProjection -> {
350352
return useType(arg.type) as Label<out DbReftype>

java/ql/test/kotlin/library-tests/generics/DB-CHECK.expected

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,11 @@
33
Full ID for 11: @"type;int"
44
Relevant element: parentid=132
55
Full ID for 132: @"class;foo.bar.C1;(11);(11)". The ID may expand to @"class;foo.bar.C1;{@"type;int"};{@"type;int"}"
6+
[VALUE_NOT_IN_TYPE] predicate typeArgs(@reftype argumentid, int pos, @typeorcallable parentid): Value 11 of field argumentid is not in type @reftype. The value is however in the following types: @primitive. Appears in tuple (11,0,197)
7+
Relevant element: argumentid=11
8+
Full ID for 11: @"type;int"
9+
Relevant element: parentid=197
10+
Full ID for 197: @"class;foo.bar.C0;(11)". The ID may expand to @"class;foo.bar.C0;{@"type;int"}"
611
[VALUE_NOT_IN_TYPE] predicate typeArgs(@reftype argumentid, int pos, @typeorcallable parentid): Value 11 of field argumentid is not in type @reftype. The value is however in the following types: @primitive. Appears in tuple (11,1,132)
712
Relevant element: argumentid=11
813
Full ID for 11: @"type;int"
@@ -23,8 +28,4 @@
2328
Full ID for 13: @"type;string"
2429
Relevant element: parentid=157
2530
Full ID for 157: @"class;foo.bar.C1;(13);(11)". The ID may expand to @"class;foo.bar.C1;{@"type;string"};{@"type;int"}"
26-
[VALUE_NOT_IN_TYPE] predicate typeArgs(@reftype argumentid, int pos, @typeorcallable parentid): Value 13 of field argumentid is not in type @reftype. The value is however in the following types: @primitive. Appears in tuple (13,1,146)
27-
Relevant element: argumentid=13
28-
Full ID for 13: @"type;string"
29-
Relevant element: parentid=146
30-
Full ID for 146: @"class;foo.bar.C1;(13);(13)". The ID may expand to @"class;foo.bar.C1;{@"type;string"};{@"type;string"}"
31+
[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

java/ql/test/kotlin/library-tests/generics/generics.expected

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ genericType
33
| generics.kt:13:1:18:1 | C1 | generics.kt:13:10:13:10 | T | 0 |
44
| generics.kt:13:1:18:1 | C1 | generics.kt:13:13:13:13 | W | 1 |
55
parameterizedType
6+
| generics.kt:11:1:11:19 | C0 | generics.kt:11:1:11:19 | C0 | 0 | file://:0:0:0:0 | * |
7+
| generics.kt:11:1:11:19 | C0 | generics.kt:11:1:11:19 | C0 | 0 | file://:0:0:0:0 | int |
68
| generics.kt:11:1:11:19 | C0 | generics.kt:11:1:11:19 | C0 | 0 | generics.kt:7:6:7:6 | S |
79
| generics.kt:11:1:11:19 | C0 | generics.kt:11:1:11:19 | C0 | 0 | generics.kt:11:15:11:15 | V |
810
| generics.kt:11:1:11:19 | C0 | generics.kt:11:1:11:19 | C0 | 0 | generics.kt:13:13:13:13 | W |

java/ql/test/kotlin/library-tests/generics/generics.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,5 @@ fun m() {
3030
val x2 = c2.f2(3)
3131
val c3 = C2()
3232
c3.f4(5)
33+
val c4: C0<*> = C0<Int>()
3334
}

java/ql/test/kotlin/library-tests/generics/generics.ql

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,8 @@ import java
33
query predicate genericType(GenericType t, TypeVariable tv, int i) { t.getTypeParameter(i) = tv }
44

55
query predicate parameterizedType(ParameterizedType t, GenericType gt, int i, RefType ta) {
6-
t.getGenericType() = gt and t.getTypeArgument(i) = ta
6+
t.getGenericType() = gt and
7+
t.getTypeArgument(i) = ta
78
}
89

910
query predicate genericFunction(GenericCallable c, TypeVariable tv, int i) {

0 commit comments

Comments
 (0)