diff --git a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirFunctionParameterChecker.kt b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirFunctionParameterChecker.kt index 2ee138252fb..34feabbba3b 100644 --- a/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirFunctionParameterChecker.kt +++ b/compiler/fir/checkers/src/org/jetbrains/kotlin/fir/analysis/checkers/declaration/FirFunctionParameterChecker.kt @@ -62,7 +62,11 @@ object FirFunctionParameterChecker : FirFunctionChecker() { } for (varargParameter in varargParameters) { - val varargParameterType = varargParameter.returnTypeRef.coneType.arrayElementType() ?: continue + val coneType = varargParameter.returnTypeRef.coneType + val varargParameterType = when (function) { + is FirAnonymousFunction -> coneType + else -> coneType.arrayElementType() + } ?: continue // LUB is checked to ensure varargParameterType may // never be anything except `Nothing` or `Nothing?` // in case it is a complex type that quantifies diff --git a/compiler/testData/diagnostics/tests/inlineClasses/varargsOnParametersOfInlineClassType.fir.kt b/compiler/testData/diagnostics/tests/inlineClasses/varargsOnParametersOfInlineClassType.fir.kt deleted file mode 100644 index 938e265af68..00000000000 --- a/compiler/testData/diagnostics/tests/inlineClasses/varargsOnParametersOfInlineClassType.fir.kt +++ /dev/null @@ -1,21 +0,0 @@ -// !LANGUAGE: +InlineClasses, -JvmInlineValueClasses -// !DIAGNOSTICS: -UNUSED_PARAMETER, -UNUSED_VARIABLE, -UNUSED_ANONYMOUS_PARAMETER - -inline class Foo(val x: Int) - -fun f1(vararg a: Foo) {} -fun f2(vararg a: Foo?) {} - -class A { - fun f3(a0: Int, vararg a1: Foo) { - fun f4(vararg a: Foo) {} - - val g = fun (vararg v: Foo) {} - } -} - -class B(vararg val s: Foo) { - constructor(a: Int, vararg s: Foo) : this(*s) -} - -annotation class Ann(vararg val f: Foo) diff --git a/compiler/testData/diagnostics/tests/inlineClasses/varargsOnParametersOfInlineClassType.kt b/compiler/testData/diagnostics/tests/inlineClasses/varargsOnParametersOfInlineClassType.kt index 456a4ef3157..7fbf02cf33d 100644 --- a/compiler/testData/diagnostics/tests/inlineClasses/varargsOnParametersOfInlineClassType.kt +++ b/compiler/testData/diagnostics/tests/inlineClasses/varargsOnParametersOfInlineClassType.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // !LANGUAGE: +InlineClasses, -JvmInlineValueClasses // !DIAGNOSTICS: -UNUSED_PARAMETER, -UNUSED_VARIABLE, -UNUSED_ANONYMOUS_PARAMETER diff --git a/compiler/testData/diagnostics/tests/valueClasses/varargsOnParametersOfValueClassType.fir.kt b/compiler/testData/diagnostics/tests/valueClasses/varargsOnParametersOfValueClassType.fir.kt deleted file mode 100644 index cdcc85b73f5..00000000000 --- a/compiler/testData/diagnostics/tests/valueClasses/varargsOnParametersOfValueClassType.fir.kt +++ /dev/null @@ -1,28 +0,0 @@ -// !SKIP_JAVAC -// !LANGUAGE: +InlineClasses -// ALLOW_KOTLIN_PACKAGE -// !DIAGNOSTICS: -UNUSED_PARAMETER, -UNUSED_VARIABLE, -UNUSED_ANONYMOUS_PARAMETER - -package kotlin.jvm - -annotation class JvmInline - -@JvmInline -value class Foo(val x: Int) - -fun f1(vararg a: Foo) {} -fun f2(vararg a: Foo?) {} - -class A { - fun f3(a0: Int, vararg a1: Foo) { - fun f4(vararg a: Foo) {} - - val g = fun (vararg v: Foo) {} - } -} - -class B(vararg val s: Foo) { - constructor(a: Int, vararg s: Foo) : this(*s) -} - -annotation class Ann(vararg val f: Foo) diff --git a/compiler/testData/diagnostics/tests/valueClasses/varargsOnParametersOfValueClassType.kt b/compiler/testData/diagnostics/tests/valueClasses/varargsOnParametersOfValueClassType.kt index fe238bb0817..2d069f2e291 100644 --- a/compiler/testData/diagnostics/tests/valueClasses/varargsOnParametersOfValueClassType.kt +++ b/compiler/testData/diagnostics/tests/valueClasses/varargsOnParametersOfValueClassType.kt @@ -1,3 +1,4 @@ +// FIR_IDENTICAL // !SKIP_JAVAC // !LANGUAGE: +InlineClasses // ALLOW_KOTLIN_PACKAGE @@ -18,6 +19,7 @@ class A { fun f4(vararg a: Foo) {} val g = fun (vararg v: Foo) {} + fun (vararg v: Foo) {} } }