Implement Java signature extraction

This commit is contained in:
Chris Smowton
2021-11-19 12:59:44 +00:00
committed by Ian Lynagh
parent 6391484692
commit ccf21b7183
10 changed files with 135 additions and 59 deletions

View File

@@ -3,6 +3,13 @@ cloneMethods
| file://:0:0:0:0 | clone | clone() | file://:0:0:0:0 | Integer[][] | file://:0:0:0:0 | Integer[][] | file://:0:0:0:0 | Kotlin nullable Array<Integer[]> |
| file://:0:0:0:0 | clone | clone() | file://:0:0:0:0 | int[] | file://:0:0:0:0 | int[] | file://:0:0:0:0 | Kotlin nullable IntArray |
| file://:0:0:0:0 | clone | clone() | file://:0:0:0:0 | int[][] | file://:0:0:0:0 | int[][] | file://:0:0:0:0 | Kotlin nullable Array<int[]> |
sourceSignatures
| primitiveArrays.kt:3:1:7:1 | <obinit> | <obinit>() |
| primitiveArrays.kt:3:1:7:1 | Test | Test() |
| primitiveArrays.kt:3:1:7:1 | equals | equals(java.lang.Object) |
| primitiveArrays.kt:3:1:7:1 | hashCode | hashCode() |
| primitiveArrays.kt:3:1:7:1 | toString | toString() |
| primitiveArrays.kt:5:3:5:123 | test | test(java.lang.Integer[],java.lang.Integer[],int[],java.lang.Integer[][],java.lang.Integer[][],int[][]) |
#select
| primitiveArrays.kt:5:12:5:24 | a | file://:0:0:0:0 | Integer[] | Integer | Integer | file://:0:0:0:0 | Kotlin not-null Array<Integer> |
| primitiveArrays.kt:5:27:5:40 | b | file://:0:0:0:0 | Integer[] | Integer | Integer | file://:0:0:0:0 | Kotlin not-null Array<Integer> |

View File

@@ -17,3 +17,7 @@ query predicate cloneMethods(Method m, string signature, Array declType, Type re
returnType = m.getReturnType() and
ktReturnType = m.getReturnKotlinType()
}
query predicate sourceSignatures(Callable c, string signature) {
c.getSignature() = signature and c.fromSource()
}

View File

@@ -2,6 +2,8 @@ genericType
| generics.kt:11:1:11:19 | C0 | generics.kt:11:15:11:15 | V | 0 |
| generics.kt:13:1:18:1 | C1 | generics.kt:13:10:13:10 | T | 0 |
| generics.kt:13:1:18:1 | C1 | generics.kt:13:13:13:13 | W | 1 |
| generics.kt:36:1:40:1 | BoundedTest | generics.kt:36:19:36:34 | T | 0 |
| generics.kt:36:1:40:1 | BoundedTest | generics.kt:36:37:36:41 | S | 1 |
parameterizedType
| generics.kt:11:1:11:19 | C0 | generics.kt:11:1:11:19 | C0 | 0 | V |
| generics.kt:11:1:11:19 | C0<?> | generics.kt:11:1:11:19 | C0 | 0 | ? |
@@ -18,6 +20,37 @@ parameterizedType
| generics.kt:13:1:18:1 | C1<String,String> | generics.kt:13:1:18:1 | C1 | 1 | String |
| generics.kt:13:1:18:1 | C1<U,U> | generics.kt:13:1:18:1 | C1 | 0 | U |
| generics.kt:13:1:18:1 | C1<U,U> | generics.kt:13:1:18:1 | C1 | 1 | U |
| generics.kt:36:1:40:1 | BoundedTest | generics.kt:36:1:40:1 | BoundedTest | 0 | T |
| generics.kt:36:1:40:1 | BoundedTest | generics.kt:36:1:40:1 | BoundedTest | 1 | S |
function
| generics.kt:3:1:5:1 | f0 | f0(java.lang.Object) |
| generics.kt:7:1:9:1 | f1 | f1(java.lang.Object) |
| generics.kt:11:1:11:19 | <obinit> | <obinit>() |
| generics.kt:11:6:11:19 | C0 | C0() |
| generics.kt:11:6:11:19 | equals | equals(java.lang.Object) |
| generics.kt:11:6:11:19 | hashCode | hashCode() |
| generics.kt:11:6:11:19 | toString | toString() |
| generics.kt:13:1:18:1 | <obinit> | <obinit>() |
| generics.kt:13:1:18:1 | C1 | C1(java.lang.Object) |
| generics.kt:13:1:18:1 | equals | equals(java.lang.Object) |
| generics.kt:13:1:18:1 | hashCode | hashCode() |
| generics.kt:13:1:18:1 | toString | toString() |
| generics.kt:13:16:13:23 | <get-t> | <get-t>() |
| generics.kt:14:5:14:19 | f1 | f1(java.lang.Object) |
| generics.kt:15:5:17:5 | f2 | f2(java.lang.Object) |
| generics.kt:20:1:22:1 | <obinit> | <obinit>() |
| generics.kt:20:1:22:1 | C2 | C2() |
| generics.kt:20:1:22:1 | equals | equals(java.lang.Object) |
| generics.kt:20:1:22:1 | hashCode | hashCode() |
| generics.kt:20:1:22:1 | toString | toString() |
| generics.kt:21:5:21:23 | f4 | f4(java.lang.Object) |
| generics.kt:24:1:34:1 | m | m() |
| generics.kt:36:1:40:1 | <obinit> | <obinit>() |
| generics.kt:36:1:40:1 | BoundedTest | BoundedTest() |
| generics.kt:36:1:40:1 | equals | equals(java.lang.Object) |
| generics.kt:36:1:40:1 | hashCode | hashCode() |
| generics.kt:36:1:40:1 | toString | toString() |
| generics.kt:38:5:38:25 | m | m(java.lang.CharSequence,java.lang.CharSequence) |
genericFunction
| generics.kt:3:1:5:1 | f0 | generics.kt:3:6:3:6 | S | 0 |
| generics.kt:7:1:9:1 | f1 | generics.kt:7:6:7:6 | S | 0 |

