FIR: fix vararg remapping that merged named vararg
This commit is contained in:
committed by
Mikhail Glukhikh
parent
29b23e79f3
commit
7af564c9f2
+6
-6
@@ -9,10 +9,7 @@ import org.jetbrains.kotlin.fir.*
|
||||
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
|
||||
import org.jetbrains.kotlin.fir.diagnostics.ConeSimpleDiagnostic
|
||||
import org.jetbrains.kotlin.fir.diagnostics.DiagnosticKind
|
||||
import org.jetbrains.kotlin.fir.expressions.FirArgumentList
|
||||
import org.jetbrains.kotlin.fir.expressions.FirBlock
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.FirReturnExpression
|
||||
import org.jetbrains.kotlin.fir.expressions.*
|
||||
import org.jetbrains.kotlin.fir.expressions.builder.buildVarargArgumentsExpression
|
||||
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
|
||||
import org.jetbrains.kotlin.fir.types.*
|
||||
@@ -52,8 +49,11 @@ internal fun remapArgumentsWithVararg(
|
||||
this.typeRef = varargParameterTypeRef.withReplacedConeType(varargArrayType)
|
||||
for ((i, arg) in argumentList.withIndex()) {
|
||||
val valueParameter = argumentMapping.getValue(arg)
|
||||
if (valueParameter.isVararg) {
|
||||
// `arg` is a vararg argument.
|
||||
// Collect arguments if `arg` is a vararg argument of interest or other vararg arguments.
|
||||
if (valueParameter == varargParameter ||
|
||||
// NB: don't pull out of named arguments.
|
||||
(valueParameter.isVararg && arg !is FirNamedArgumentExpression)
|
||||
) {
|
||||
arguments += arg
|
||||
} else if (arguments.isEmpty()) {
|
||||
// `arg` is BEFORE the vararg arguments.
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
// IGNORE_BACKEND_FIR: JVM_IR
|
||||
// WITH_REFLECT
|
||||
|
||||
// TARGET_BACKEND: JVM
|
||||
|
||||
Reference in New Issue
Block a user