fecc5ba501
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
26 lines
542 B
Kotlin
Vendored
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")
|
|
}
|
|
}
|