FIR: introduce & use REFERENCE_BY_QUALIFIER positioning strategy

This commit is contained in:
Mikhail Glukhikh
2021-02-18 11:54:22 +03:00
parent 0accaf0f30
commit 34c90aab3b
138 changed files with 415 additions and 372 deletions
@@ -5,10 +5,10 @@ import kotlin.reflect.KProperty
class A
class D {
val c: Int by <!UNRESOLVED_REFERENCE!>IncorrectThis<A>()<!>
val c: Int by <!UNRESOLVED_REFERENCE!>IncorrectThis<!><A>()
}
val cTopLevel: Int by <!UNRESOLVED_REFERENCE!>IncorrectThis<A>()<!>
val cTopLevel: Int by <!UNRESOLVED_REFERENCE!>IncorrectThis<!><A>()
class IncorrectThis<T> {
fun <R> get(t: Any?, p: KProperty<*>): Int {
@@ -4,10 +4,10 @@ package foo
import kotlin.reflect.KProperty
open class A {
val B.w: Int by <!INAPPLICABLE_CANDIDATE!>MyProperty()<!>
val B.w: Int by <!INAPPLICABLE_CANDIDATE!>MyProperty<!>()
}
val B.r: Int by <!INAPPLICABLE_CANDIDATE!>MyProperty()<!>
val B.r: Int by <!INAPPLICABLE_CANDIDATE!>MyProperty<!>()
val A.e: Int by MyProperty()
@@ -5,7 +5,7 @@ package test
import first.*
import second.*
val a12 by <!AMBIGUITY!>A()<!>
val a12 by <!AMBIGUITY!>A<!>()
// FILE: first.kt
package first
@@ -8,4 +8,4 @@ class ValueWrapper()
fun setValue(v: Int) { backingValue = v }
}
val foo by <!INAPPLICABLE_CANDIDATE!>ValueWrapper()<!>
val foo by <!INAPPLICABLE_CANDIDATE!>ValueWrapper<!>()
@@ -1,3 +1,3 @@
val a: Int by <!UNRESOLVED_REFERENCE!>A()<!>
val a: Int by <!UNRESOLVED_REFERENCE!>A<!>()
class A
@@ -5,7 +5,7 @@
import kotlin.reflect.KProperty
class B {
val c by <!INAPPLICABLE_CANDIDATE!><!INAPPLICABLE_CANDIDATE!>Delegate<!>(<!UNRESOLVED_REFERENCE!>ag<!>)<!>
val c by <!INAPPLICABLE_CANDIDATE, INAPPLICABLE_CANDIDATE!>Delegate<!>(<!UNRESOLVED_REFERENCE!>ag<!>)
}
class Delegate<T: Any>(val init: T) {
@@ -10,5 +10,5 @@ object T2 {
operator fun <T> Foo<T>.getValue(receiver: String, p: Any?): T = TODO()
val String.test1: String by delegate()
val test2: String by <!INAPPLICABLE_CANDIDATE!>delegate()<!>
val test2: String by <!INAPPLICABLE_CANDIDATE!>delegate<!>()
}
@@ -4,7 +4,7 @@
import kotlin.reflect.KProperty
class A {
var a: Int by <!INAPPLICABLE_CANDIDATE!>Delegate()<!>
var a: Int by <!INAPPLICABLE_CANDIDATE!>Delegate<!>()
}
var aTopLevel: Int by Delegate()
@@ -4,10 +4,10 @@
import kotlin.reflect.KProperty
class A {
var a: Int by <!INAPPLICABLE_CANDIDATE!>Delegate()<!>
var a: Int by <!INAPPLICABLE_CANDIDATE!>Delegate<!>()
}
var aTopLevel: Int by <!INAPPLICABLE_CANDIDATE!>Delegate()<!>
var aTopLevel: Int by <!INAPPLICABLE_CANDIDATE!>Delegate<!>()
class Delegate {
fun getValue(t: Nothing, p: KProperty<*>): Int {
@@ -3,7 +3,7 @@
import kotlin.reflect.KProperty
class A {
val c: Int by <!NONE_APPLICABLE!>Delegate()<!>
val c: Int by <!NONE_APPLICABLE!>Delegate<!>()
}
class Delegate {
@@ -5,10 +5,10 @@ import kotlin.reflect.KProperty
class A
class B {
val b: Int by <!INAPPLICABLE_CANDIDATE!>Delegate<A>()<!>
val b: Int by <!INAPPLICABLE_CANDIDATE!>Delegate<!><A>()
}
val bTopLevel: Int by <!INAPPLICABLE_CANDIDATE!>Delegate<A>()<!>
val bTopLevel: Int by <!INAPPLICABLE_CANDIDATE!>Delegate<!><A>()
class C {
val c: Int by Delegate<C>()
@@ -4,10 +4,10 @@
import kotlin.reflect.KProperty
class B {
val b: Int by <!INAPPLICABLE_CANDIDATE!>Delegate()<!>
val b: Int by <!INAPPLICABLE_CANDIDATE!>Delegate<!>()
}
val bTopLevel: Int by <!INAPPLICABLE_CANDIDATE!>Delegate()<!>
val bTopLevel: Int by <!INAPPLICABLE_CANDIDATE!>Delegate<!>()
class A
@@ -3,10 +3,10 @@
import kotlin.reflect.KProperty
class A {
val a: Int by <!INAPPLICABLE_CANDIDATE!>Delegate()<!>
val a: Int by <!INAPPLICABLE_CANDIDATE!>Delegate<!>()
}
val aTopLevel: Int by <!INAPPLICABLE_CANDIDATE!>Delegate()<!>
val aTopLevel: Int by <!INAPPLICABLE_CANDIDATE!>Delegate<!>()
class Delegate {
fun getValue(t: Any?, p: KProperty<*>, a: Int): Int {