[FIR] Expand type of vararg parameter before constructing array type

This helps to have a primitive array instead of an array of primitives
as the type of vararg value parameter. Also, this prevents
ABI-incompatibility with the libraries (KLIBs) compiled with K1.

^KT-65588
This commit is contained in:
Dmitriy Dolovov
2024-02-14 12:36:01 +01:00
committed by Space Team
parent 3962f26583
commit 9219a8f485
17 changed files with 551 additions and 8 deletions
@@ -618,6 +618,12 @@ public class FirLightTreeJvmIrTextTestGenerated extends AbstractFirLightTreeJvmI
runTest("compiler/testData/ir/irText/declarations/typeAlias.kt");
}
@Test
@TestMetadata("typeAliasOfPrimitiveTypeInVarargArgument.kt")
public void testTypeAliasOfPrimitiveTypeInVarargArgument() throws Exception {
runTest("compiler/testData/ir/irText/declarations/typeAliasOfPrimitiveTypeInVarargArgument.kt");
}
@Nested
@TestMetadata("compiler/testData/ir/irText/declarations/annotations")
@TestDataPath("$PROJECT_ROOT")
@@ -618,6 +618,12 @@ public class FirPsiJvmIrTextTestGenerated extends AbstractFirPsiJvmIrTextTest {
runTest("compiler/testData/ir/irText/declarations/typeAlias.kt");
}
@Test
@TestMetadata("typeAliasOfPrimitiveTypeInVarargArgument.kt")
public void testTypeAliasOfPrimitiveTypeInVarargArgument() throws Exception {
runTest("compiler/testData/ir/irText/declarations/typeAliasOfPrimitiveTypeInVarargArgument.kt");
}
@Nested
@TestMetadata("compiler/testData/ir/irText/declarations/annotations")
@TestDataPath("$PROJECT_ROOT")
@@ -208,8 +208,8 @@ open class FirTypeResolveTransformer(
.transformAnnotations(this, data)
if (property.isFromVararg == true) {
property.transformTypeToArrayType()
property.backingField?.transformTypeToArrayType()
property.transformTypeToArrayType(session)
property.backingField?.transformTypeToArrayType(session)
setAccessorTypesByPropertyType(property)
}
@@ -339,7 +339,7 @@ open class FirTypeResolveTransformer(
withDeclaration(valueParameter) {
valueParameter.transformReturnTypeRef(this, data)
valueParameter.transformAnnotations(this, data)
valueParameter.transformVarargTypeToArrayType()
valueParameter.transformVarargTypeToArrayType(session)
valueParameter
}
}
@@ -6,23 +6,25 @@
package org.jetbrains.kotlin.fir.resolve.transformers
import org.jetbrains.kotlin.KtFakeSourceElementKind
import org.jetbrains.kotlin.fir.FirSession
import org.jetbrains.kotlin.fir.copyWithNewSourceKind
import org.jetbrains.kotlin.fir.declarations.FirCallableDeclaration
import org.jetbrains.kotlin.fir.declarations.FirClass
import org.jetbrains.kotlin.fir.declarations.FirValueParameter
import org.jetbrains.kotlin.fir.resolve.fullyExpandedType
import org.jetbrains.kotlin.fir.types.ConeKotlinTypeProjectionOut
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
import org.jetbrains.kotlin.fir.types.builder.buildResolvedTypeRef
import org.jetbrains.kotlin.fir.types.coneType
import org.jetbrains.kotlin.fir.types.createArrayType
internal fun FirValueParameter.transformVarargTypeToArrayType() {
internal fun FirValueParameter.transformVarargTypeToArrayType(session: FirSession) {
if (isVararg) {
this.transformTypeToArrayType()
this.transformTypeToArrayType(session)
}
}
internal fun FirCallableDeclaration.transformTypeToArrayType() {
internal fun FirCallableDeclaration.transformTypeToArrayType(session: FirSession) {
val returnTypeRef = this.returnTypeRef
require(returnTypeRef is FirResolvedTypeRef)
// If the delegated type is already resolved, it means we have already created a resolved array type for this vararg type declaration.
@@ -30,7 +32,7 @@ internal fun FirCallableDeclaration.transformTypeToArrayType() {
if (returnTypeRef.delegatedTypeRef is FirResolvedTypeRef &&
returnTypeRef.delegatedTypeRef?.source?.kind == KtFakeSourceElementKind.ArrayTypeFromVarargParameter
) return
val returnType = returnTypeRef.coneType
val returnType = returnTypeRef.coneType.fullyExpandedType(session)
replaceReturnTypeRef(
buildResolvedTypeRef {
@@ -94,7 +94,7 @@ open class FirDeclarationsResolveTransformer(
if (callableMember is FirFunction) {
callableMember.valueParameters.forEach {
it.transformReturnTypeRef(transformer, ResolutionMode.ContextIndependent)
it.transformVarargTypeToArrayType()
it.transformVarargTypeToArrayType(transformer.session)
}
}
}
@@ -0,0 +1,133 @@
FILE fqName:<root> fileName:/typeAliasOfPrimitiveTypeInVarargArgument.kt
TYPEALIAS name:MyByte visibility:public expandedType:kotlin.Byte
TYPEALIAS name:MyShort visibility:public expandedType:kotlin.Short
TYPEALIAS name:MyInt visibility:public expandedType:kotlin.Int
TYPEALIAS name:MyLong visibility:public expandedType:kotlin.Long
TYPEALIAS name:MyUByte visibility:public expandedType:kotlin.UByte
TYPEALIAS name:MyUShort visibility:public expandedType:kotlin.UShort
TYPEALIAS name:MyUInt visibility:public expandedType:kotlin.UInt
TYPEALIAS name:MyULong visibility:public expandedType:kotlin.ULong
TYPEALIAS name:MyFloat visibility:public expandedType:kotlin.Float
TYPEALIAS name:MyDouble visibility:public expandedType:kotlin.Double
TYPEALIAS name:MyChar visibility:public expandedType:kotlin.Char
TYPEALIAS name:MyBoolean visibility:public expandedType:kotlin.Boolean
FUN name:checkByte visibility:public modality:FINAL <> (values:kotlin.ByteArray) returnType:kotlin.Unit
VALUE_PARAMETER name:values index:0 type:kotlin.ByteArray varargElementType:kotlin.Byte [vararg]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun checkByte (vararg values: kotlin.Byte): kotlin.Unit declared in <root>'
GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
FUN name:checkShort visibility:public modality:FINAL <> (values:kotlin.ShortArray) returnType:kotlin.Unit
VALUE_PARAMETER name:values index:0 type:kotlin.ShortArray varargElementType:kotlin.Short [vararg]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun checkShort (vararg values: kotlin.Short): kotlin.Unit declared in <root>'
GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
FUN name:checkInt visibility:public modality:FINAL <> (values:kotlin.IntArray) returnType:kotlin.Unit
VALUE_PARAMETER name:values index:0 type:kotlin.IntArray varargElementType:kotlin.Int [vararg]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun checkInt (vararg values: kotlin.Int): kotlin.Unit declared in <root>'
GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
FUN name:checkLong visibility:public modality:FINAL <> (values:kotlin.LongArray) returnType:kotlin.Unit
VALUE_PARAMETER name:values index:0 type:kotlin.LongArray varargElementType:kotlin.Long [vararg]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun checkLong (vararg values: kotlin.Long): kotlin.Unit declared in <root>'
GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
FUN name:checkMyByte visibility:public modality:FINAL <> (values:kotlin.ByteArray) returnType:kotlin.Unit
VALUE_PARAMETER name:values index:0 type:kotlin.ByteArray varargElementType:kotlin.Byte [vararg]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun checkMyByte (vararg values: kotlin.Byte): kotlin.Unit declared in <root>'
GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
FUN name:checkMyShort visibility:public modality:FINAL <> (values:kotlin.ShortArray) returnType:kotlin.Unit
VALUE_PARAMETER name:values index:0 type:kotlin.ShortArray varargElementType:kotlin.Short [vararg]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun checkMyShort (vararg values: kotlin.Short): kotlin.Unit declared in <root>'
GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
FUN name:checkMyInt visibility:public modality:FINAL <> (values:kotlin.IntArray) returnType:kotlin.Unit
VALUE_PARAMETER name:values index:0 type:kotlin.IntArray varargElementType:kotlin.Int [vararg]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun checkMyInt (vararg values: kotlin.Int): kotlin.Unit declared in <root>'
GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
FUN name:checkMyLong visibility:public modality:FINAL <> (values:kotlin.LongArray) returnType:kotlin.Unit
VALUE_PARAMETER name:values index:0 type:kotlin.LongArray varargElementType:kotlin.Long [vararg]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun checkMyLong (vararg values: kotlin.Long): kotlin.Unit declared in <root>'
GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
FUN name:checkUByte visibility:public modality:FINAL <> (values:kotlin.UByteArray) returnType:kotlin.Unit
VALUE_PARAMETER name:values index:0 type:kotlin.UByteArray varargElementType:kotlin.UByte [vararg]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun checkUByte (vararg values: kotlin.UByte): kotlin.Unit declared in <root>'
GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
FUN name:checkUShort visibility:public modality:FINAL <> (values:kotlin.UShortArray) returnType:kotlin.Unit
VALUE_PARAMETER name:values index:0 type:kotlin.UShortArray varargElementType:kotlin.UShort [vararg]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun checkUShort (vararg values: kotlin.UShort): kotlin.Unit declared in <root>'
GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
FUN name:checkUInt visibility:public modality:FINAL <> (values:kotlin.UIntArray) returnType:kotlin.Unit
VALUE_PARAMETER name:values index:0 type:kotlin.UIntArray varargElementType:kotlin.UInt [vararg]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun checkUInt (vararg values: kotlin.UInt): kotlin.Unit declared in <root>'
GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
FUN name:checkULong visibility:public modality:FINAL <> (values:kotlin.ULongArray) returnType:kotlin.Unit
VALUE_PARAMETER name:values index:0 type:kotlin.ULongArray varargElementType:kotlin.ULong [vararg]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun checkULong (vararg values: kotlin.ULong): kotlin.Unit declared in <root>'
GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
FUN name:checkMyUByte visibility:public modality:FINAL <> (values:kotlin.UByteArray) returnType:kotlin.Unit
VALUE_PARAMETER name:values index:0 type:kotlin.UByteArray varargElementType:kotlin.UByte [vararg]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun checkMyUByte (vararg values: kotlin.UByte): kotlin.Unit declared in <root>'
GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
FUN name:checkMyUShort visibility:public modality:FINAL <> (values:kotlin.UShortArray) returnType:kotlin.Unit
VALUE_PARAMETER name:values index:0 type:kotlin.UShortArray varargElementType:kotlin.UShort [vararg]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun checkMyUShort (vararg values: kotlin.UShort): kotlin.Unit declared in <root>'
GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
FUN name:checkMyUInt visibility:public modality:FINAL <> (values:kotlin.UIntArray) returnType:kotlin.Unit
VALUE_PARAMETER name:values index:0 type:kotlin.UIntArray varargElementType:kotlin.UInt [vararg]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun checkMyUInt (vararg values: kotlin.UInt): kotlin.Unit declared in <root>'
GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
FUN name:checkMyULong visibility:public modality:FINAL <> (values:kotlin.ULongArray) returnType:kotlin.Unit
VALUE_PARAMETER name:values index:0 type:kotlin.ULongArray varargElementType:kotlin.ULong [vararg]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun checkMyULong (vararg values: kotlin.ULong): kotlin.Unit declared in <root>'
GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
FUN name:checkFloat visibility:public modality:FINAL <> (values:kotlin.FloatArray) returnType:kotlin.Unit
VALUE_PARAMETER name:values index:0 type:kotlin.FloatArray varargElementType:kotlin.Float [vararg]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun checkFloat (vararg values: kotlin.Float): kotlin.Unit declared in <root>'
GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
FUN name:checkDouble visibility:public modality:FINAL <> (values:kotlin.DoubleArray) returnType:kotlin.Unit
VALUE_PARAMETER name:values index:0 type:kotlin.DoubleArray varargElementType:kotlin.Double [vararg]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun checkDouble (vararg values: kotlin.Double): kotlin.Unit declared in <root>'
GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
FUN name:checkMyFloat visibility:public modality:FINAL <> (values:kotlin.FloatArray) returnType:kotlin.Unit
VALUE_PARAMETER name:values index:0 type:kotlin.FloatArray varargElementType:kotlin.Float [vararg]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun checkMyFloat (vararg values: kotlin.Float): kotlin.Unit declared in <root>'
GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
FUN name:checkMyDouble visibility:public modality:FINAL <> (values:kotlin.DoubleArray) returnType:kotlin.Unit
VALUE_PARAMETER name:values index:0 type:kotlin.DoubleArray varargElementType:kotlin.Double [vararg]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun checkMyDouble (vararg values: kotlin.Double): kotlin.Unit declared in <root>'
GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
FUN name:checkChar visibility:public modality:FINAL <> (values:kotlin.CharArray) returnType:kotlin.Unit
VALUE_PARAMETER name:values index:0 type:kotlin.CharArray varargElementType:kotlin.Char [vararg]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun checkChar (vararg values: kotlin.Char): kotlin.Unit declared in <root>'
GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
FUN name:checkBoolean visibility:public modality:FINAL <> (values:kotlin.BooleanArray) returnType:kotlin.Unit
VALUE_PARAMETER name:values index:0 type:kotlin.BooleanArray varargElementType:kotlin.Boolean [vararg]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun checkBoolean (vararg values: kotlin.Boolean): kotlin.Unit declared in <root>'
GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
FUN name:checkMyChar visibility:public modality:FINAL <> (values:kotlin.CharArray) returnType:kotlin.Unit
VALUE_PARAMETER name:values index:0 type:kotlin.CharArray varargElementType:kotlin.Char [vararg]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun checkMyChar (vararg values: kotlin.Char): kotlin.Unit declared in <root>'
GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
FUN name:checkMyBoolean visibility:public modality:FINAL <> (values:kotlin.BooleanArray) returnType:kotlin.Unit
VALUE_PARAMETER name:values index:0 type:kotlin.BooleanArray varargElementType:kotlin.Boolean [vararg]
BLOCK_BODY
RETURN type=kotlin.Nothing from='public final fun checkMyBoolean (vararg values: kotlin.Boolean): kotlin.Unit declared in <root>'
GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
@@ -0,0 +1,50 @@
// FIR_IDENTICAL
// WITH_STDLIB
typealias MyByte = Byte
typealias MyShort = Short
typealias MyInt = Int
typealias MyLong = Long
typealias MyUByte = UByte
typealias MyUShort = UShort
typealias MyUInt = UInt
typealias MyULong = ULong
typealias MyFloat = Float
typealias MyDouble = Double
typealias MyChar = Char
typealias MyBoolean = Boolean
fun checkByte(vararg values: Byte) = Unit
fun checkShort(vararg values: Short) = Unit
fun checkInt(vararg values: Int) = Unit
fun checkLong(vararg values: Long) = Unit
fun checkMyByte(vararg values: MyByte) = Unit
fun checkMyShort(vararg values: MyShort) = Unit
fun checkMyInt(vararg values: MyInt) = Unit
fun checkMyLong(vararg values: MyLong) = Unit
fun checkUByte(vararg values: UByte) = Unit
fun checkUShort(vararg values: UShort) = Unit
fun checkUInt(vararg values: UInt) = Unit
fun checkULong(vararg values: ULong) = Unit
fun checkMyUByte(vararg values: MyUByte) = Unit
fun checkMyUShort(vararg values: MyUShort) = Unit
fun checkMyUInt(vararg values: MyUInt) = Unit
fun checkMyULong(vararg values: MyULong) = Unit
fun checkFloat(vararg values: Float) = Unit
fun checkDouble(vararg values: Double) = Unit
fun checkMyFloat(vararg values: MyFloat) = Unit
fun checkMyDouble(vararg values: MyDouble) = Unit
fun checkChar(vararg values: Char) = Unit
fun checkBoolean(vararg values: Boolean) = Unit
fun checkMyChar(vararg values: MyChar) = Unit
fun checkMyBoolean(vararg values: MyBoolean) = Unit
@@ -0,0 +1,107 @@
typealias MyByte = Byte
typealias MyShort = Short
typealias MyInt = Int
typealias MyLong = Long
typealias MyUByte = UByte
typealias MyUShort = UShort
typealias MyUInt = UInt
typealias MyULong = ULong
typealias MyFloat = Float
typealias MyDouble = Double
typealias MyChar = Char
typealias MyBoolean = Boolean
fun checkByte(vararg values: Byte) {
return Unit
}
fun checkShort(vararg values: Short) {
return Unit
}
fun checkInt(vararg values: Int) {
return Unit
}
fun checkLong(vararg values: Long) {
return Unit
}
fun checkMyByte(vararg values: Byte) {
return Unit
}
fun checkMyShort(vararg values: Short) {
return Unit
}
fun checkMyInt(vararg values: Int) {
return Unit
}
fun checkMyLong(vararg values: Long) {
return Unit
}
fun checkUByte(vararg values: UByte) {
return Unit
}
fun checkUShort(vararg values: UShort) {
return Unit
}
fun checkUInt(vararg values: UInt) {
return Unit
}
fun checkULong(vararg values: ULong) {
return Unit
}
fun checkMyUByte(vararg values: UByte) {
return Unit
}
fun checkMyUShort(vararg values: UShort) {
return Unit
}
fun checkMyUInt(vararg values: UInt) {
return Unit
}
fun checkMyULong(vararg values: ULong) {
return Unit
}
fun checkFloat(vararg values: Float) {
return Unit
}
fun checkDouble(vararg values: Double) {
return Unit
}
fun checkMyFloat(vararg values: Float) {
return Unit
}
fun checkMyDouble(vararg values: Double) {
return Unit
}
fun checkChar(vararg values: Char) {
return Unit
}
fun checkBoolean(vararg values: Boolean) {
return Unit
}
fun checkMyChar(vararg values: Char) {
return Unit
}
fun checkMyBoolean(vararg values: Boolean) {
return Unit
}
@@ -0,0 +1,192 @@
// CHECK:
// Mangled name: #checkBoolean(kotlin.BooleanArray...){}
// Public signature: /checkBoolean|-8900573306860743345[0]
// Public signature debug description: checkBoolean(kotlin.BooleanArray...){}
fun checkBoolean(vararg values: Boolean): Unit
// CHECK:
// Mangled name: #checkByte(kotlin.ByteArray...){}
// Public signature: /checkByte|-1236162224121318215[0]
// Public signature debug description: checkByte(kotlin.ByteArray...){}
fun checkByte(vararg values: Byte): Unit
// CHECK:
// Mangled name: #checkChar(kotlin.CharArray...){}
// Public signature: /checkChar|4028794436901682784[0]
// Public signature debug description: checkChar(kotlin.CharArray...){}
fun checkChar(vararg values: Char): Unit
// CHECK:
// Mangled name: #checkDouble(kotlin.DoubleArray...){}
// Public signature: /checkDouble|8290238685806222977[0]
// Public signature debug description: checkDouble(kotlin.DoubleArray...){}
fun checkDouble(vararg values: Double): Unit
// CHECK:
// Mangled name: #checkFloat(kotlin.FloatArray...){}
// Public signature: /checkFloat|-8155707993237274223[0]
// Public signature debug description: checkFloat(kotlin.FloatArray...){}
fun checkFloat(vararg values: Float): Unit
// CHECK:
// Mangled name: #checkInt(kotlin.IntArray...){}
// Public signature: /checkInt|4583739980796207[0]
// Public signature debug description: checkInt(kotlin.IntArray...){}
fun checkInt(vararg values: Int): Unit
// CHECK:
// Mangled name: #checkLong(kotlin.LongArray...){}
// Public signature: /checkLong|-8989236926718089499[0]
// Public signature debug description: checkLong(kotlin.LongArray...){}
fun checkLong(vararg values: Long): Unit
// CHECK:
// Mangled name: #checkMyBoolean(kotlin.BooleanArray...){}
// Public signature: /checkMyBoolean|-5890207970004559376[0]
// Public signature debug description: checkMyBoolean(kotlin.BooleanArray...){}
fun checkMyBoolean(vararg values: Boolean): Unit
// CHECK:
// Mangled name: #checkMyByte(kotlin.ByteArray...){}
// Public signature: /checkMyByte|8598509431667985710[0]
// Public signature debug description: checkMyByte(kotlin.ByteArray...){}
fun checkMyByte(vararg values: Byte): Unit
// CHECK:
// Mangled name: #checkMyChar(kotlin.CharArray...){}
// Public signature: /checkMyChar|5192351702236597298[0]
// Public signature debug description: checkMyChar(kotlin.CharArray...){}
fun checkMyChar(vararg values: Char): Unit
// CHECK:
// Mangled name: #checkMyDouble(kotlin.DoubleArray...){}
// Public signature: /checkMyDouble|5543709509339167549[0]
// Public signature debug description: checkMyDouble(kotlin.DoubleArray...){}
fun checkMyDouble(vararg values: Double): Unit
// CHECK:
// Mangled name: #checkMyFloat(kotlin.FloatArray...){}
// Public signature: /checkMyFloat|-6679219747753787079[0]
// Public signature debug description: checkMyFloat(kotlin.FloatArray...){}
fun checkMyFloat(vararg values: Float): Unit
// CHECK:
// Mangled name: #checkMyInt(kotlin.IntArray...){}
// Public signature: /checkMyInt|-2811351994369715293[0]
// Public signature debug description: checkMyInt(kotlin.IntArray...){}
fun checkMyInt(vararg values: Int): Unit
// CHECK:
// Mangled name: #checkMyLong(kotlin.LongArray...){}
// Public signature: /checkMyLong|3940126759026537730[0]
// Public signature debug description: checkMyLong(kotlin.LongArray...){}
fun checkMyLong(vararg values: Long): Unit
// CHECK:
// Mangled name: #checkMyShort(kotlin.ShortArray...){}
// Public signature: /checkMyShort|-7805523702921298983[0]
// Public signature debug description: checkMyShort(kotlin.ShortArray...){}
fun checkMyShort(vararg values: Short): Unit
// CHECK:
// Mangled name: #checkMyUByte(kotlin.UByteArray...){}
// Public signature: /checkMyUByte|7955300320297277795[0]
// Public signature debug description: checkMyUByte(kotlin.UByteArray...){}
fun checkMyUByte(vararg values: UByte): Unit
// CHECK:
// Mangled name: #checkMyUInt(kotlin.UIntArray...){}
// Public signature: /checkMyUInt|-2622635368460611797[0]
// Public signature debug description: checkMyUInt(kotlin.UIntArray...){}
fun checkMyUInt(vararg values: UInt): Unit
// CHECK:
// Mangled name: #checkMyULong(kotlin.ULongArray...){}
// Public signature: /checkMyULong|9072087205927442218[0]
// Public signature debug description: checkMyULong(kotlin.ULongArray...){}
fun checkMyULong(vararg values: ULong): Unit
// CHECK:
// Mangled name: #checkMyUShort(kotlin.UShortArray...){}
// Public signature: /checkMyUShort|1511662805791199330[0]
// Public signature debug description: checkMyUShort(kotlin.UShortArray...){}
fun checkMyUShort(vararg values: UShort): Unit
// CHECK:
// Mangled name: #checkShort(kotlin.ShortArray...){}
// Public signature: /checkShort|7593907512713404632[0]
// Public signature debug description: checkShort(kotlin.ShortArray...){}
fun checkShort(vararg values: Short): Unit
// CHECK:
// Mangled name: #checkUByte(kotlin.UByteArray...){}
// Public signature: /checkUByte|-3348320895831596048[0]
// Public signature debug description: checkUByte(kotlin.UByteArray...){}
fun checkUByte(vararg values: UByte): Unit
// CHECK:
// Mangled name: #checkUInt(kotlin.UIntArray...){}
// Public signature: /checkUInt|-2411050561765822747[0]
// Public signature debug description: checkUInt(kotlin.UIntArray...){}
fun checkUInt(vararg values: UInt): Unit
// CHECK:
// Mangled name: #checkULong(kotlin.ULongArray...){}
// Public signature: /checkULong|-6184558403322521435[0]
// Public signature debug description: checkULong(kotlin.ULongArray...){}
fun checkULong(vararg values: ULong): Unit
// CHECK:
// Mangled name: #checkUShort(kotlin.UShortArray...){}
// Public signature: /checkUShort|3472066239065680351[0]
// Public signature debug description: checkUShort(kotlin.UShortArray...){}
fun checkUShort(vararg values: UShort): Unit
// CHECK:
// Mangled name: MyBoolean
// Public signature: /MyBoolean|null[0]
typealias MyBoolean = Boolean
// CHECK:
// Mangled name: MyByte
// Public signature: /MyByte|null[0]
typealias MyByte = Byte
// CHECK:
// Mangled name: MyChar
// Public signature: /MyChar|null[0]
typealias MyChar = Char
// CHECK:
// Mangled name: MyDouble
// Public signature: /MyDouble|null[0]
typealias MyDouble = Double
// CHECK:
// Mangled name: MyFloat
// Public signature: /MyFloat|null[0]
typealias MyFloat = Float
// CHECK:
// Mangled name: MyInt
// Public signature: /MyInt|null[0]
typealias MyInt = Int
// CHECK:
// Mangled name: MyLong
// Public signature: /MyLong|null[0]
typealias MyLong = Long
// CHECK:
// Mangled name: MyShort
// Public signature: /MyShort|null[0]
typealias MyShort = Short
// CHECK:
// Mangled name: MyUByte
// Public signature: /MyUByte|null[0]
typealias MyUByte = UByte
// CHECK:
// Mangled name: MyUInt
// Public signature: /MyUInt|null[0]
typealias MyUInt = UInt
// CHECK:
// Mangled name: MyULong
// Public signature: /MyULong|null[0]
typealias MyULong = ULong
// CHECK:
// Mangled name: MyUShort
// Public signature: /MyUShort|null[0]
typealias MyUShort = UShort
@@ -618,6 +618,12 @@ public class ClassicJvmIrTextTestGenerated extends AbstractClassicJvmIrTextTest
runTest("compiler/testData/ir/irText/declarations/typeAlias.kt");
}
@Test
@TestMetadata("typeAliasOfPrimitiveTypeInVarargArgument.kt")
public void testTypeAliasOfPrimitiveTypeInVarargArgument() throws Exception {
runTest("compiler/testData/ir/irText/declarations/typeAliasOfPrimitiveTypeInVarargArgument.kt");
}
@Nested
@TestMetadata("compiler/testData/ir/irText/declarations/annotations")
@TestDataPath("$PROJECT_ROOT")
@@ -468,6 +468,11 @@ public class KlibIrTextTestCaseGenerated extends AbstractKlibIrTextTestCase {
runTest("compiler/testData/ir/irText/declarations/typeAlias.kt");
}
@TestMetadata("typeAliasOfPrimitiveTypeInVarargArgument.kt")
public void testTypeAliasOfPrimitiveTypeInVarargArgument() throws Exception {
runTest("compiler/testData/ir/irText/declarations/typeAliasOfPrimitiveTypeInVarargArgument.kt");
}
@TestMetadata("compiler/testData/ir/irText/declarations/annotations")
@TestDataPath("$PROJECT_ROOT")
@RunWith(JUnit3RunnerWithInners.class)
@@ -534,6 +534,12 @@ public class FirLightTreeJsIrTextTestGenerated extends AbstractFirLightTreeJsIrT
runTest("compiler/testData/ir/irText/declarations/typeAlias.kt");
}
@Test
@TestMetadata("typeAliasOfPrimitiveTypeInVarargArgument.kt")
public void testTypeAliasOfPrimitiveTypeInVarargArgument() throws Exception {
runTest("compiler/testData/ir/irText/declarations/typeAliasOfPrimitiveTypeInVarargArgument.kt");
}
@Nested
@TestMetadata("compiler/testData/ir/irText/declarations/annotations")
@TestDataPath("$PROJECT_ROOT")
@@ -534,6 +534,12 @@ public class FirPsiJsIrTextTestGenerated extends AbstractFirPsiJsIrTextTest {
runTest("compiler/testData/ir/irText/declarations/typeAlias.kt");
}
@Test
@TestMetadata("typeAliasOfPrimitiveTypeInVarargArgument.kt")
public void testTypeAliasOfPrimitiveTypeInVarargArgument() throws Exception {
runTest("compiler/testData/ir/irText/declarations/typeAliasOfPrimitiveTypeInVarargArgument.kt");
}
@Nested
@TestMetadata("compiler/testData/ir/irText/declarations/annotations")
@TestDataPath("$PROJECT_ROOT")
@@ -534,6 +534,12 @@ public class ClassicJsIrTextTestGenerated extends AbstractClassicJsIrTextTest {
runTest("compiler/testData/ir/irText/declarations/typeAlias.kt");
}
@Test
@TestMetadata("typeAliasOfPrimitiveTypeInVarargArgument.kt")
public void testTypeAliasOfPrimitiveTypeInVarargArgument() throws Exception {
runTest("compiler/testData/ir/irText/declarations/typeAliasOfPrimitiveTypeInVarargArgument.kt");
}
@Nested
@TestMetadata("compiler/testData/ir/irText/declarations/annotations")
@TestDataPath("$PROJECT_ROOT")
@@ -534,6 +534,12 @@ public class ClassicNativeIrTextTestGenerated extends AbstractClassicNativeIrTex
runTest("compiler/testData/ir/irText/declarations/typeAlias.kt");
}
@Test
@TestMetadata("typeAliasOfPrimitiveTypeInVarargArgument.kt")
public void testTypeAliasOfPrimitiveTypeInVarargArgument() throws Exception {
runTest("compiler/testData/ir/irText/declarations/typeAliasOfPrimitiveTypeInVarargArgument.kt");
}
@Nested
@TestMetadata("compiler/testData/ir/irText/declarations/annotations")
@TestDataPath("$PROJECT_ROOT")
@@ -534,6 +534,12 @@ public class FirLightTreeNativeIrTextTestGenerated extends AbstractFirLightTreeN
runTest("compiler/testData/ir/irText/declarations/typeAlias.kt");
}
@Test
@TestMetadata("typeAliasOfPrimitiveTypeInVarargArgument.kt")
public void testTypeAliasOfPrimitiveTypeInVarargArgument() throws Exception {
runTest("compiler/testData/ir/irText/declarations/typeAliasOfPrimitiveTypeInVarargArgument.kt");
}
@Nested
@TestMetadata("compiler/testData/ir/irText/declarations/annotations")
@TestDataPath("$PROJECT_ROOT")
@@ -534,6 +534,12 @@ public class FirPsiNativeIrTextTestGenerated extends AbstractFirPsiNativeIrTextT
runTest("compiler/testData/ir/irText/declarations/typeAlias.kt");
}
@Test
@TestMetadata("typeAliasOfPrimitiveTypeInVarargArgument.kt")
public void testTypeAliasOfPrimitiveTypeInVarargArgument() throws Exception {
runTest("compiler/testData/ir/irText/declarations/typeAliasOfPrimitiveTypeInVarargArgument.kt");
}
@Nested
@TestMetadata("compiler/testData/ir/irText/declarations/annotations")
@TestDataPath("$PROJECT_ROOT")