mirror of
https://github.com/github/codeql.git
synced 2026-01-26 04:43:00 +01:00
Merge branch 'main' into patch-1
This commit is contained in:
@@ -881,6 +881,9 @@ open class KotlinFileExtractor(
|
||||
val getterId = extractFunction(getter, parentId, extractBody = extractFunctionBodies, extractMethodAndParameterTypeAccesses = extractFunctionBodies, typeSubstitution, classTypeArgsIncludingOuterClasses)?.cast<DbMethod>()
|
||||
if (getterId != null) {
|
||||
tw.writeKtPropertyGetters(id, getterId)
|
||||
if (getter.origin == IrDeclarationOrigin.DELEGATED_PROPERTY_ACCESSOR) {
|
||||
tw.writeCompiler_generated(getterId, CompilerGeneratedKinds.DELEGATED_PROPERTY_GETTER.kind)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (p.modality != Modality.FINAL || !isExternalDeclaration(p)) {
|
||||
@@ -895,6 +898,9 @@ open class KotlinFileExtractor(
|
||||
val setterId = extractFunction(setter, parentId, extractBody = extractFunctionBodies, extractMethodAndParameterTypeAccesses = extractFunctionBodies, typeSubstitution, classTypeArgsIncludingOuterClasses)?.cast<DbMethod>()
|
||||
if (setterId != null) {
|
||||
tw.writeKtPropertySetters(id, setterId)
|
||||
if (setter.origin == IrDeclarationOrigin.DELEGATED_PROPERTY_ACCESSOR) {
|
||||
tw.writeCompiler_generated(setterId, CompilerGeneratedKinds.DELEGATED_PROPERTY_SETTER.kind)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (p.isVar && !isExternalDeclaration(p)) {
|
||||
@@ -4383,6 +4389,8 @@ open class KotlinFileExtractor(
|
||||
GENERATED_DATA_CLASS_MEMBER(2),
|
||||
DEFAULT_PROPERTY_ACCESSOR(3),
|
||||
CLASS_INITIALISATION_METHOD(4),
|
||||
ENUM_CLASS_SPECIAL_MEMBER(5)
|
||||
ENUM_CLASS_SPECIAL_MEMBER(5),
|
||||
DELEGATED_PROPERTY_GETTER(6),
|
||||
DELEGATED_PROPERTY_SETTER(7),
|
||||
}
|
||||
}
|
||||
|
||||
12
java/ql/test/kotlin/library-tests/methods/delegates.kt
Normal file
12
java/ql/test/kotlin/library-tests/methods/delegates.kt
Normal file
@@ -0,0 +1,12 @@
|
||||
import kotlin.properties.Delegates
|
||||
|
||||
class MyClass {
|
||||
val lazyProp by lazy {
|
||||
5
|
||||
}
|
||||
|
||||
var observableProp: String by Delegates.observable("<none>") {
|
||||
prop, old, new ->
|
||||
println("Was $old, now $new")
|
||||
}
|
||||
}
|
||||
@@ -104,6 +104,97 @@
|
||||
| dataClass.kt:1:34:1:46 | this.y | VarAccess |
|
||||
| dataClass.kt:1:34:1:46 | y | VarAccess |
|
||||
| dataClass.kt:1:34:1:46 | y | VarAccess |
|
||||
| delegates.kt:1:9:1:12 | this | ThisAccess |
|
||||
| delegates.kt:1:9:1:12 | this | ThisAccess |
|
||||
| delegates.kt:1:9:1:12 | this | ThisAccess |
|
||||
| delegates.kt:4:18:6:5 | ...::... | PropertyRefExpr |
|
||||
| delegates.kt:4:18:6:5 | ...=... | KtInitializerAssignExpr |
|
||||
| delegates.kt:4:18:6:5 | Integer | TypeAccess |
|
||||
| delegates.kt:4:18:6:5 | Integer | TypeAccess |
|
||||
| delegates.kt:4:18:6:5 | KProperty1<MyClass,Integer> | TypeAccess |
|
||||
| delegates.kt:4:18:6:5 | Lazy<Integer> | TypeAccess |
|
||||
| delegates.kt:4:18:6:5 | MyClass | TypeAccess |
|
||||
| delegates.kt:4:18:6:5 | a0 | VarAccess |
|
||||
| delegates.kt:4:18:6:5 | a0 | VarAccess |
|
||||
| delegates.kt:4:18:6:5 | get(...) | MethodAccess |
|
||||
| delegates.kt:4:18:6:5 | getLazyProp(...) | MethodAccess |
|
||||
| delegates.kt:4:18:6:5 | int | TypeAccess |
|
||||
| delegates.kt:4:18:6:5 | lazyProp$delegate | VarAccess |
|
||||
| delegates.kt:4:18:6:5 | this | ThisAccess |
|
||||
| delegates.kt:4:18:6:5 | this | ThisAccess |
|
||||
| delegates.kt:4:18:6:5 | this.lazyProp$delegate | VarAccess |
|
||||
| delegates.kt:4:21:6:5 | Integer | TypeAccess |
|
||||
| delegates.kt:4:21:6:5 | Integer | TypeAccess |
|
||||
| delegates.kt:4:21:6:5 | LazyKt | TypeAccess |
|
||||
| delegates.kt:4:21:6:5 | LazyKt | TypeAccess |
|
||||
| delegates.kt:4:21:6:5 | getValue(...) | MethodAccess |
|
||||
| delegates.kt:4:21:6:5 | lazy(...) | MethodAccess |
|
||||
| delegates.kt:4:26:6:5 | ...->... | LambdaExpr |
|
||||
| delegates.kt:4:26:6:5 | Function0<Integer> | TypeAccess |
|
||||
| delegates.kt:4:26:6:5 | Integer | TypeAccess |
|
||||
| delegates.kt:4:26:6:5 | int | TypeAccess |
|
||||
| delegates.kt:5:9:5:9 | 5 | IntegerLiteral |
|
||||
| delegates.kt:8:32:11:5 | ...::... | PropertyRefExpr |
|
||||
| delegates.kt:8:32:11:5 | ...::... | PropertyRefExpr |
|
||||
| delegates.kt:8:32:11:5 | ...=... | KtInitializerAssignExpr |
|
||||
| delegates.kt:8:32:11:5 | KMutableProperty1<MyClass,String> | TypeAccess |
|
||||
| delegates.kt:8:32:11:5 | KMutableProperty1<MyClass,String> | TypeAccess |
|
||||
| delegates.kt:8:32:11:5 | MyClass | TypeAccess |
|
||||
| delegates.kt:8:32:11:5 | MyClass | TypeAccess |
|
||||
| delegates.kt:8:32:11:5 | Object | TypeAccess |
|
||||
| delegates.kt:8:32:11:5 | ReadWriteProperty<Object,String> | TypeAccess |
|
||||
| delegates.kt:8:32:11:5 | String | TypeAccess |
|
||||
| delegates.kt:8:32:11:5 | String | TypeAccess |
|
||||
| delegates.kt:8:32:11:5 | String | TypeAccess |
|
||||
| delegates.kt:8:32:11:5 | String | TypeAccess |
|
||||
| delegates.kt:8:32:11:5 | String | TypeAccess |
|
||||
| delegates.kt:8:32:11:5 | Unit | TypeAccess |
|
||||
| delegates.kt:8:32:11:5 | a0 | VarAccess |
|
||||
| delegates.kt:8:32:11:5 | a0 | VarAccess |
|
||||
| delegates.kt:8:32:11:5 | a0 | VarAccess |
|
||||
| delegates.kt:8:32:11:5 | a0 | VarAccess |
|
||||
| delegates.kt:8:32:11:5 | a0 | VarAccess |
|
||||
| delegates.kt:8:32:11:5 | a0 | VarAccess |
|
||||
| delegates.kt:8:32:11:5 | a1 | VarAccess |
|
||||
| delegates.kt:8:32:11:5 | a1 | VarAccess |
|
||||
| delegates.kt:8:32:11:5 | get(...) | MethodAccess |
|
||||
| delegates.kt:8:32:11:5 | get(...) | MethodAccess |
|
||||
| delegates.kt:8:32:11:5 | getObservableProp(...) | MethodAccess |
|
||||
| delegates.kt:8:32:11:5 | getObservableProp(...) | MethodAccess |
|
||||
| delegates.kt:8:32:11:5 | observableProp$delegate | VarAccess |
|
||||
| delegates.kt:8:32:11:5 | setObservableProp(...) | MethodAccess |
|
||||
| delegates.kt:8:32:11:5 | setObservableProp(...) | MethodAccess |
|
||||
| delegates.kt:8:32:11:5 | this | ThisAccess |
|
||||
| delegates.kt:8:32:11:5 | this | ThisAccess |
|
||||
| delegates.kt:8:32:11:5 | this | ThisAccess |
|
||||
| delegates.kt:8:32:11:5 | this | ThisAccess |
|
||||
| delegates.kt:8:32:11:5 | this.observableProp$delegate | VarAccess |
|
||||
| delegates.kt:8:32:11:5 | this.observableProp$delegate | VarAccess |
|
||||
| delegates.kt:8:35:8:43 | INSTANCE | VarAccess |
|
||||
| delegates.kt:8:35:11:5 | <set-?> | VarAccess |
|
||||
| delegates.kt:8:35:11:5 | getValue(...) | MethodAccess |
|
||||
| delegates.kt:8:35:11:5 | setValue(...) | MethodAccess |
|
||||
| delegates.kt:8:45:11:5 | String | TypeAccess |
|
||||
| delegates.kt:8:45:11:5 | observable(...) | MethodAccess |
|
||||
| delegates.kt:8:57:8:62 | <none> | StringLiteral |
|
||||
| delegates.kt:8:66:11:5 | ...->... | LambdaExpr |
|
||||
| delegates.kt:8:66:11:5 | Function3<KProperty<?>,String,String,Unit> | TypeAccess |
|
||||
| delegates.kt:8:66:11:5 | KProperty<?> | TypeAccess |
|
||||
| delegates.kt:8:66:11:5 | String | TypeAccess |
|
||||
| delegates.kt:8:66:11:5 | String | TypeAccess |
|
||||
| delegates.kt:8:66:11:5 | Unit | TypeAccess |
|
||||
| delegates.kt:8:66:11:5 | Unit | TypeAccess |
|
||||
| delegates.kt:9:9:9:12 | ? ... | WildcardTypeAccess |
|
||||
| delegates.kt:9:9:9:12 | KProperty<?> | TypeAccess |
|
||||
| delegates.kt:9:15:9:17 | String | TypeAccess |
|
||||
| delegates.kt:9:20:9:22 | String | TypeAccess |
|
||||
| delegates.kt:10:9:10:37 | ConsoleKt | TypeAccess |
|
||||
| delegates.kt:10:9:10:37 | println(...) | MethodAccess |
|
||||
| delegates.kt:10:17:10:36 | "..." | StringTemplateExpr |
|
||||
| delegates.kt:10:18:10:21 | Was | StringLiteral |
|
||||
| delegates.kt:10:23:10:25 | old | VarAccess |
|
||||
| delegates.kt:10:26:10:31 | , now | StringLiteral |
|
||||
| delegates.kt:10:33:10:35 | new | VarAccess |
|
||||
| enumClass.kt:0:0:0:0 | EnumClass | TypeAccess |
|
||||
| enumClass.kt:0:0:0:0 | EnumClass | TypeAccess |
|
||||
| enumClass.kt:0:0:0:0 | EnumClass[] | TypeAccess |
|
||||
|
||||
@@ -11,6 +11,19 @@ methods
|
||||
| dataClass.kt:1:1:1:47 | DataClass | dataClass.kt:1:22:1:31 | getX | getX() | public | Compiler generated |
|
||||
| dataClass.kt:1:1:1:47 | DataClass | dataClass.kt:1:34:1:46 | getY | getY() | public | Compiler generated |
|
||||
| dataClass.kt:1:1:1:47 | DataClass | dataClass.kt:1:34:1:46 | setY | setY(java.lang.String) | public | Compiler generated |
|
||||
| delegates.kt:3:1:12:1 | MyClass | delegates.kt:4:18:6:5 | getLazyProp | getLazyProp() | public | Compiler generated |
|
||||
| delegates.kt:3:1:12:1 | MyClass | delegates.kt:8:32:11:5 | getObservableProp | getObservableProp() | public | Compiler generated |
|
||||
| delegates.kt:3:1:12:1 | MyClass | delegates.kt:8:32:11:5 | setObservableProp | setObservableProp(java.lang.String) | public | Compiler generated |
|
||||
| delegates.kt:4:18:6:5 | new KProperty1<MyClass,Integer>(...) { ... } | delegates.kt:4:18:6:5 | get | get(MyClass) | override, public | |
|
||||
| delegates.kt:4:18:6:5 | new KProperty1<MyClass,Integer>(...) { ... } | delegates.kt:4:18:6:5 | invoke | invoke(MyClass) | override, public | |
|
||||
| delegates.kt:4:26:6:5 | new Function0<Integer>(...) { ... } | delegates.kt:4:26:6:5 | invoke | invoke() | override, public | |
|
||||
| delegates.kt:8:32:11:5 | new KMutableProperty1<MyClass,String>(...) { ... } | delegates.kt:8:32:11:5 | get | get(MyClass) | override, public | |
|
||||
| delegates.kt:8:32:11:5 | new KMutableProperty1<MyClass,String>(...) { ... } | delegates.kt:8:32:11:5 | get | get(MyClass) | override, public | |
|
||||
| delegates.kt:8:32:11:5 | new KMutableProperty1<MyClass,String>(...) { ... } | delegates.kt:8:32:11:5 | invoke | invoke(MyClass) | override, public | |
|
||||
| delegates.kt:8:32:11:5 | new KMutableProperty1<MyClass,String>(...) { ... } | delegates.kt:8:32:11:5 | invoke | invoke(MyClass) | override, public | |
|
||||
| delegates.kt:8:32:11:5 | new KMutableProperty1<MyClass,String>(...) { ... } | delegates.kt:8:32:11:5 | set | set(MyClass,java.lang.String) | override, public | |
|
||||
| delegates.kt:8:32:11:5 | new KMutableProperty1<MyClass,String>(...) { ... } | delegates.kt:8:32:11:5 | set | set(MyClass,java.lang.String) | override, public | |
|
||||
| delegates.kt:8:66:11:5 | new Function3<KProperty<?>,String,String,Unit>(...) { ... } | delegates.kt:8:66:11:5 | invoke | invoke(kotlin.reflect.KProperty,java.lang.String,java.lang.String) | override, public | |
|
||||
| enumClass.kt:1:1:4:1 | EnumClass | enumClass.kt:0:0:0:0 | <clinit> | <clinit>() | | Compiler generated |
|
||||
| enumClass.kt:1:1:4:1 | EnumClass | enumClass.kt:0:0:0:0 | valueOf | valueOf(java.lang.String) | public, static | Compiler generated |
|
||||
| enumClass.kt:1:1:4:1 | EnumClass | enumClass.kt:0:0:0:0 | values | values() | public, static | Compiler generated |
|
||||
@@ -33,6 +46,12 @@ methods
|
||||
| methods.kt:5:1:19:1 | Class | methods.kt:18:5:18:36 | noExplicitVisibilityFun | noExplicitVisibilityFun() | public | |
|
||||
constructors
|
||||
| dataClass.kt:1:1:1:47 | DataClass | dataClass.kt:1:6:1:47 | DataClass | DataClass(int,java.lang.String) |
|
||||
| delegates.kt:3:1:12:1 | MyClass | delegates.kt:3:1:12:1 | MyClass | MyClass() |
|
||||
| delegates.kt:4:18:6:5 | new KProperty1<MyClass,Integer>(...) { ... } | delegates.kt:4:18:6:5 | | |
|
||||
| delegates.kt:4:26:6:5 | new Function0<Integer>(...) { ... } | delegates.kt:4:26:6:5 | | |
|
||||
| delegates.kt:8:32:11:5 | new KMutableProperty1<MyClass,String>(...) { ... } | delegates.kt:8:32:11:5 | | |
|
||||
| delegates.kt:8:32:11:5 | new KMutableProperty1<MyClass,String>(...) { ... } | delegates.kt:8:32:11:5 | | |
|
||||
| delegates.kt:8:66:11:5 | new Function3<KProperty<?>,String,String,Unit>(...) { ... } | delegates.kt:8:66:11:5 | | |
|
||||
| enumClass.kt:1:1:4:1 | EnumClass | enumClass.kt:1:6:4:1 | EnumClass | EnumClass(int) |
|
||||
| methods2.kt:7:1:10:1 | Class2 | methods2.kt:7:1:10:1 | Class2 | Class2() |
|
||||
| methods3.kt:5:1:7:1 | Class3 | methods3.kt:5:1:7:1 | Class3 | Class3() |
|
||||
|
||||
@@ -3,6 +3,20 @@
|
||||
| dataClass.kt:0:0:0:0 | copy | dataClass.kt:1:34:1:46 | y | 1 |
|
||||
| dataClass.kt:0:0:0:0 | equals | dataClass.kt:0:0:0:0 | other | 0 |
|
||||
| dataClass.kt:1:34:1:46 | setY | dataClass.kt:1:34:1:46 | <set-?> | 0 |
|
||||
| delegates.kt:4:18:6:5 | get | delegates.kt:4:18:6:5 | a0 | 0 |
|
||||
| delegates.kt:4:18:6:5 | invoke | delegates.kt:4:18:6:5 | a0 | 0 |
|
||||
| delegates.kt:8:32:11:5 | get | delegates.kt:8:32:11:5 | a0 | 0 |
|
||||
| delegates.kt:8:32:11:5 | get | delegates.kt:8:32:11:5 | a0 | 0 |
|
||||
| delegates.kt:8:32:11:5 | invoke | delegates.kt:8:32:11:5 | a0 | 0 |
|
||||
| delegates.kt:8:32:11:5 | invoke | delegates.kt:8:32:11:5 | a0 | 0 |
|
||||
| delegates.kt:8:32:11:5 | set | delegates.kt:8:32:11:5 | a0 | 0 |
|
||||
| delegates.kt:8:32:11:5 | set | delegates.kt:8:32:11:5 | a0 | 0 |
|
||||
| delegates.kt:8:32:11:5 | set | delegates.kt:8:32:11:5 | a1 | 1 |
|
||||
| delegates.kt:8:32:11:5 | set | delegates.kt:8:32:11:5 | a1 | 1 |
|
||||
| delegates.kt:8:32:11:5 | setObservableProp | delegates.kt:8:32:11:5 | <set-?> | 0 |
|
||||
| delegates.kt:8:66:11:5 | invoke | delegates.kt:9:9:9:12 | prop | 0 |
|
||||
| delegates.kt:8:66:11:5 | invoke | delegates.kt:9:15:9:17 | old | 1 |
|
||||
| delegates.kt:8:66:11:5 | invoke | delegates.kt:9:20:9:22 | new | 2 |
|
||||
| enumClass.kt:0:0:0:0 | valueOf | enumClass.kt:0:0:0:0 | value | 0 |
|
||||
| methods2.kt:4:1:5:1 | fooBarTopLevelMethod | methods2.kt:4:26:4:31 | x | 0 |
|
||||
| methods2.kt:4:1:5:1 | fooBarTopLevelMethod | methods2.kt:4:34:4:39 | y | 1 |
|
||||
|
||||
Reference in New Issue
Block a user