Files
vladislav.grechko 9aa8fb80e7 Set correct IR origins for inc/dec operations
NB: in order to produce correct IR origins, the source element kinds for
some FIR elements has been changed. As a side effect, mapping PSI to FIR
slightly changed: namely, for `a[b]++`, `a[b]` used to be mapped on
`set` call or callable reference, but now it is mapped on `get` call.

^KT-61891: Fixed
^KT-64387: Fixed
2024-01-30 14:26:10 +00:00

27 lines
1.4 KiB
Plaintext
Vendored

KT element: KtArrayAccessExpression
FIR element: FirFunctionCallImpl
FIR source kind: DesugaredPostfixInc
FIR element rendered:
R|<local>/<array>|.R|SubstitutionOverride</MyMap.get: R|A|>|(R|<local>/<index_0>|)
FIR FILE:
FILE: [ResolvedTo(IMPORTS)] incWithArrayAccessConvention_set.kt
public abstract [ResolvedTo(STATUS)] interface A : R|kotlin/Any| {
public abstract operator [ResolvedTo(CONTRACTS)] fun inc(): R|A|
}
public abstract [ResolvedTo(STATUS)] interface MyMap<[ResolvedTo(STATUS)] K, [ResolvedTo(STATUS)] V> : R|kotlin/Any| {
public abstract operator [ResolvedTo(CONTRACTS)] fun get([ResolvedTo(CONTRACTS)] k: R|K|): R|V|
public abstract operator [ResolvedTo(CONTRACTS)] fun set([ResolvedTo(CONTRACTS)] k: R|K|, [ResolvedTo(CONTRACTS)] v: R|V|): R|kotlin/Unit|
}
public final [ResolvedTo(BODY_RESOLVE)] fun test([ResolvedTo(BODY_RESOLVE)] m: R|MyMap<kotlin/String, A>|): R|kotlin/Unit| {
[ResolvedTo(BODY_RESOLVE)] lval <array>: R|MyMap<kotlin/String, A>| = R|<local>/m|
[ResolvedTo(BODY_RESOLVE)] lval <index_0>: R|kotlin/String| = String(a)
[ResolvedTo(BODY_RESOLVE)] lval <unary>: R|A| = R|<local>/<array>|.R|SubstitutionOverride</MyMap.get: R|A|>|(R|<local>/<index_0>|)
R|<local>/<array>|.R|SubstitutionOverride</MyMap.set: R|kotlin/Unit|>|(R|<local>/<index_0>|, R|<local>/<unary>|.R|/A.inc|())
R|<local>/<unary>|
}