fixup! [FIR JS] KT-57200: Allow dynamic varargs
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 a8f0a95..2ee1382 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
@@ -63,6 +63,10 @@ for (varargParameter in varargParameters) { val varargParameterType = varargParameter.returnTypeRef.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 + // over many other types. if (varargParameterType.leastUpperBound(context.session).isNothingOrNullableNothing || (varargParameterType.isValueClass(context.session) && !varargParameterType.isUnsignedTypeOrNullableUnsignedType) // Note: comparing with FE1.0, we skip checking if the type is not primitive because primitive types are not inline. That
diff --git a/compiler/fir/cones/src/org/jetbrains/kotlin/fir/types/ConeBuiltinTypeUtils.kt b/compiler/fir/cones/src/org/jetbrains/kotlin/fir/types/ConeBuiltinTypeUtils.kt index 300f4c7..865b9c7 100644 --- a/compiler/fir/cones/src/org/jetbrains/kotlin/fir/types/ConeBuiltinTypeUtils.kt +++ b/compiler/fir/cones/src/org/jetbrains/kotlin/fir/types/ConeBuiltinTypeUtils.kt
@@ -19,12 +19,12 @@ val ConeKotlinType.isNullableAny: Boolean get() = isBuiltinType(StandardClassIds.Any, true) val ConeKotlinType.isNothing: Boolean get() = isBuiltinType(StandardClassIds.Nothing, false) val ConeKotlinType.isNullableNothing: Boolean get() = isBuiltinType(StandardClassIds.Nothing, true) -val ConeKotlinType.isNothingOrNullableNothing: Boolean get() = isAnyOfBuiltinType(setOf(StandardClassIds.Nothing)) +val ConeKotlinType.isNothingOrNullableNothing: Boolean get() = isBuiltinType(StandardClassIds.Nothing, null) val ConeKotlinType.isUnit: Boolean get() = isBuiltinType(StandardClassIds.Unit, false) val ConeKotlinType.isBoolean: Boolean get() = isBuiltinType(StandardClassIds.Boolean, false) val ConeKotlinType.isNullableBoolean: Boolean get() = isBuiltinType(StandardClassIds.Boolean, true) -val ConeKotlinType.isBooleanOrNullableBoolean: Boolean get() = isAnyOfBuiltinType(setOf(StandardClassIds.Boolean)) +val ConeKotlinType.isBooleanOrNullableBoolean: Boolean get() = isBuiltinType(StandardClassIds.Boolean, null) val ConeKotlinType.isChar: Boolean get() = isBuiltinType(StandardClassIds.Char, false) val ConeKotlinType.isString: Boolean get() = isBuiltinType(StandardClassIds.String, false)