mirror of
https://github.com/github/codeql.git
synced 2026-07-14 15:58:16 +02:00
The synthesised body of a delegated-property accessor (`get`/`getValue`/
`setValue`/`invoke` calls, the `<prop>$delegate` access, associated type
accesses and property-reference classes) carries the source range of the
whole `KtPropertyDelegate` node. The K1 frontend's range starts at the
`by` keyword; K2 starts at the delegate expression itself
(e.g. `lazy { ... }`), three columns later. The `by` keyword is syntactic
glue in the property declaration, not part of the expression being
evaluated, so K2's narrower range is the more intuitive one. Adopt it for
both frontends. Example:
get / getValue / invoke ... 6:24:9:9 -> 6:27:9:9
Add a scoped offset remap on `FileTrapWriter`: while extracting a
`DELEGATED_PROPERTY_ACCESSOR` body, any location whose offsets exactly
equal the `by`-inclusive delegate range is emitted with the delegate
expression's range instead. The range is recovered from the enclosing
`KtProperty`'s PSI (`delegate.expression`), which is available under K1;
under K2 there is no PSI so the remap is inactive and the raw offsets
already exclude `by`. Matching the full delegate range exactly means only
these synthesised body expressions are affected.
Updates test-kotlin1 expected only (test-kotlin2 unchanged).
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
58 lines
4.1 KiB
Plaintext
58 lines
4.1 KiB
Plaintext
| clinit.kt:3:1:3:20 | setTopLevelInt | clinit.kt:3:1:3:20 | <set-?> | 0 |
|
|
| dataClass.kt:0:0:0:0 | copy | dataClass.kt:1:22:1:31 | x | 0 |
|
|
| dataClass.kt:0:0:0:0 | copy | dataClass.kt:1:34:1:46 | y | 1 |
|
|
| dataClass.kt:0:0:0:0 | copy$default | dataClass.kt:0:0:0:0 | p0 | 0 |
|
|
| dataClass.kt:0:0:0:0 | copy$default | dataClass.kt:0:0:0:0 | p1 | 1 |
|
|
| dataClass.kt:0:0:0:0 | copy$default | dataClass.kt:0:0:0:0 | p2 | 2 |
|
|
| dataClass.kt:0:0:0:0 | copy$default | dataClass.kt:0:0:0:0 | p3 | 3 |
|
|
| dataClass.kt:0:0:0:0 | copy$default | dataClass.kt:0:0:0:0 | p4 | 4 |
|
|
| 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:21:6:5 | get | delegates.kt:4:21:6:5 | a0 | 0 |
|
|
| delegates.kt:4:21:6:5 | invoke | delegates.kt:4:21:6:5 | a0 | 0 |
|
|
| delegates.kt:8:5:11:5 | setObservableProp | delegates.kt:8:32:11:5 | <set-?> | 0 |
|
|
| delegates.kt:8:35:11:5 | get | delegates.kt:8:35:11:5 | a0 | 0 |
|
|
| delegates.kt:8:35:11:5 | get | delegates.kt:8:35:11:5 | a0 | 0 |
|
|
| delegates.kt:8:35:11:5 | invoke | delegates.kt:8:35:11:5 | a0 | 0 |
|
|
| delegates.kt:8:35:11:5 | invoke | delegates.kt:8:35:11:5 | a0 | 0 |
|
|
| delegates.kt:8:35:11:5 | set | delegates.kt:8:35:11:5 | a0 | 0 |
|
|
| delegates.kt:8:35:11:5 | set | delegates.kt:8:35:11:5 | a0 | 0 |
|
|
| delegates.kt:8:35:11:5 | set | delegates.kt:8:35:11:5 | a1 | 1 |
|
|
| delegates.kt:8:35:11:5 | set | delegates.kt:8:35:11:5 | a1 | 1 |
|
|
| 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 |
|
|
| enumClass.kt:0:0:0:0 | valueOf | enumClass.kt:0:0:0:0 | value | 0 |
|
|
| enumClass.kt:9:14:9:30 | f | enumClass.kt:9:20:9:25 | i | 0 |
|
|
| enumClass.kt:10:14:10:42 | g | enumClass.kt:10:20:10:25 | i | 0 |
|
|
| enumClass.kt:13:12:13:29 | f | enumClass.kt:13:18:13:23 | i | 0 |
|
|
| enumClass.kt:14:12:14:29 | g | enumClass.kt:14:18:14:23 | i | 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 |
|
|
| methods2.kt:8:5:9:5 | fooBarClassMethod | methods2.kt:8:27:8:32 | x | 0 |
|
|
| methods2.kt:8:5:9:5 | fooBarClassMethod | methods2.kt:8:35:8:40 | y | 1 |
|
|
| methods3.kt:3:1:3:49 | fooBarTopLevelMethodExt | methods3.kt:3:5:3:10 | <this> | 0 |
|
|
| methods3.kt:3:1:3:49 | fooBarTopLevelMethodExt | methods3.kt:3:36:3:45 | x | 1 |
|
|
| methods3.kt:3:1:3:49 | fooBarTopLevelMethodExt$default | methods3.kt:3:1:3:49 | p0 | 0 |
|
|
| methods3.kt:3:1:3:49 | fooBarTopLevelMethodExt$default | methods3.kt:3:1:3:49 | p1 | 1 |
|
|
| methods3.kt:3:1:3:49 | fooBarTopLevelMethodExt$default | methods3.kt:3:1:3:49 | p2 | 2 |
|
|
| methods3.kt:3:1:3:49 | fooBarTopLevelMethodExt$default | methods3.kt:3:1:3:49 | p3 | 3 |
|
|
| methods3.kt:6:5:6:45 | fooBarMethodExt | methods3.kt:6:9:6:14 | <this> | 0 |
|
|
| methods3.kt:6:5:6:45 | fooBarMethodExt | methods3.kt:6:32:6:41 | x | 1 |
|
|
| methods3.kt:6:5:6:45 | fooBarMethodExt$default | methods3.kt:6:5:6:45 | p0 | 0 |
|
|
| methods3.kt:6:5:6:45 | fooBarMethodExt$default | methods3.kt:6:5:6:45 | p1 | 1 |
|
|
| methods3.kt:6:5:6:45 | fooBarMethodExt$default | methods3.kt:6:5:6:45 | p2 | 2 |
|
|
| methods3.kt:6:5:6:45 | fooBarMethodExt$default | methods3.kt:6:5:6:45 | p3 | 3 |
|
|
| methods3.kt:6:5:6:45 | fooBarMethodExt$default | methods3.kt:6:5:6:45 | p4 | 4 |
|
|
| methods4.kt:7:5:7:34 | m | methods4.kt:7:11:7:29 | x | 0 |
|
|
| methods5.kt:5:3:5:27 | a | methods5.kt:5:13:5:18 | i | 0 |
|
|
| methods5.kt:9:3:9:32 | f1 | methods5.kt:9:12:9:17 | <this> | 0 |
|
|
| methods5.kt:9:3:9:32 | f1 | methods5.kt:9:22:9:27 | i | 1 |
|
|
| 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:6:5:7:5 | classMethod | methods.kt:6:21:6:26 | x | 0 |
|
|
| methods.kt:6:5:7:5 | classMethod | methods.kt:6:29:6:34 | y | 1 |
|
|
| methods.kt:9:5:12:5 | anotherClassMethod | methods.kt:9:28:9:33 | a | 0 |
|
|
| methods.kt:9:5:12:5 | anotherClassMethod | methods.kt:9:36:9:41 | b | 1 |
|