[FIR] Create proper error name references for invoke receivers

In this example, when processing
the `jso` property candidate form
the `dynamic` scope we get
`DslScopeViolation`.
When we later create the
receiver for the invoke call
(since we still call `jso {}` as
a function), we create a non-error
named reference which fails at
`toResolvedReference()`.

The included test should not fail
with exception.

^KT-65255 Fixed
This commit is contained in:
Nikolay Lunyak
2024-02-02 12:54:54 +02:00
committed by Space Team
parent be6ab943f4
commit 183c263c55
5 changed files with 46 additions and 5 deletions
@@ -0,0 +1,21 @@
// FIR_IDENTICAL
// ISSUE: KT-65255
// DIAGNOSTICS: -NOTHING_TO_INLINE -UNUSED_ANONYMOUS_PARAMETER
@DslMarker
@Target(AnnotationTarget.CLASS, AnnotationTarget.TYPE)
@Retention(AnnotationRetention.BINARY)
annotation class JsoDsl
inline fun <T : Any> jso(): T = js("({})")
inline fun <T : Any> jso(block: @JsoDsl T.() -> Unit): T = jso<T>().apply(block)
val value = { int: Int? ->
jso<dynamic> {
foo = jso {
bar = jso { // line 7
}
}
}
}