FIR: check multiple vararg param and forbidden vararg type
This commit is contained in:
committed by
Mikhail Glukhikh
parent
0e9474342d
commit
bdeecfc188
+5
-5
@@ -63,11 +63,11 @@ annotation class InAnn10(val p1: <!NULLABLE_TYPE_OF_ANNOTATION_MEMBER!>String?<!
|
||||
annotation class InAnn11(val p1: <!NULLABLE_TYPE_OF_ANNOTATION_MEMBER!>Ann1?<!>)
|
||||
annotation class InAnn12(val p1: <!NULLABLE_TYPE_OF_ANNOTATION_MEMBER!>MyEnum?<!>)
|
||||
|
||||
annotation class InAnn13(vararg val p1: String,
|
||||
vararg val p2: <!INVALID_TYPE_OF_ANNOTATION_MEMBER!>Class<*><!>,
|
||||
vararg val p3: MyEnum,
|
||||
vararg val p4: Ann1,
|
||||
vararg val p5: Int)
|
||||
annotation class InAnn13(<!MULTIPLE_VARARG_PARAMETERS!>vararg<!> val p1: String,
|
||||
<!MULTIPLE_VARARG_PARAMETERS!>vararg<!> val p2: <!INVALID_TYPE_OF_ANNOTATION_MEMBER!>Class<*><!>,
|
||||
<!MULTIPLE_VARARG_PARAMETERS!>vararg<!> val p3: MyEnum,
|
||||
<!MULTIPLE_VARARG_PARAMETERS!>vararg<!> val p4: Ann1,
|
||||
<!MULTIPLE_VARARG_PARAMETERS!>vararg<!> val p5: Int)
|
||||
|
||||
enum class MyEnum {
|
||||
A
|
||||
|
||||
-35
@@ -1,35 +0,0 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER -PRIMARY_CONSTRUCTOR_DELEGATION_CALL_EXPECTED
|
||||
fun test(vararg x1: Int, vararg x2: Int) {
|
||||
fun test2(vararg x1: Int, vararg x2: Int) {
|
||||
class LocalClass(vararg x1: Int, vararg x2: Int) {
|
||||
constructor(vararg x1: Int, vararg x2: Int, xx: Int) {}
|
||||
}
|
||||
fun test3(vararg x1: Int, vararg x2: Int) {}
|
||||
}
|
||||
}
|
||||
|
||||
fun Any.test(vararg x1: Int, vararg x2: Int, vararg x3: Int) {}
|
||||
|
||||
interface I {
|
||||
fun test(vararg x1: Int, vararg x2: Int)
|
||||
}
|
||||
|
||||
abstract class C(vararg x1: Int, vararg x2: Int, b: Boolean) {
|
||||
fun test(vararg x1: Int, vararg x2: Int) {}
|
||||
|
||||
abstract fun test2(vararg x1: Int, vararg x2: Int)
|
||||
|
||||
class CC(vararg x1: Int, vararg x2: Int, b: Boolean) {
|
||||
constructor(vararg x1: Int, vararg x2: Int) {}
|
||||
fun test(vararg x1: Int, vararg x2: Int) {}
|
||||
}
|
||||
}
|
||||
|
||||
object O {
|
||||
fun test(vararg x1: Int, vararg x2: Int) {}
|
||||
|
||||
class CC(vararg x1: Int, vararg x2: Int, b: Boolean) {
|
||||
constructor(vararg x1: Int, vararg x2: Int) {}
|
||||
fun test(vararg x1: Int, vararg x2: Int) {}
|
||||
}
|
||||
}
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER -PRIMARY_CONSTRUCTOR_DELEGATION_CALL_EXPECTED
|
||||
fun test(<!MULTIPLE_VARARG_PARAMETERS!>vararg<!> x1: Int, <!MULTIPLE_VARARG_PARAMETERS!>vararg<!> x2: Int) {
|
||||
fun test2(<!MULTIPLE_VARARG_PARAMETERS!>vararg<!> x1: Int, <!MULTIPLE_VARARG_PARAMETERS!>vararg<!> x2: Int) {
|
||||
|
||||
+4
-4
@@ -2,11 +2,11 @@ fun f(
|
||||
val a: Int,
|
||||
var b: Int,
|
||||
c: Int,
|
||||
vararg var d: Int,
|
||||
vararg val e: Int,
|
||||
vararg f: Int
|
||||
<!MULTIPLE_VARARG_PARAMETERS!>vararg<!> var d: Int,
|
||||
<!MULTIPLE_VARARG_PARAMETERS!>vararg<!> val e: Int,
|
||||
<!MULTIPLE_VARARG_PARAMETERS!>vararg<!> f: Int
|
||||
) {
|
||||
|
||||
|
||||
a + b + c + d[0] + e[0] + f[0] // to avoid 'unused parameter'
|
||||
}
|
||||
}
|
||||
|
||||
-12
@@ -1,12 +0,0 @@
|
||||
// !LANGUAGE: +InlineClasses
|
||||
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
inline class MyInt(val x: Int)
|
||||
inline class MyString(val x: String)
|
||||
|
||||
annotation class Ann1(val a: <!INVALID_TYPE_OF_ANNOTATION_MEMBER!>MyInt<!>)
|
||||
annotation class Ann2(val a: <!INVALID_TYPE_OF_ANNOTATION_MEMBER!>Array<MyString><!>)
|
||||
annotation class Ann3(vararg val a: <!INVALID_TYPE_OF_ANNOTATION_MEMBER!>MyInt<!>)
|
||||
|
||||
annotation class Ann4(val a: KClass<MyInt>)
|
||||
+1
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !LANGUAGE: +InlineClasses
|
||||
|
||||
import kotlin.reflect.KClass
|
||||
|
||||
Vendored
+7
-7
@@ -3,19 +3,19 @@
|
||||
|
||||
inline class Foo(val x: Int)
|
||||
|
||||
fun f1(vararg a: Foo) {}
|
||||
fun f2(vararg a: Foo?) {}
|
||||
fun f1(<!FORBIDDEN_VARARG_PARAMETER_TYPE!>vararg<!> a: Foo) {}
|
||||
fun f2(<!FORBIDDEN_VARARG_PARAMETER_TYPE!>vararg<!> a: Foo?) {}
|
||||
|
||||
class A {
|
||||
fun f3(a0: Int, vararg a1: Foo) {
|
||||
fun f4(vararg a: Foo) {}
|
||||
fun f3(a0: Int, <!FORBIDDEN_VARARG_PARAMETER_TYPE!>vararg<!> a1: Foo) {
|
||||
fun f4(<!FORBIDDEN_VARARG_PARAMETER_TYPE!>vararg<!> a: Foo) {}
|
||||
|
||||
val g = fun (<!USELESS_VARARG_ON_PARAMETER!>vararg v: Foo<!>) {}
|
||||
}
|
||||
}
|
||||
|
||||
class B(vararg val s: Foo) {
|
||||
constructor(a: Int, vararg s: Foo) : this(*s)
|
||||
class B(<!FORBIDDEN_VARARG_PARAMETER_TYPE!>vararg<!> val s: Foo) {
|
||||
constructor(a: Int, <!FORBIDDEN_VARARG_PARAMETER_TYPE!>vararg<!> s: Foo) : this(*s)
|
||||
}
|
||||
|
||||
annotation class Ann(vararg val f: <!INVALID_TYPE_OF_ANNOTATION_MEMBER!>Foo<!>)
|
||||
annotation class Ann(<!FORBIDDEN_VARARG_PARAMETER_TYPE!>vararg<!> val f: <!INVALID_TYPE_OF_ANNOTATION_MEMBER!>Foo<!>)
|
||||
|
||||
+1
-1
@@ -9,4 +9,4 @@ class ValueParam(vararg val a: ULong)
|
||||
|
||||
annotation class Ann(vararg val a: <!INVALID_TYPE_OF_ANNOTATION_MEMBER!>UInt<!>)
|
||||
|
||||
fun array(vararg a: UIntArray) {}
|
||||
fun array(<!FORBIDDEN_VARARG_PARAMETER_TYPE!>vararg<!> a: UIntArray) {}
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
|
||||
fun testVarargOfNothing(vararg v: Nothing) {}
|
||||
|
||||
fun testVarargOfNNothing(vararg v: Nothing?) {}
|
||||
|
||||
fun <T : Nothing?> testVarargOfT(vararg v: T) {}
|
||||
|
||||
fun outer() {
|
||||
fun testVarargOfNothing(vararg v: Nothing) {}
|
||||
|
||||
fun testVarargOfNNothing(vararg v: Nothing?) {}
|
||||
|
||||
fun <T : Nothing?> testVarargOfT(vararg v: T) {}
|
||||
}
|
||||
@@ -1,3 +1,4 @@
|
||||
// FIR_IDENTICAL
|
||||
// !DIAGNOSTICS: -UNUSED_PARAMETER
|
||||
|
||||
fun testVarargOfNothing(<!FORBIDDEN_VARARG_PARAMETER_TYPE!>vararg<!> v: Nothing) {}
|
||||
|
||||
Vendored
+1
-1
@@ -11,7 +11,7 @@ fun params(
|
||||
r3: ResultAlias<String>,
|
||||
r4: List<Result<Int>>,
|
||||
r5: InlineResult<Int>,
|
||||
vararg r6: Result<Int>
|
||||
<!FORBIDDEN_VARARG_PARAMETER_TYPE!>vararg<!> r6: Result<Int>
|
||||
) {}
|
||||
|
||||
class CtorParams(r1: Result<Int>)
|
||||
|
||||
Vendored
+1
-1
@@ -11,7 +11,7 @@ fun params(
|
||||
r3: ResultAlias<String>,
|
||||
r4: List<Result<Int>>,
|
||||
r5: InlineResult<Int>,
|
||||
vararg r6: Result<Int>
|
||||
<!FORBIDDEN_VARARG_PARAMETER_TYPE!>vararg<!> r6: Result<Int>
|
||||
) {}
|
||||
|
||||
class CtorParams(r1: Result<Int>)
|
||||
|
||||
Reference in New Issue
Block a user