Files
Ilya Chernikov fecc5ba501 K2: do not try to resolve invoke on error receiver
If a potential receiver is resolved to an error type, we consider
any other type as a subtype of it and therefore may select
any candidate that we happen to find in a scope.
In particular, in the case of scripts, or code with a context receiver,
the receiver candidate resolved to a cycle was accepted as a receiver
to an invoke on a random class from stdlib.
The fix skips adding invoke resolve task in this case, allowing
the tower to find the correct candidate in another scope.

#KT-64241 fixed
#KT-65576 fixed
2024-03-19 15:38:35 +00:00

26 lines
542 B
Kotlin
Vendored

// WITH_STDLIB
// FILE: test.kt
val bar2 by <!UNRESOLVED_REFERENCE!>bar2<!>()
// FILE: lt/neworld/compiler/Foo.kt
package lt.neworld.compiler
class Foo {
val bar by <!UNRESOLVED_REFERENCE!>bar<!>()
}
// FILE: lt/neworld/compiler/bar/Bar.kt
package lt.neworld.compiler.bar
import kotlin.properties.ReadOnlyProperty
import kotlin.reflect.KProperty
fun <T, V> bar() = Bar<T, V>()
class Bar<T, V> : ReadOnlyProperty<T, V> {
override fun getValue(thisRef: T, property: KProperty<*>): V {
TODO("Not yet implemented")
}
}