View File

@@ -31,4 +31,10 @@ fun m() {
val c3 = C2()
c3.f4(5)
val c4: C0<*> = C0<Int>()
}
}
class BoundedTest<T : CharSequence, S : T> {
fun m(s: S, t: T) { }
}

View File

@@ -10,6 +10,11 @@ query predicate parameterizedType(ParameterizedType t, GenericType gt, int i, st
t.getFile().getExtension() = "kt"
}
query predicate function(Callable c, string signature) {
signature = c.getSignature() and
c.getFile().getExtension() = "kt"
}
query predicate genericFunction(GenericCallable c, TypeVariable tv, int i) {
c.getTypeParameter(i) = tv and
c.getFile().getExtension() = "kt"

View File

@@ -1,5 +1,7 @@
| methods2.kt:7:1:10:1 | <obinit>(...) | MethodAccess |
| methods3.kt:5:1:7:1 | <obinit>(...) | MethodAccess |
| methods4.kt:3:1:11:1 | <obinit>(...) | MethodAccess |
| methods4.kt:5:3:9:3 | <obinit>(...) | MethodAccess |
| methods.kt:5:1:13:1 | <obinit>(...) | MethodAccess |
| methods.kt:10:9:10:25 | classMethod(...) | MethodAccess |
| methods.kt:10:9:10:25 | this | ThisAccess |

View File

@@ -1,27 +1,38 @@
methods
| methods2.kt:4:1:5:1 | fooBarTopLevelMethod |
| methods2.kt:7:1:10:1 | <obinit> |
| methods2.kt:7:1:10:1 | equals |
| methods2.kt:7:1:10:1 | hashCode |
| methods2.kt:7:1:10:1 | toString |
| methods2.kt:8:5:9:5 | fooBarClassMethod |
| methods3.kt:3:1:3:39 | fooBarTopLevelMethod |
| methods3.kt:5:1:7:1 | <obinit> |
| methods3.kt:5:1:7:1 | equals |
| methods3.kt:5:1:7:1 | hashCode |
| methods3.kt:5:1:7:1 | toString |
| methods3.kt:6:5:6:43 | fooBarTopLevelMethod |
| methods.kt:2:1:3:1 | topLevelMethod |
| methods.kt:5:1:13:1 | <obinit> |
| methods.kt:5:1:13:1 | equals |
| methods.kt:5:1:13:1 | hashCode |
| methods.kt:5:1:13:1 | toString |
| methods.kt:6:5:7:5 | classMethod |
| methods.kt:9:5:12:5 | anotherClassMethod |
| methods2.kt:4:1:5:1 | fooBarTopLevelMethod | fooBarTopLevelMethod(int,int) |
| methods2.kt:7:1:10:1 | <obinit> | <obinit>() |
| methods2.kt:7:1:10:1 | equals | equals(java.lang.Object) |
| methods2.kt:7:1:10:1 | hashCode | hashCode() |
| methods2.kt:7:1:10:1 | toString | toString() |
| methods2.kt:8:5:9:5 | fooBarClassMethod | fooBarClassMethod(int,int) |
| methods3.kt:3:1:3:39 | fooBarTopLevelMethod | fooBarTopLevelMethod(int) |
| methods3.kt:5:1:7:1 | <obinit> | <obinit>() |
| methods3.kt:5:1:7:1 | equals | equals(java.lang.Object) |
| methods3.kt:5:1:7:1 | hashCode | hashCode() |
| methods3.kt:5:1:7:1 | toString | toString() |
| methods3.kt:6:5:6:43 | fooBarTopLevelMethod | fooBarTopLevelMethod(int) |
| methods4.kt:3:1:11:1 | <obinit> | <obinit>() |
| methods4.kt:3:1:11:1 | equals | equals(java.lang.Object) |
| methods4.kt:3:1:11:1 | hashCode | hashCode() |
| methods4.kt:3:1:11:1 | toString | toString() |
| methods4.kt:5:3:9:3 | <obinit> | <obinit>() |
| methods4.kt:5:3:9:3 | equals | equals(java.lang.Object) |
| methods4.kt:5:3:9:3 | hashCode | hashCode() |
| methods4.kt:5:3:9:3 | toString | toString() |
| methods4.kt:7:5:7:34 | m | m(foo.bar.NestedTest.InsideNestedTest) |
| methods.kt:2:1:3:1 | topLevelMethod | topLevelMethod(int,int) |
| methods.kt:5:1:13:1 | <obinit> | <obinit>() |
| methods.kt:5:1:13:1 | equals | equals(java.lang.Object) |
| methods.kt:5:1:13:1 | hashCode | hashCode() |
| methods.kt:5:1:13:1 | toString | toString() |
| methods.kt:6:5:7:5 | classMethod | classMethod(int,int) |
| methods.kt:9:5:12:5 | anotherClassMethod | anotherClassMethod(int,int) |
constructors
| methods2.kt:7:1:10:1 | Class2 |
| methods3.kt:5:1:7:1 | Class3 |
| methods.kt:5:1:13:1 | Class |
| methods2.kt:7:1:10:1 | Class2 | Class2() |
| methods3.kt:5:1:7:1 | Class3 | Class3() |
| methods4.kt:3:1:11:1 | NestedTest | NestedTest() |
| methods4.kt:5:3:9:3 | InsideNestedTest | InsideNestedTest() |
| methods.kt:5:1:13:1 | Class | Class() |
extensions
| methods3.kt:3:1:3:39 | fooBarTopLevelMethod | file://:0:0:0:0 | int |
| methods3.kt:6:5:6:43 | fooBarTopLevelMethod | file://:0:0:0:0 | int |

View File

@@ -1,7 +1,7 @@
import java
query predicate methods(Method m) { m.fromSource() }
query predicate methods(Method m, string signature) { m.fromSource() and signature = m.getSignature() }
query predicate constructors(Constructor c) { c.fromSource() }
query predicate constructors(Constructor c, string signature) { c.fromSource() and signature = c.getSignature() }
query predicate extensions(ExtensionMethod m, Type t) { m.getExtendedType() = t and m.fromSource() }

View File

@@ -6,6 +6,9 @@
| methods3.kt:3:1:3:39 | fooBarTopLevelMethod | methods3.kt:3:30:3:35 | x | 0 |
| methods3.kt:5:1:7:1 | equals | methods3.kt:5:1:7:1 | other | 0 |
| methods3.kt:6:5:6:43 | fooBarTopLevelMethod | methods3.kt:6:34:6:39 | x | 0 |
| methods4.kt:3:1:11:1 | equals | methods4.kt:3:1:11:1 | other | 0 |
| methods4.kt:5:3:9:3 | equals | methods4.kt:5:3:9:3 | other | 0 |
| methods4.kt:7:5:7:34 | m | methods4.kt:7:11:7:29 | x | 0 |
| methods.kt:2:1:3:1 | topLevelMethod | methods.kt:2:20:2:25 | x | 0 |
| methods.kt:2:1:3:1 | topLevelMethod | methods.kt:2:28:2:33 | y | 1 |
| methods.kt:5:1:13:1 | equals | methods.kt:5:1:13:1 | other | 0 |