FIR: preliminary refactoring of delegate resolve

This commit is contained in:
Mikhail Glukhikh
2021-08-04 18:45:40 +03:00
committed by teamcity
parent a19495cb26
commit 4d9e919f7e
23 changed files with 62 additions and 48 deletions
@@ -8,6 +8,6 @@ object CommonCase {
operator fun <D, E, R> Fas<D, E, R>.provideDelegate(host: D, p: Any?): Fas<D, E, R> = TODO()
operator fun <D, E, R> Fas<D, E, R>.getValue(receiver: E, p: Any?): R = TODO()
val Long.test1: String by <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER, NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>delegate<!>() // common test, not working because of Inference1
val Long.test1: String by delegate() // common test, not working because of Inference1
val Long.test2: String by delegate<CommonCase, Long, String>() // should work
}
@@ -1,13 +0,0 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
object T2 {
interface Foo<T>
fun <T> delegate(): Foo<T> = TODO()
operator fun <T> Foo<T>.provideDelegate(host: T2, p: Any?): Foo<T> = TODO()
operator fun <T> Foo<T>.getValue(receiver: String, p: Any?): T = TODO()
val String.test1: String by <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>delegate<!>()
val test2: String by <!DELEGATE_SPECIAL_FUNCTION_NONE_APPLICABLE!><!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>delegate<!>()<!>
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_PARAMETER
object T2 {
@@ -1,12 +0,0 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
object T3 {
interface Foo<T>
fun <T> delegate(): Foo<T> = TODO()
operator fun <T> Foo<T>.provideDelegate(host: T3, p: Any?): Foo<T> = TODO()
operator fun <T> Foo<T>.getValue(receiver: T3, p: Any?): T = TODO()
val test1: String by <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>delegate<!>()
}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_PARAMETER
object T3 {
@@ -8,6 +8,6 @@ object Inference2 {
operator fun <T> Foo<T>.provideDelegate(host: T, p: Any?): Foo<T> = TODO()
operator fun <T> Foo<T>.getValue(receiver: Inference2, p: Any?): String = TODO()
val test1: String by <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>delegate<!>() // same story like in Inference1
val test1: String by delegate() // same story like in Inference1
val test2: String by delegate<Inference2>()
}
@@ -4,7 +4,7 @@
import kotlin.reflect.KProperty
abstract class MainActivity : DIAware1() {
val bar: Bar by <!NEW_INFERENCE_NO_INFORMATION_FOR_PARAMETER!>instance1<!>()
val bar: Bar by instance1()
}
class Bar
@@ -9,6 +9,6 @@ operator fun String.provideDelegate(thisRef: Any?, prop: Any) = WrongDelegate(th
operator fun String.getValue(thisRef: Any?, prop: Any) = this
val test1: String by <!TYPE_MISMATCH, TYPE_MISMATCH!>"OK"<!>
val test1: String by <!TYPE_MISMATCH, TYPE_MISMATCH, TYPE_MISMATCH!>"OK"<!>
val test2: Int by "OK"
val test3 by "OK"