[FIR] Prohibit constructor and supertype on typealias with type projection
Introduce `CONSTRUCTOR_OR_SUPERTYPE_ON_TYPEALIAS_WITH_TYPE_PROJECTION` ^KT-60305 Fixed
This commit is contained in:
committed by
Space Team
parent
2b2c685827
commit
04ead1716a
Vendored
+1
-1
@@ -22,7 +22,7 @@ class Generic<T1> {
|
||||
|
||||
inner class Test1 : GI<T1>()
|
||||
inner class Test2 : <!UNRESOLVED_REFERENCE!>GIInt<!>()
|
||||
inner class Test3 : GIStar()
|
||||
inner class Test3 : <!CONSTRUCTOR_OR_SUPERTYPE_ON_TYPEALIAS_WITH_TYPE_PROJECTION_WARNING!>GIStar<!>()
|
||||
inner class Test3a : test.Generic<<!PROJECTION_IN_IMMEDIATE_ARGUMENT_TO_SUPERTYPE!>*<!>>.Inner()
|
||||
|
||||
inner class Test4<T2> : GG<T1, T2>()
|
||||
|
||||
+2
-2
@@ -10,6 +10,6 @@ fun <T> listOf(): List<T> = null!!
|
||||
// Unresolved reference is ok here:
|
||||
// we can't create a substituted signature for type alias constructor
|
||||
// since it has 'out' type projection in 'in' position.
|
||||
val test1 = <!UPPER_BOUND_VIOLATED!>BOutIn(<!ARGUMENT_TYPE_MISMATCH!>listOf()<!>, null!!)<!>
|
||||
val test1 = <!CONSTRUCTOR_OR_SUPERTYPE_ON_TYPEALIAS_WITH_TYPE_PROJECTION_WARNING, UPPER_BOUND_VIOLATED!>BOutIn(<!ARGUMENT_TYPE_MISMATCH!>listOf()<!>, null!!)<!>
|
||||
|
||||
val test2 = <!UPPER_BOUND_VIOLATED!>BInIn(listOf(), null!!)<!>
|
||||
val test2 = <!CONSTRUCTOR_OR_SUPERTYPE_ON_TYPEALIAS_WITH_TYPE_PROJECTION_WARNING, UPPER_BOUND_VIOLATED!>BInIn(listOf(), null!!)<!>
|
||||
|
||||
+4
-3
@@ -1,3 +1,4 @@
|
||||
// ISSUE: KT-60305
|
||||
// NI_EXPECTED_FILE
|
||||
|
||||
class C<T>
|
||||
@@ -7,8 +8,8 @@ typealias CIn = C<in Int>
|
||||
typealias COut = C<out Int>
|
||||
typealias CT<T> = C<T>
|
||||
|
||||
val test1 = CStar()
|
||||
val test2 = CIn()
|
||||
val test3 = COut()
|
||||
val test1 = <!CONSTRUCTOR_OR_SUPERTYPE_ON_TYPEALIAS_WITH_TYPE_PROJECTION_WARNING!>CStar()<!>
|
||||
val test2 = <!CONSTRUCTOR_OR_SUPERTYPE_ON_TYPEALIAS_WITH_TYPE_PROJECTION_WARNING!>CIn()<!>
|
||||
val test3 = <!CONSTRUCTOR_OR_SUPERTYPE_ON_TYPEALIAS_WITH_TYPE_PROJECTION_WARNING!>COut()<!>
|
||||
val test4 = CT<<!PROJECTION_ON_NON_CLASS_TYPE_ARGUMENT!>*<!>>()
|
||||
val test5 = CT<CT<*>>()
|
||||
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// ISSUE: KT-60305
|
||||
// NI_EXPECTED_FILE
|
||||
|
||||
class C<T>
|
||||
|
||||
Vendored
+18
@@ -0,0 +1,18 @@
|
||||
// ISSUE: KT-60305
|
||||
|
||||
open class C<T>
|
||||
|
||||
typealias CStar = C<*>
|
||||
typealias CIn = C<in Int>
|
||||
typealias COut = C<out Int>
|
||||
typealias CT<T> = C<T>
|
||||
|
||||
class Test1 : <!CONSTRUCTOR_OR_SUPERTYPE_ON_TYPEALIAS_WITH_TYPE_PROJECTION_WARNING!>CStar<!>()
|
||||
class Test2 : <!CONSTRUCTOR_OR_SUPERTYPE_ON_TYPEALIAS_WITH_TYPE_PROJECTION_WARNING!>CIn<!>()
|
||||
class Test3 : <!CONSTRUCTOR_OR_SUPERTYPE_ON_TYPEALIAS_WITH_TYPE_PROJECTION_WARNING!>COut<!>()
|
||||
|
||||
class Test4 : <!CONSTRUCTOR_OR_SUPERTYPE_ON_TYPEALIAS_WITH_TYPE_PROJECTION_WARNING!>CStar<!> {
|
||||
constructor() : super()
|
||||
}
|
||||
|
||||
class Test5 : CT<<!PROJECTION_IN_IMMEDIATE_ARGUMENT_TO_SUPERTYPE!>*<!>>()
|
||||
Vendored
+2
-1
@@ -1,4 +1,5 @@
|
||||
// FIR_IDENTICAL
|
||||
// ISSUE: KT-60305
|
||||
|
||||
open class C<T>
|
||||
|
||||
typealias CStar = C<*>
|
||||
|
||||
Reference in New Issue
Block a user