mirror of
https://github.com/github/codeql.git
synced 2026-05-01 19:55:15 +02:00
Add test for inconsistent generic instantiation locations
This commit is contained in:
11
java/ql/test/kotlin/library-tests/generics-location/A.java
Normal file
11
java/ql/test/kotlin/library-tests/generics-location/A.java
Normal file
@@ -0,0 +1,11 @@
|
||||
package main;
|
||||
|
||||
public class A<T> {
|
||||
public void fn() {
|
||||
A<String> a0 = new A<String>();
|
||||
A<Integer> a1 = new A<Integer>();
|
||||
|
||||
B<String> b0 = new B<String>();
|
||||
B<Integer> b1 = new B<Integer>();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
package main
|
||||
|
||||
class B<T> {
|
||||
fun fn() {
|
||||
val a0 = A<String>()
|
||||
val a1 = A<Any>()
|
||||
|
||||
val b0 = B<String>()
|
||||
val b1 = B<Any>()
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
classLocations
|
||||
| main.A | A.java:3:14:3:14 | A.java:3:14:3:14 |
|
||||
| main.A | file:///!unknown-binary-location/main/A.class:0:0:0:0 | file:///!unknown-binary-location/main/A.class:0:0:0:0 |
|
||||
| main.A<Integer> | A.class:0:0:0:0 | A.class:0:0:0:0 |
|
||||
| main.A<Object> | file:///!unknown-binary-location/main/A.class:0:0:0:0 | file:///!unknown-binary-location/main/A.class:0:0:0:0 |
|
||||
| main.A<String> | A.class:0:0:0:0 | A.class:0:0:0:0 |
|
||||
| main.A<String> | file:///!unknown-binary-location/main/A.class:0:0:0:0 | file:///!unknown-binary-location/main/A.class:0:0:0:0 |
|
||||
| main.B | generics-location.testproj/test.class.files/main/B.class:0:0:0:0 | generics-location.testproj/test.class.files/main/B.class:0:0:0:0 |
|
||||
| main.B | generics.kt:3:1:11:1 | generics.kt:3:1:11:1 |
|
||||
| main.B<Integer> | generics-location.testproj/test.class.files/main/B.class:0:0:0:0 | generics-location.testproj/test.class.files/main/B.class:0:0:0:0 |
|
||||
| main.B<Object> | generics.kt:3:1:11:1 | generics.kt:3:1:11:1 |
|
||||
| main.B<String> | generics-location.testproj/test.class.files/main/B.class:0:0:0:0 | generics-location.testproj/test.class.files/main/B.class:0:0:0:0 |
|
||||
| main.B<String> | generics.kt:3:1:11:1 | generics.kt:3:1:11:1 |
|
||||
callableLocations
|
||||
| A.fn | A.class:0:0:0:0 | A.class:0:0:0:0 |
|
||||
| A.fn | A.java:4:17:4:18 | A.java:4:17:4:18 |
|
||||
| A.fn | file:///!unknown-binary-location/main/A.class:0:0:0:0 | file:///!unknown-binary-location/main/A.class:0:0:0:0 |
|
||||
| A<Integer>.fn | A.class:0:0:0:0 | A.class:0:0:0:0 |
|
||||
| A<Object>.fn | file:///!unknown-binary-location/main/A.class:0:0:0:0 | file:///!unknown-binary-location/main/A.class:0:0:0:0 |
|
||||
| A<String>.fn | A.class:0:0:0:0 | A.class:0:0:0:0 |
|
||||
| A<String>.fn | file:///!unknown-binary-location/main/A.class:0:0:0:0 | file:///!unknown-binary-location/main/A.class:0:0:0:0 |
|
||||
| B.fn | generics-location.testproj/test.class.files/main/B.class:0:0:0:0 | generics-location.testproj/test.class.files/main/B.class:0:0:0:0 |
|
||||
| B.fn | generics.kt:4:5:10:5 | generics.kt:4:5:10:5 |
|
||||
| B<Integer>.fn | generics-location.testproj/test.class.files/main/B.class:0:0:0:0 | generics-location.testproj/test.class.files/main/B.class:0:0:0:0 |
|
||||
| B<Object>.fn | generics.kt:4:5:10:5 | generics.kt:4:5:10:5 |
|
||||
| B<String>.fn | generics-location.testproj/test.class.files/main/B.class:0:0:0:0 | generics-location.testproj/test.class.files/main/B.class:0:0:0:0 |
|
||||
| B<String>.fn | generics.kt:4:5:10:5 | generics.kt:4:5:10:5 |
|
||||
@@ -0,0 +1,17 @@
|
||||
import java
|
||||
|
||||
query predicate classLocations(string name, Location location) {
|
||||
exists(Class type |
|
||||
type.getQualifiedName() = name and
|
||||
type.getSourceDeclaration().getName() in ["A", "B"] and
|
||||
hasLocation(type, location)
|
||||
)
|
||||
}
|
||||
|
||||
query predicate callableLocations(string name, Location location) {
|
||||
exists(Callable callable |
|
||||
callable.getQualifiedName() = name and
|
||||
callable.getName() = "fn" and
|
||||
hasLocation(callable, location)
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user