[FIR] do not use FirValueParameter for function type parameter

As it is a different abstraction, introduced FirFunctionTypeParameter instead

Also, fix syntax checkers for function type parameter

^KT-55035 fixed
This commit is contained in:
Ilya Kirillov
2022-10-21 02:52:24 +02:00
committed by teamcity
parent 1b9fdeadfe
commit b6481ed891
40 changed files with 479 additions and 165 deletions
+2 -2
View File
@@ -20,10 +20,10 @@ package boundsWithSubstitutors
class Pair<A, B>
abstract class C<T : B<<!UPPER_BOUND_VIOLATED!>Int<!>>, X : (B<<!UPPER_BOUND_VIOLATED, UPPER_BOUND_VIOLATED!>Char<!>>) -> Pair<B<<!UPPER_BOUND_VIOLATED!>Any<!>>, B<A>>>() : B<<!UPPER_BOUND_VIOLATED!>Any<!>>() { // 2 errors
abstract class C<T : B<<!UPPER_BOUND_VIOLATED!>Int<!>>, X : (B<<!UPPER_BOUND_VIOLATED!>Char<!>>) -> Pair<B<<!UPPER_BOUND_VIOLATED!>Any<!>>, B<A>>>() : B<<!UPPER_BOUND_VIOLATED!>Any<!>>() { // 2 errors
val a = B<<!UPPER_BOUND_VIOLATED!>Char<!>>() // error
abstract val x : (B<<!UPPER_BOUND_VIOLATED, UPPER_BOUND_VIOLATED!>Char<!>>) -> B<<!UPPER_BOUND_VIOLATED!>Any<!>>
abstract val x : (B<<!UPPER_BOUND_VIOLATED!>Char<!>>) -> B<<!UPPER_BOUND_VIOLATED!>Any<!>>
}
@@ -17,5 +17,5 @@ class A : (Int)->Unit {
}
val prop: (x: Int = <!UNSUPPORTED!>0<!>)->Unit
get(): (x: Int = <!UNSUPPORTED!>0<!>)->Unit = {}
get(): (x: Int = <!UNSUPPORTED!>0<!>)->Unit = {}
}
@@ -1,3 +1,3 @@
package typeReferenceError
<!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class Pair<!><<!SYNTAX!><!>:<!UNRESOLVED_REFERENCE!>(val c: <!SYNTAX!><!SYNTAX!><!>fun<!><!SYNTAX!><!> <!UNRESOLVED_REFERENCE!>main<!><!>()
<!ABSTRACT_MEMBER_NOT_IMPLEMENTED!>class Pair<!><<!SYNTAX!><!>:<!UNRESOLVED_REFERENCE!>(<!UNSUPPORTED!>val<!> c: <!SYNTAX!><!SYNTAX!><!>fun<!><!SYNTAX!><!> <!UNRESOLVED_REFERENCE!>main<!><!>()
@@ -1,52 +0,0 @@
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE
fun f(vararg x: Int) {}
val inVal: (<!WRONG_MODIFIER_CONTAINING_DECLARATION!>vararg<!> x: Int)->Unit = {}
fun inParam(fn: (<!WRONG_MODIFIER_CONTAINING_DECLARATION!>vararg<!> x: Int)->Unit) {}
fun inParamNested(fn1: (fn2: (<!WRONG_MODIFIER_CONTAINING_DECLARATION!>vararg<!> n: Int)->Unit)->Unit) {}
fun inReturn(): (vararg x: Int)->Unit = {}
class A : (vararg Int)->Unit {
override fun invoke(p1: Int) {
var lambda: (vararg x: Int)->Unit = {}
}
val prop: (vararg x: Int)->Unit
get(): (<!WRONG_MODIFIER_CONTAINING_DECLARATION!>vararg<!> x: Int)->Unit = {}
}
val allProhibited: (<!REDUNDANT_MODIFIER, WRONG_MODIFIER_TARGET!>abstract<!>
<!WRONG_MODIFIER_TARGET!>annotation<!>
<!WRONG_MODIFIER_TARGET!>companion<!>
<!INCOMPATIBLE_MODIFIERS!>const<!>
<!INCOMPATIBLE_MODIFIERS!>crossinline<!>
<!INCOMPATIBLE_MODIFIERS!>data<!>
<!WRONG_MODIFIER_TARGET!>enum<!>
<!WRONG_MODIFIER_TARGET!>external<!>
<!INCOMPATIBLE_MODIFIERS!>final<!>
<!WRONG_MODIFIER_TARGET!>in<!>
<!INCOMPATIBLE_MODIFIERS!>inline<!>
<!INCOMPATIBLE_MODIFIERS!>inner<!>
<!WRONG_MODIFIER_TARGET!>internal<!>
<!WRONG_MODIFIER_TARGET!>lateinit<!>
<!INCOMPATIBLE_MODIFIERS!>noinline<!>
<!INCOMPATIBLE_MODIFIERS, REDUNDANT_MODIFIER!>open<!>
<!WRONG_MODIFIER_TARGET!>operator<!>
<!INCOMPATIBLE_MODIFIERS!>out<!>
<!INCOMPATIBLE_MODIFIERS!>override<!>
<!INCOMPATIBLE_MODIFIERS!>private<!>
<!INCOMPATIBLE_MODIFIERS!>protected<!>
<!INCOMPATIBLE_MODIFIERS!>public<!>
<!WRONG_MODIFIER_TARGET!>reified<!>
<!INCOMPATIBLE_MODIFIERS!>sealed<!>
<!WRONG_MODIFIER_TARGET!>tailrec<!>
<!WRONG_MODIFIER_CONTAINING_DECLARATION!>vararg<!>
x: Int)->Unit = {}
val valProhibited: (val x: Int)->Unit = {}
val varProhibited: (var x: Int)->Unit = {}
@@ -1,3 +1,4 @@
// FIR_IDENTICAL
// !DIAGNOSTICS: -UNUSED_PARAMETER -UNUSED_VARIABLE
fun f(vararg x: Int) {}
@@ -49,4 +50,4 @@ val allProhibited: (<!UNSUPPORTED!>abstract<!>
x: Int)->Unit = {}
val valProhibited: (<!UNSUPPORTED!>val<!> x: Int)->Unit = {}
val varProhibited: (<!UNSUPPORTED!>var<!> x: Int)->Unit = {}
val varProhibited: (<!UNSUPPORTED!>var<!> x: Int)->Unit = {}