Add test for inconsistent generic instantiation locations

This commit is contained in:
Tamas Vajk
2022-01-12 13:53:13 +01:00
committed by Ian Lynagh
parent 49bf53da5d
commit 53f484cd98
4 changed files with 66 additions and 0 deletions

View 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>();
}
}

View File

@@ -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>()
}
}

View File

@@ -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 |

View File

@@ -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)
)
}