Files
codeql/java/ql/test-kotlin1
Anders Fugmann d91b3899ae Kotlin: converge synthetic property-access locations to the K2 signature span
For a property such as `val prop: Int = 1`, the compiler generates synthetic
`this.prop` accesses (inside the default getter and the primary-constructor field
initialiser). The K1 and K2 frontends give these synthetic accesses different
source spans:

  * K1 runs the span through the initialiser: `variables.kt:3:5:3:21`
  * K2 stops at the end of the type signature:  `variables.kt:3:5:3:17`

The property *declaration* location is `3:21` under both frontends and is left
untouched; only these synthetic *access* expressions diverged. The K2 signature
span (val/var keyword to the end of the type, or to the end of the name when the
type is inferred) is the more intuitive location: it points at the property's
signature rather than incidentally swallowing the initialiser expression, so a
`this.prop` read is not reported as spanning code it does not evaluate.

We adopt the K2 span and reproduce it under K1 from PSI. New helper
`getPsiBasedPropertySignatureAccessLocation` returns the signature span only when
the access resolves (via `findPsiElement`) to the enclosing `KtProperty`, which is
true exactly for these synthetic property-declaration-anchored accesses. It returns
null under K2 (no PSI is available there, and the raw IR offset already gives the
signature span) and for every ordinary source-written access (whose PSI is the
reference expression, not the whole declaration), so canonical K2 output and normal
accesses are unaffected. It is wired into the `IrGetField` read path and into
`extractThisAccess`.

Effect: tk1 `variables/variables.expected` becomes byte-identical to tk2;
`variables/variableAccesses.expected` drops to only the separate implicit-`this`
call-receiver span divergence; genericExprTypes/exprs/methods synthetic
property-access rows all move from the through-initialiser span onto the K2
signature span. All 3333 tests pass in both suites; test-kotlin2 is unchanged.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
2026-07-13 17:50:12 +02:00
..