FIR: add a resolution mode for property delegates

Like function arguments, they are context-dependent, but unlike function
arguments, callable references should be resolved eagerly as if they are
explicit receivers.
This commit is contained in:
pyos
2020-11-17 14:02:35 +01:00
committed by Mikhail Glukhikh
parent 0a5b899aab
commit 7327c20200
15 changed files with 75 additions and 32 deletions
@@ -0,0 +1,9 @@
// WITH_REFLECT
// WITH_RUNTIME
class C(val x: String)
val x = "O"
val y by ::x
val z by C("K")::x
fun box(): String = y + z
@@ -1,2 +0,0 @@
Failures detected in FirBodyResolveTransformerAdapter, file: /provideDelegateOnFunctionalTypeWithThis.fir.kt
Cause: java.lang.ClassCastException: org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImpl cannot be cast to org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
@@ -13,7 +13,7 @@ fun wrong(arg: Wrong) {}
class Wrong
class Right {
val prop: () -> Unit by <!DELEGATE_SPECIAL_FUNCTION_MISSING, DELEGATE_SPECIAL_FUNCTION_NONE_APPLICABLE!>::wrong<!>
val prop: () -> Unit by <!UNRESOLVED_REFERENCE!>::wrong<!>
}
fun box(): String {