[FIR] Match type in super<type> access with actual supertypes of class
This commit is contained in:
+1
-1
@@ -14,6 +14,6 @@ class Derived : BaseDerived2<Int>() {
|
||||
}
|
||||
|
||||
fun foo() {
|
||||
Derived().foo() checkType { <!INAPPLICABLE_CANDIDATE!>_<!><Outer<Int, String>.Inner<Char>>() }
|
||||
Derived().foo() checkType { _<Outer<Int, String>.Inner<Char>>() }
|
||||
Derived().baz() <!INAPPLICABLE_CANDIDATE!>checkType<!> { <!UNRESOLVED_REFERENCE!>_<!><Map<Char, Int>>() }
|
||||
}
|
||||
|
||||
Vendored
-18
@@ -1,18 +0,0 @@
|
||||
// !CHECK_TYPE
|
||||
open class Outer<E> {
|
||||
inner open class Inner<F> {
|
||||
inner class Inner2<D> {
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class DerivedOuter : Outer<String>() {
|
||||
inner class DerivedInner : Inner<Int>() {
|
||||
fun foo(): Inner2<Char> = null!!
|
||||
}
|
||||
}
|
||||
|
||||
fun foo() {
|
||||
DerivedOuter().DerivedInner().foo() checkType { <!INAPPLICABLE_CANDIDATE!>_<!><Outer<String>.Inner<Int>.Inner2<Char>>() }
|
||||
}
|
||||
Vendored
+1
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !CHECK_TYPE
|
||||
open class Outer<E> {
|
||||
inner open class Inner<F> {
|
||||
|
||||
+3
-3
@@ -29,9 +29,9 @@ fun main() {
|
||||
checkSubtype<Outer<out CharSequence>.Inner>(outer.bar())
|
||||
checkSubtype<Outer<out CharSequence>.Inner>(outer.Inner())
|
||||
|
||||
outer.<!INAPPLICABLE_CANDIDATE!>set<!>(outer.bar())
|
||||
outer.<!INAPPLICABLE_CANDIDATE!>set<!>(outer.Inner())
|
||||
outer.set(outer.bar())
|
||||
outer.set(outer.Inner())
|
||||
|
||||
val x: Outer<String>.Inner = factoryString()
|
||||
outer.<!INAPPLICABLE_CANDIDATE!>set<!>(x)
|
||||
outer.set(x)
|
||||
}
|
||||
|
||||
@@ -17,8 +17,8 @@ class A<E>() : C(), T {
|
||||
super<C>.bar()
|
||||
super<T>@A.foo()
|
||||
super<C>@A.bar()
|
||||
super<E>.<!UNRESOLVED_REFERENCE!>bar<!>()
|
||||
super<E>@A.<!UNRESOLVED_REFERENCE!>bar<!>()
|
||||
super<<!OTHER_ERROR, OTHER_ERROR!>E<!>>.<!UNRESOLVED_REFERENCE!>bar<!>()
|
||||
super<<!OTHER_ERROR, OTHER_ERROR!>E<!>>@A.<!UNRESOLVED_REFERENCE!>bar<!>()
|
||||
<!NOT_A_SUPERTYPE!>super<Int><!>.<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
super<<!SYNTAX!><!>>.<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
<!NOT_A_SUPERTYPE!>super<() -> Unit><!>.<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
|
||||
+2
-2
@@ -23,7 +23,7 @@ class TestSuperForBase : B() {
|
||||
super<Base>.foo()
|
||||
super<B>.foo()
|
||||
super<MyBase>.<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
super<U>.foo()
|
||||
<!NOT_A_SUPERTYPE!>super<U><!>.foo()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,6 +36,6 @@ class TestSuperForGenericBase<T> : GB<T>() {
|
||||
super<GB>.foo()
|
||||
super<MyBase>.<!UNRESOLVED_REFERENCE!>foo<!>()
|
||||
super<MyBaseInt>.<!UNRESOLVED_REFERENCE!>foo<!>() // Type arguments don't matter here
|
||||
super<U>.foo()
|
||||
<!NOT_A_SUPERTYPE!>super<U><!>.foo()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user