[FIR] Fix more tests because of modifier usage in resolution

This commit is contained in:
Andrey Zinovyev
2021-05-19 11:59:53 +03:00
committed by TeamCityServer
parent 07a8ae7e71
commit 419aa65381
15 changed files with 21 additions and 24 deletions
@@ -5,7 +5,7 @@ FILE: implicitTypeOrder.kt
} }
public final fun bar(): R|A| { public final fun bar(): R|A| {
^bar R|/foo|.R|/A.invoke|() ^bar R|/foo|.<Inapplicable(INAPPLICABLE_MODIFIER): /A.invoke>#()
} }
public final fun invoke(): R|A| { public final fun invoke(): R|A| {
@@ -1,6 +1,6 @@
class A { class A {
fun bar() = foo() // should resolve to invoke fun bar() = <!OPERATOR_MODIFIER_REQUIRED!>foo<!>() // should resolve to invoke
fun invoke() = this fun invoke() = this
} }
@@ -24,5 +24,5 @@ FILE: qualifierWithCompanion.kt
local final fun R|my/A|.invoke(): R|kotlin/Unit| { local final fun R|my/A|.invoke(): R|kotlin/Unit| {
} }
Q|my|.R|my/xx|.R|<local>/invoke|() Q|my|.R|my/xx|.<Inapplicable(INAPPLICABLE_MODIFIER): <local>/invoke>#()
} }
@@ -15,5 +15,5 @@ fun test() {
fun A.invoke() {} fun A.invoke() {}
my.xx() my.<!OPERATOR_MODIFIER_REQUIRED!>xx<!>()
} }
@@ -99,7 +99,6 @@ public class A extends AImpl implements List<String> {
fun main() { fun main() {
val x = X() val x = X()
//todo get only one candidate - AImpl.get, no kotlin.collection.List for some reason
<!OPERATOR_MODIFIER_REQUIRED!>x[0]<!> <!OPERATOR_MODIFIER_REQUIRED!>x[0]<!>
x.size x.size
x.remove("") x.remove("")
@@ -8,8 +8,6 @@ class A {
fun main() { fun main() {
val a = A() val a = A()
<!OPERATOR_MODIFIER_REQUIRED!>a[1]<!>++ <!OPERATOR_MODIFIER_REQUIRED!>a[1]<!>++
//fir prefers plusAssign call if neither get+set nor plusAssign resolverd
//hence UNRESOLVED_REFERENCE here
a[1] <!UNRESOLVED_REFERENCE!>+=<!> 3 a[1] <!UNRESOLVED_REFERENCE!>+=<!> 3
<!OPERATOR_MODIFIER_REQUIRED!>a[1]<!> = a[1] + 3 <!OPERATOR_MODIFIER_REQUIRED!>a[1]<!> = a[1] + 3
} }
@@ -13,5 +13,5 @@ fun case1() {
val a3 = A(-1) val a3 = A(-1)
val a4 = A(-3) val a4 = A(-3)
val x = (a3 > a4) val x = (a3 <!OPERATOR_MODIFIER_REQUIRED!>><!> a4)
} }
@@ -16,8 +16,8 @@ interface I
class B : I class B : I
fun case1(){ fun case1(){
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Int")!>A()<!> <!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Int")!><!OPERATOR_MODIFIER_REQUIRED!>A<!>()<!>
<!DEBUG_INFO_CALL("fqName: lib.case1.A.invoke; typeCall: variable&invoke")!>A()<!> <!DEBUG_INFO_CALL("fqName: fqName is unknown; typeCall: unresolved")!><!OPERATOR_MODIFIER_REQUIRED!>A<!>()<!>
} }
// FILE: Lib.kt // FILE: Lib.kt
@@ -71,8 +71,8 @@ class A : I
class B : I class B : I
fun case3(){ fun case3(){
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Int")!>A()<!> <!DEBUG_INFO_EXPRESSION_TYPE("tests.case3.A")!>A()<!>
<!DEBUG_INFO_CALL("fqName: lib.case3.A.invoke; typeCall: variable&invoke")!>A()<!> <!DEBUG_INFO_CALL("fqName: tests.case3.A.A; typeCall: function")!>A()<!>
A.invoke() A.invoke()
A.<!DEBUG_INFO_CALL("fqName: lib.case3.A.invoke; typeCall: function")!>invoke()<!> A.<!DEBUG_INFO_CALL("fqName: lib.case3.A.invoke; typeCall: function")!>invoke()<!>
@@ -71,8 +71,8 @@ class A : I
class B : I class B : I
fun case3(){ fun case3(){
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Int")!>A()<!> <!DEBUG_INFO_EXPRESSION_TYPE("tests.case3.A")!>A()<!>
<!DEBUG_INFO_CALL("fqName: lib.case3.B.invoke; typeCall: variable&invoke")!>A()<!> <!DEBUG_INFO_CALL("fqName: tests.case3.A.A; typeCall: function")!>A()<!>
A.invoke() A.invoke()
A.<!DEBUG_INFO_CALL("fqName: lib.case3.B.invoke; typeCall: function")!>invoke()<!> A.<!DEBUG_INFO_CALL("fqName: lib.case3.B.invoke; typeCall: function")!>invoke()<!>
@@ -91,14 +91,14 @@ class A : I
class B : I class B : I
fun case3(){ fun case3(){
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Int")!>A()<!> <!DEBUG_INFO_EXPRESSION_TYPE("tests.case3.A")!>A()<!>
<!DEBUG_INFO_CALL("fqName: lib.case3.a.C.invoke; typeCall: variable&invoke")!>A()<!> <!DEBUG_INFO_CALL("fqName: tests.case3.A.A; typeCall: function")!>A()<!>
A.invoke() A.invoke()
A.<!DEBUG_INFO_CALL("fqName: lib.case3.a.C.invoke; typeCall: function")!>invoke()<!> A.<!DEBUG_INFO_CALL("fqName: lib.case3.a.C.invoke; typeCall: function")!>invoke()<!>
<!DEBUG_INFO_EXPRESSION_TYPE("kotlin.Int")!>B()<!> <!DEBUG_INFO_EXPRESSION_TYPE("tests.case3.B")!>B()<!>
<!DEBUG_INFO_CALL("fqName: lib.case3.b.C.invoke; typeCall: variable&invoke")!>B()<!> <!DEBUG_INFO_CALL("fqName: tests.case3.B.B; typeCall: function")!>B()<!>
B.invoke() B.invoke()
B.<!DEBUG_INFO_CALL("fqName: lib.case3.b.C.invoke; typeCall: function")!>invoke()<!> B.<!DEBUG_INFO_CALL("fqName: lib.case3.b.C.invoke; typeCall: function")!>invoke()<!>
@@ -2,7 +2,7 @@ val x: Int <caret>by Foo()
class Foo class Foo
fun Foo.getValue(_this: Any?, p: Any?): Int = 1 operator fun Foo.getValue(_this: Any?, p: Any?): Int = 1
// REF: (for Foo in <root>).getValue(Any?, Any?) // REF: (for Foo in <root>).getValue(Any?, Any?)
@@ -1,7 +1,7 @@
val x: Int <caret>by Foo() val x: Int <caret>by Foo()
class Foo { class Foo {
fun getValue(_this: Any?, p: Any?): Int = 1 operator fun getValue(_this: Any?, p: Any?): Int = 1
} }
// REF: (in Foo).getValue(Any?, Any?) // REF: (in Foo).getValue(Any?, Any?)
@@ -1,15 +1,15 @@
var x : Int <caret>by Baz() var x : Int <caret>by Baz()
interface Foo { interface Foo {
fun getValue(p1: Any?, p2: Any?): Int = 1 operator fun getValue(p1: Any?, p2: Any?): Int = 1
} }
interface Bar { interface Bar {
fun getValue(p1: Any?, p2: Any?): Int operator fun getValue(p1: Any?, p2: Any?): Int
} }
interface Zoo { interface Zoo {
fun setValue(p1: Any?, p2: Any?, p3: Any?) operator fun setValue(p1: Any?, p2: Any?, p3: Any?)
} }
class Baz: Foo, Bar, Zoo class Baz: Foo, Bar, Zoo
@@ -1,7 +1,7 @@
var x : Int <caret>by Baz() var x : Int <caret>by Baz()
interface Foo { interface Foo {
fun getValue(p1: Any?, p2: Any?): Int = 1 operator fun getValue(p1: Any?, p2: Any?): Int = 1
} }
class Baz: Foo class Baz: Foo