[FIR] Report UNRESOLVED_REFERENCE on the first unresolved qualifier
#KT-55471 Fixed
This commit is contained in:
committed by
Space Team
parent
40fadac060
commit
10f7989af6
-22
@@ -1,22 +0,0 @@
|
||||
// !LANGUAGE: +ProhibitVisibilityOfNestedClassifiersFromSupertypesOfCompanion
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE
|
||||
open class Outer<E> {
|
||||
inner class Inner<F>
|
||||
|
||||
}
|
||||
|
||||
class Derived : Outer<String>() {
|
||||
// Inner<Int> here means Outer<String>.Inner<Int>
|
||||
fun foo(x: Inner<Int>) {}
|
||||
}
|
||||
|
||||
class A {
|
||||
companion object : Outer<String>()
|
||||
|
||||
// Does not work, could be Outer<String>.Inner<Int>
|
||||
// TODO: Should work?
|
||||
fun foo(x: <!UNRESOLVED_REFERENCE!>Inner<Int><!>) {
|
||||
// Inner<Char>() call use companion as implicit receiver
|
||||
val y: Outer<String>.Inner<Char> = Inner<Char>()
|
||||
}
|
||||
}
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !LANGUAGE: +ProhibitVisibilityOfNestedClassifiersFromSupertypesOfCompanion
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE
|
||||
open class Outer<E> {
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@ class A {
|
||||
|
||||
// Does not work, could be Outer<String>.Inner<Int>
|
||||
// TODO: Should work?
|
||||
fun foo(x: <!UNRESOLVED_REFERENCE!>Inner<Int><!>) {
|
||||
fun foo(x: <!UNRESOLVED_REFERENCE!>Inner<!><Int>) {
|
||||
// Inner<Char>() call use companion as implicit receiver
|
||||
val y: Outer<String>.Inner<Char> = Inner<Char>()
|
||||
}
|
||||
|
||||
Vendored
+2
-2
@@ -7,14 +7,14 @@ open class Outer<X, Y> {
|
||||
|
||||
class Derived : Outer<String, Int>() {
|
||||
fun foo(): Inner<Char> = null!!
|
||||
fun baz(): <!UNRESOLVED_REFERENCE!>Alias<Char><!> = null!!
|
||||
fun baz(): <!UNRESOLVED_REFERENCE!>Alias<!><Char> = null!!
|
||||
}
|
||||
|
||||
|
||||
class A : Outer<Double, Short>() {
|
||||
class B : Outer<Float, Long>() {
|
||||
fun bar(): Inner<String> = null!!
|
||||
fun x(): <!UNRESOLVED_REFERENCE!>Alias<String><!> = null!!
|
||||
fun x(): <!UNRESOLVED_REFERENCE!>Alias<!><String> = null!!
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+2
-2
@@ -14,7 +14,7 @@ private fun <E> foobar() = {
|
||||
|
||||
class Derived : LocalOuter<Double, Short>() {
|
||||
fun foo(): LocalInner<Long> = null!!
|
||||
fun bar(): <!UNRESOLVED_REFERENCE!>LocalAlias<Char><!> = null!!
|
||||
fun bar(): <!UNRESOLVED_REFERENCE!>LocalAlias<!><Char> = null!!
|
||||
}
|
||||
|
||||
Derived()
|
||||
@@ -31,7 +31,7 @@ private fun noParameters() = {
|
||||
|
||||
class Derived2 : LocalOuter2<Double, Short>() {
|
||||
fun foo(): LocalInner2<Long> = null!!
|
||||
fun bar(): <!UNRESOLVED_REFERENCE!>LocalAlias2<Char><!> = null!!
|
||||
fun bar(): <!UNRESOLVED_REFERENCE!>LocalAlias2<!><Char> = null!!
|
||||
}
|
||||
|
||||
Derived2()
|
||||
|
||||
+2
-2
@@ -16,7 +16,7 @@ class Outer<T> {
|
||||
|
||||
class Derived : LocalOuter<Double, Short>() {
|
||||
fun foo(): LocalInner<Long> = null!!
|
||||
fun bar(): <!UNRESOLVED_REFERENCE!>LocalAlias<Char><!> = null!!
|
||||
fun bar(): <!UNRESOLVED_REFERENCE!>LocalAlias<!><Char> = null!!
|
||||
}
|
||||
|
||||
Derived()
|
||||
@@ -33,7 +33,7 @@ class Outer<T> {
|
||||
|
||||
class Derived2 : LocalOuter2<Double, Short>() {
|
||||
fun foo(): LocalInner2<Long> = null!!
|
||||
fun bar(): <!UNRESOLVED_REFERENCE!>LocalAlias2<Char><!> = null!!
|
||||
fun bar(): <!UNRESOLVED_REFERENCE!>LocalAlias2<!><Char> = null!!
|
||||
}
|
||||
Derived2()
|
||||
}
|
||||
|
||||
+1
-1
@@ -10,7 +10,7 @@ open class BaseDerived2<X> : BaseDerived1<String, X>()
|
||||
|
||||
class Derived : BaseDerived2<Int>() {
|
||||
fun foo(): Inner<Char> = null!!
|
||||
fun baz(): <!UNRESOLVED_REFERENCE!>Alias<Char><!> = null!!
|
||||
fun baz(): <!UNRESOLVED_REFERENCE!>Alias<!><Char> = null!!
|
||||
}
|
||||
|
||||
fun foo() {
|
||||
|
||||
+1
-1
@@ -38,7 +38,7 @@ fun ok4(): Outer.Obj.Nested2<A>.Inner5<B> = null!!
|
||||
fun ok5(): test.Outer.Obj.Nested2<A>.Inner5<B> = null!!
|
||||
|
||||
// All arguments are resolved
|
||||
fun errorTypeWithArguments(): <!UNRESOLVED_REFERENCE!>Q<A>.W<B, C, D>.R.M<!> = null!!
|
||||
fun errorTypeWithArguments(): <!UNRESOLVED_REFERENCE!>Q<!><A>.W<B, C, D>.R.M = null!!
|
||||
|
||||
fun error1(): Outer<A>.Inner<B>.Inner3<!WRONG_NUMBER_OF_TYPE_ARGUMENTS!><C, D><!> = null!!
|
||||
fun error2(): Outer<A>.Inner<!WRONG_NUMBER_OF_TYPE_ARGUMENTS!><B, C, D><!>.Inner2 = null!!
|
||||
|
||||
Reference in New Issue
Block a user