[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
-82
@@ -1,82 +0,0 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// SKIP_TXT
|
||||
// Issues: KT-25105
|
||||
|
||||
class Message1
|
||||
class Task<T>
|
||||
object Message2
|
||||
enum class Message3
|
||||
data class Message4(val x: Int)
|
||||
interface Manager<T> {}
|
||||
|
||||
object MessageManager1 : Manager<Message1> {
|
||||
fun <T : <!FINAL_UPPER_BOUND!>Message1<!>> execute1(task: Task<T>) {}
|
||||
fun <T : <!FINAL_UPPER_BOUND!>Int<!>> execute2(task: T) {}
|
||||
fun <T : <!FINAL_UPPER_BOUND!>Message2<!>> execute3() {}
|
||||
}
|
||||
|
||||
object MessageManager2 : Manager<Message3> {
|
||||
fun <T : Message3> execute4() {}
|
||||
}
|
||||
|
||||
object MessageManager3 : Manager<Message4> {
|
||||
fun <T : <!FINAL_UPPER_BOUND!>Message4<!>> execute5() {}
|
||||
}
|
||||
|
||||
class MessageManager4 : Manager<Message1> {
|
||||
fun <T : <!FINAL_UPPER_BOUND!>Message1<!>> execute1(task: Task<T>) {}
|
||||
fun <T : <!FINAL_UPPER_BOUND!>Int<!>> execute2(task: T) {}
|
||||
fun <T : <!FINAL_UPPER_BOUND!>Message2<!>> execute3() {}
|
||||
}
|
||||
|
||||
class MessageManager5 : Manager<Message3> {
|
||||
fun <T : Message3> execute4() {}
|
||||
}
|
||||
|
||||
class MessageManager6 : Manager<Message4> {
|
||||
fun <T : <!FINAL_UPPER_BOUND!>Message4<!>> execute5() {}
|
||||
}
|
||||
|
||||
interface MessageManager7 : Manager<Message4> {
|
||||
fun <T : <!FINAL_UPPER_BOUND!>Message4<!>> execute5() {}
|
||||
}
|
||||
|
||||
interface MessageManager8 : Manager<Message1> {
|
||||
fun <T : <!FINAL_UPPER_BOUND!>Message1<!>> execute1(task: Task<T>) {}
|
||||
fun <T : <!FINAL_UPPER_BOUND!>Int<!>> execute2(task: T) {}
|
||||
fun <T : <!FINAL_UPPER_BOUND!>Message2<!>> execute3() {}
|
||||
}
|
||||
|
||||
interface MessageManager9 : Manager<Message3> {
|
||||
fun <T : Message3> execute4() {}
|
||||
}
|
||||
|
||||
object MessageManager10 : <!UNRESOLVED_REFERENCE!>Message5<Int><!>() {
|
||||
fun <T : <!FINAL_UPPER_BOUND!>Int<!>> execute() {}
|
||||
}
|
||||
|
||||
class MessageManager11<A> : <!UNRESOLVED_REFERENCE!>Message5<<!UNRESOLVED_REFERENCE!>Message5<A><!>><!>() {
|
||||
fun <T : <!UNRESOLVED_REFERENCE!>Message5<A><!>> execute() {}
|
||||
}
|
||||
|
||||
data class MessageManager12(val x: Int) : <!UNRESOLVED_REFERENCE!>Message5<Message2><!>() {
|
||||
fun <T : <!FINAL_UPPER_BOUND!>Message2<!>> execute() {}
|
||||
}
|
||||
|
||||
sealed class MessageManager13<A> : <!UNRESOLVED_REFERENCE!>Message5<A><!>() {
|
||||
fun <T : A> execute() {}
|
||||
}
|
||||
|
||||
class MessageManager14 : Manager<Message2> {
|
||||
val <T : <!FINAL_UPPER_BOUND!>Message2<!>> T.x get() = 10
|
||||
var <T : <!FINAL_UPPER_BOUND!>Message2<!>> T.y
|
||||
get() = 10
|
||||
set(value) {}
|
||||
}
|
||||
|
||||
object MessageManager15 : Manager<Int> {
|
||||
val <T : <!FINAL_UPPER_BOUND!>Int<!>> T.x get() = 10
|
||||
var <T : <!FINAL_UPPER_BOUND!>Int<!>> T.y
|
||||
get() = 10
|
||||
set(value) {}
|
||||
}
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
// SKIP_TXT
|
||||
// Issues: KT-25105
|
||||
|
||||
@@ -29,7 +29,7 @@ fun test() {
|
||||
a<Foo.Bar<!WRONG_NUMBER_OF_TYPE_ARGUMENTS!><Int><!>.Baz>()
|
||||
}
|
||||
|
||||
fun <T: Foo<<!UNRESOLVED_REFERENCE!>String.Bar<!>>> x() {}
|
||||
fun <T: Foo<String.<!UNRESOLVED_REFERENCE!>Bar<!>>> x() {}
|
||||
fun Foo<String>.<!WRONG_NUMBER_OF_TYPE_ARGUMENTS!>Bar<!>.ext() {}
|
||||
|
||||
fun ex1(a: Foo<!WRONG_NUMBER_OF_TYPE_ARGUMENTS!><String><!>.Bar<String>): Foo<!WRONG_NUMBER_OF_TYPE_ARGUMENTS!><String><!>.Bar<String> {
|
||||
|
||||
-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!!
|
||||
|
||||
-14
@@ -1,14 +0,0 @@
|
||||
interface I0<T : <!UNRESOLVED_REFERENCE!>Unresolved0<String><!>>
|
||||
interface I1<T> where T : <!UNRESOLVED_REFERENCE!>Unresolved1<String><!>
|
||||
interface I2<<!MISPLACED_TYPE_PARAMETER_CONSTRAINTS!>T : <!UNRESOLVED_REFERENCE!>Unresolved2<String><!><!>> where T : <!UNRESOLVED_REFERENCE!>Unresolved3<String><!>
|
||||
|
||||
fun <E : <!UNRESOLVED_REFERENCE!>Unresolved4<String><!>> foo0() {}
|
||||
fun <E> foo1() where E : <!UNRESOLVED_REFERENCE!>Unresolved5<String><!> {}
|
||||
fun <<!MISPLACED_TYPE_PARAMETER_CONSTRAINTS!>E : <!UNRESOLVED_REFERENCE!>Unresolved6<String><!><!>> foo2() where E : <!UNRESOLVED_REFERENCE!>Unresolved7<String><!> {}
|
||||
|
||||
val <E : <!UNRESOLVED_REFERENCE!>Unresolved7<!>> E.p1: Int
|
||||
get() = 1
|
||||
val <E> E.p2: Int where E : <!UNRESOLVED_REFERENCE!>Unresolved8<!>
|
||||
get() = 1
|
||||
val <<!MISPLACED_TYPE_PARAMETER_CONSTRAINTS!>E : <!UNRESOLVED_REFERENCE!>Unresolved9<!><!>> E.p3: Int where E : <!UNRESOLVED_REFERENCE!>Unresolved10<!>
|
||||
get() = 1
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
interface I0<T : <!UNRESOLVED_REFERENCE!>Unresolved0<!><String>>
|
||||
interface I1<T> where T : <!UNRESOLVED_REFERENCE!>Unresolved1<!><String>
|
||||
interface I2<<!MISPLACED_TYPE_PARAMETER_CONSTRAINTS!>T : <!UNRESOLVED_REFERENCE!>Unresolved2<!><String><!>> where T : <!UNRESOLVED_REFERENCE!>Unresolved3<!><String>
|
||||
|
||||
Reference in New Issue
Block a user