FIR: report ambiguity-like errors in type resolve

This commit is contained in:
Mikhail Glukhikh
2022-03-09 10:25:06 +03:00
committed by Space
parent f073e86c93
commit c8453ec8b4
17 changed files with 132 additions and 34 deletions
@@ -0,0 +1,17 @@
// FILE: a.kt
package a
class X
// FILE: b.kt
package b
class X
// FILE: c.kt
package c
import a.*
import b.*
class Y : <!OVERLOAD_RESOLUTION_AMBIGUITY!>X<!>
@@ -1,4 +1,3 @@
// FIR_IDENTICAL
// FILE: a.kt
package a
@@ -0,0 +1,17 @@
// FILE: a.kt
package a
class X
// FILE: b.kt
package b
class X
// FILE: c.kt
package c
import a.<!CONFLICTING_IMPORT!>X<!>
import b.<!CONFLICTING_IMPORT!>X<!>
class Y : <!OVERLOAD_RESOLUTION_AMBIGUITY!>X<!>
@@ -1,4 +1,3 @@
// FIR_IDENTICAL
// FILE: a.kt
package a
@@ -0,0 +1,31 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER
// FILE: a.kt
package a
class A {
class B
}
// FILE: b.kt
package a
class D {
class B
}
// FILE: c.kt
import a.A.<!CONFLICTING_IMPORT!>B<!>
import a.D.<!CONFLICTING_IMPORT!>B<!>
fun test(b: <!OVERLOAD_RESOLUTION_AMBIGUITY!>B<!>) {
<!UNRESOLVED_REFERENCE!>B<!>()
}
// FILE: d.kt
import a.A.*
import a.D.*
// todo ambiguvity here
fun test2(b: <!OVERLOAD_RESOLUTION_AMBIGUITY!>B<!>) {
<!UNRESOLVED_REFERENCE!>B<!>()
}
@@ -1,4 +1,3 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_PARAMETER
// FILE: a.kt
package a
@@ -24,4 +24,4 @@ package c
import a.*
import b.*
fun test(): <!UNRESOLVED_REFERENCE!>x<!> = d().x()
fun test(): <!OVERLOAD_RESOLUTION_AMBIGUITY!>x<!> = d().x()
@@ -28,7 +28,7 @@ import p1.*
import <!DEPRECATION_ERROR!>p2.A<!>
import p3.*
<!CONFLICTING_OVERLOADS!>fun test(a: <!UNRESOLVED_REFERENCE!>A<!>)<!> {
fun test(a: <!NONE_APPLICABLE!>A<!>) {
a.<!UNRESOLVED_REFERENCE!>v1<!>
a.<!UNRESOLVED_REFERENCE!>v2<!>
a.<!UNRESOLVED_REFERENCE!>v3<!>
@@ -39,7 +39,7 @@ import p1.*
import p2.*
import p3.*
<!CONFLICTING_OVERLOADS!>fun test(a: <!UNRESOLVED_REFERENCE!>A<!>)<!> {
fun test(a: <!NONE_APPLICABLE!>A<!>) {
a.<!UNRESOLVED_REFERENCE!>v1<!>
a.<!UNRESOLVED_REFERENCE!>v2<!>
a.<!UNRESOLVED_REFERENCE!>v3<!>
@@ -23,7 +23,7 @@ class A {
import p1.*
import p2.*
fun test(a: <!UNRESOLVED_REFERENCE!>A<!>) {
fun test(a: <!OVERLOAD_RESOLUTION_AMBIGUITY!>A<!>) {
a.<!UNRESOLVED_REFERENCE!>m1<!>()
a.<!UNRESOLVED_REFERENCE!>m2<!>()
}
@@ -40,7 +40,7 @@ import p1.*
import p2.*
import p3.*
fun test(a: <!UNRESOLVED_REFERENCE!>A<!>) {
fun test(a: <!OVERLOAD_RESOLUTION_AMBIGUITY!>A<!>) {
a.<!UNRESOLVED_REFERENCE!>v1<!>
a.<!UNRESOLVED_REFERENCE!>v2<!>
a.<!UNRESOLVED_REFERENCE!>v3<!>
@@ -2,5 +2,5 @@ fun <<!REDECLARATION!>T<!>, <!REDECLARATION!>T<!>> Pair() {}
class P<<!REDECLARATION!>T<!>, <!REDECLARATION!>T<!>> {}
val <<!REDECLARATION, TYPE_PARAMETER_OF_PROPERTY_NOT_USED_IN_RECEIVER!>T<!>, <!REDECLARATION, TYPE_PARAMETER_OF_PROPERTY_NOT_USED_IN_RECEIVER!>T<!>> <!UNRESOLVED_REFERENCE!>T<!>.foo : Int
val <<!REDECLARATION, TYPE_PARAMETER_OF_PROPERTY_NOT_USED_IN_RECEIVER!>T<!>, <!REDECLARATION, TYPE_PARAMETER_OF_PROPERTY_NOT_USED_IN_RECEIVER!>T<!>> <!OVERLOAD_RESOLUTION_AMBIGUITY!>T<!>.foo : Int
get() = 1