Psi2Ir: fix usage of flexible vararg type after approximation
This only affects JVM IR, and this is similar to how this was done in the old JVM backend in `CallBasedArgumentGenerator.generateVararg`. #KT-52146 Fixed
This commit is contained in:
+6
@@ -48371,6 +48371,12 @@ public class FirBlackBoxCodegenTestGenerated extends AbstractFirBlackBoxCodegenT
|
|||||||
runTest("compiler/testData/codegen/box/vararg/kt46092.kt");
|
runTest("compiler/testData/codegen/box/vararg/kt46092.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("kt52146_samWithSelfTypeAndStarProjection.kt")
|
||||||
|
public void testKt52146_samWithSelfTypeAndStarProjection() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/vararg/kt52146_samWithSelfTypeAndStarProjection.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("kt581.kt")
|
@TestMetadata("kt581.kt")
|
||||||
public void testKt581() throws Exception {
|
public void testKt581() throws Exception {
|
||||||
|
|||||||
+7
-2
@@ -299,6 +299,11 @@ private fun StatementGenerator.generateReceiverForCalleeImportedFromObject(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private fun StatementGenerator.computeVarargType(type: KotlinType): IrType =
|
||||||
|
// Vararg type loaded from Java can be flexible, and have `Nothing` as lower bound after approximation. (See KT-52146.)
|
||||||
|
// Its upper bound should always have the form `Array<out T>`, though.
|
||||||
|
type.upperIfFlexible().toIrType()
|
||||||
|
|
||||||
private fun StatementGenerator.generateVarargExpressionUsing(
|
private fun StatementGenerator.generateVarargExpressionUsing(
|
||||||
varargArgument: VarargValueArgument,
|
varargArgument: VarargValueArgument,
|
||||||
valueParameter: ValueParameterDescriptor,
|
valueParameter: ValueParameterDescriptor,
|
||||||
@@ -319,7 +324,7 @@ private fun StatementGenerator.generateVarargExpressionUsing(
|
|||||||
val varargElementType =
|
val varargElementType =
|
||||||
valueParameter.varargElementType ?: throw AssertionError("Vararg argument for non-vararg parameter $valueParameter")
|
valueParameter.varargElementType ?: throw AssertionError("Vararg argument for non-vararg parameter $valueParameter")
|
||||||
|
|
||||||
val irVararg = IrVarargImpl(varargStartOffset, varargEndOffset, valueParameter.type.toIrType(), varargElementType.toIrType())
|
val irVararg = IrVarargImpl(varargStartOffset, varargEndOffset, computeVarargType(valueParameter.type), varargElementType.toIrType())
|
||||||
|
|
||||||
for (varargElementArgument in varargArgument.arguments) {
|
for (varargElementArgument in varargArgument.arguments) {
|
||||||
val ktArgumentExpression = varargElementArgument.getArgumentExpression()
|
val ktArgumentExpression = varargElementArgument.getArgumentExpression()
|
||||||
@@ -714,7 +719,7 @@ fun StatementGenerator.generateSamConversionForValueArgumentsIfRequired(call: Ca
|
|||||||
|
|
||||||
IrVarargImpl(
|
IrVarargImpl(
|
||||||
originalArgument.startOffset, originalArgument.endOffset,
|
originalArgument.startOffset, originalArgument.endOffset,
|
||||||
substitutedVarargType.toIrType(),
|
computeVarargType(substitutedVarargType),
|
||||||
irSamType
|
irSamType
|
||||||
).apply {
|
).apply {
|
||||||
originalArgument.elements.mapIndexedTo(elements) { index, element ->
|
originalArgument.elements.mapIndexedTo(elements) { index, element ->
|
||||||
|
|||||||
+27
@@ -0,0 +1,27 @@
|
|||||||
|
// TARGET_BACKEND: JVM
|
||||||
|
// FULL_JDK
|
||||||
|
// JVM_TARGET: 1.8
|
||||||
|
// FILE: J.java
|
||||||
|
|
||||||
|
import java.util.function.*;
|
||||||
|
|
||||||
|
public class J<SELF extends J<SELF, ACTUAL>, ACTUAL> {
|
||||||
|
public final SELF satisfies(Consumer<? super ACTUAL>... c) {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// FILE: box.kt
|
||||||
|
|
||||||
|
import java.util.function.*
|
||||||
|
|
||||||
|
fun test(j: J<*, *>) {
|
||||||
|
j.satisfies(Consumer { it is CharSequence })
|
||||||
|
j.satisfies({ it is CharSequence })
|
||||||
|
}
|
||||||
|
|
||||||
|
fun box(): String {
|
||||||
|
class K : J<K, String>()
|
||||||
|
test(K())
|
||||||
|
return "OK"
|
||||||
|
}
|
||||||
+12
-12
@@ -21,7 +21,7 @@ FILE fqName:<root> fileName:/arrayAsVarargAfterSamArgument.kt
|
|||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
RETURN type=kotlin.Nothing from='local final fun <anonymous> (): kotlin.Unit declared in <root>.test'
|
RETURN type=kotlin.Nothing from='local final fun <anonymous> (): kotlin.Unit declared in <root>.test'
|
||||||
GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
|
GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
|
||||||
strs: VARARG type=@[FlexibleNullability] kotlin.Array<out @[FlexibleNullability] kotlin.String?>? varargElementType=@[FlexibleNullability] kotlin.String?
|
strs: VARARG type=kotlin.Array<out @[FlexibleNullability] kotlin.String?>? varargElementType=@[FlexibleNullability] kotlin.String?
|
||||||
SPREAD_ELEMENT
|
SPREAD_ELEMENT
|
||||||
GET_VAR 'arr: kotlin.Array<kotlin.String> declared in <root>.test' type=kotlin.Array<kotlin.String> origin=null
|
GET_VAR 'arr: kotlin.Array<kotlin.String> declared in <root>.test' type=kotlin.Array<kotlin.String> origin=null
|
||||||
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
|
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
|
||||||
@@ -33,13 +33,13 @@ FILE fqName:<root> fileName:/arrayAsVarargAfterSamArgument.kt
|
|||||||
CALL 'public open fun foo1 (r: @[FlexibleNullability] java.lang.Runnable?, vararg strs: @[FlexibleNullability] kotlin.String?): @[FlexibleNullability] kotlin.String? declared in <root>.Test' type=@[FlexibleNullability] kotlin.String? origin=null
|
CALL 'public open fun foo1 (r: @[FlexibleNullability] java.lang.Runnable?, vararg strs: @[FlexibleNullability] kotlin.String?): @[FlexibleNullability] kotlin.String? declared in <root>.Test' type=@[FlexibleNullability] kotlin.String? origin=null
|
||||||
r: TYPE_OP type=@[FlexibleNullability] java.lang.Runnable? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] java.lang.Runnable?
|
r: TYPE_OP type=@[FlexibleNullability] java.lang.Runnable? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] java.lang.Runnable?
|
||||||
GET_VAR 'fn: kotlin.Function0<kotlin.Unit> declared in <root>.test' type=kotlin.Function0<kotlin.Unit> origin=null
|
GET_VAR 'fn: kotlin.Function0<kotlin.Unit> declared in <root>.test' type=kotlin.Function0<kotlin.Unit> origin=null
|
||||||
strs: VARARG type=@[FlexibleNullability] kotlin.Array<out @[FlexibleNullability] kotlin.String?>? varargElementType=@[FlexibleNullability] kotlin.String?
|
strs: VARARG type=kotlin.Array<out @[FlexibleNullability] kotlin.String?>? varargElementType=@[FlexibleNullability] kotlin.String?
|
||||||
SPREAD_ELEMENT
|
SPREAD_ELEMENT
|
||||||
GET_VAR 'arr: kotlin.Array<kotlin.String> declared in <root>.test' type=kotlin.Array<kotlin.String> origin=null
|
GET_VAR 'arr: kotlin.Array<kotlin.String> declared in <root>.test' type=kotlin.Array<kotlin.String> origin=null
|
||||||
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
|
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
|
||||||
CALL 'public open fun foo1 (r: @[FlexibleNullability] java.lang.Runnable?, vararg strs: @[FlexibleNullability] kotlin.String?): @[FlexibleNullability] kotlin.String? declared in <root>.Test' type=@[FlexibleNullability] kotlin.String? origin=null
|
CALL 'public open fun foo1 (r: @[FlexibleNullability] java.lang.Runnable?, vararg strs: @[FlexibleNullability] kotlin.String?): @[FlexibleNullability] kotlin.String? declared in <root>.Test' type=@[FlexibleNullability] kotlin.String? origin=null
|
||||||
r: GET_VAR 'r: java.lang.Runnable declared in <root>.test' type=java.lang.Runnable origin=null
|
r: GET_VAR 'r: java.lang.Runnable declared in <root>.test' type=java.lang.Runnable origin=null
|
||||||
strs: VARARG type=@[FlexibleNullability] kotlin.Array<out @[FlexibleNullability] kotlin.String?>? varargElementType=@[FlexibleNullability] kotlin.String?
|
strs: VARARG type=kotlin.Array<out @[FlexibleNullability] kotlin.String?>? varargElementType=@[FlexibleNullability] kotlin.String?
|
||||||
CONST String type=kotlin.String value=""
|
CONST String type=kotlin.String value=""
|
||||||
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
|
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
|
||||||
CALL 'public open fun foo1 (r: @[FlexibleNullability] java.lang.Runnable?, vararg strs: @[FlexibleNullability] kotlin.String?): @[FlexibleNullability] kotlin.String? declared in <root>.Test' type=@[FlexibleNullability] kotlin.String? origin=null
|
CALL 'public open fun foo1 (r: @[FlexibleNullability] java.lang.Runnable?, vararg strs: @[FlexibleNullability] kotlin.String?): @[FlexibleNullability] kotlin.String? declared in <root>.Test' type=@[FlexibleNullability] kotlin.String? origin=null
|
||||||
@@ -50,13 +50,13 @@ FILE fqName:<root> fileName:/arrayAsVarargAfterSamArgument.kt
|
|||||||
CALL 'public open fun foo1 (r: @[FlexibleNullability] java.lang.Runnable?, vararg strs: @[FlexibleNullability] kotlin.String?): @[FlexibleNullability] kotlin.String? declared in <root>.Test' type=@[FlexibleNullability] kotlin.String? origin=null
|
CALL 'public open fun foo1 (r: @[FlexibleNullability] java.lang.Runnable?, vararg strs: @[FlexibleNullability] kotlin.String?): @[FlexibleNullability] kotlin.String? declared in <root>.Test' type=@[FlexibleNullability] kotlin.String? origin=null
|
||||||
r: TYPE_OP type=@[FlexibleNullability] java.lang.Runnable? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] java.lang.Runnable?
|
r: TYPE_OP type=@[FlexibleNullability] java.lang.Runnable? origin=SAM_CONVERSION typeOperand=@[FlexibleNullability] java.lang.Runnable?
|
||||||
GET_VAR 'fn: kotlin.Function0<kotlin.Unit> declared in <root>.test' type=kotlin.Function0<kotlin.Unit> origin=null
|
GET_VAR 'fn: kotlin.Function0<kotlin.Unit> declared in <root>.test' type=kotlin.Function0<kotlin.Unit> origin=null
|
||||||
strs: VARARG type=@[FlexibleNullability] kotlin.Array<out @[FlexibleNullability] kotlin.String?>? varargElementType=@[FlexibleNullability] kotlin.String?
|
strs: VARARG type=kotlin.Array<out @[FlexibleNullability] kotlin.String?>? varargElementType=@[FlexibleNullability] kotlin.String?
|
||||||
SPREAD_ELEMENT
|
SPREAD_ELEMENT
|
||||||
GET_VAR 'arr: kotlin.Array<kotlin.String> declared in <root>.test' type=kotlin.Array<kotlin.String> origin=null
|
GET_VAR 'arr: kotlin.Array<kotlin.String> declared in <root>.test' type=kotlin.Array<kotlin.String> origin=null
|
||||||
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
|
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
|
||||||
CALL 'public open fun foo1 (r: @[FlexibleNullability] java.lang.Runnable?, vararg strs: @[FlexibleNullability] kotlin.String?): @[FlexibleNullability] kotlin.String? declared in <root>.Test' type=@[FlexibleNullability] kotlin.String? origin=null
|
CALL 'public open fun foo1 (r: @[FlexibleNullability] java.lang.Runnable?, vararg strs: @[FlexibleNullability] kotlin.String?): @[FlexibleNullability] kotlin.String? declared in <root>.Test' type=@[FlexibleNullability] kotlin.String? origin=null
|
||||||
r: GET_VAR 'r: java.lang.Runnable declared in <root>.test' type=java.lang.Runnable origin=null
|
r: GET_VAR 'r: java.lang.Runnable declared in <root>.test' type=java.lang.Runnable origin=null
|
||||||
strs: VARARG type=@[FlexibleNullability] kotlin.Array<out @[FlexibleNullability] kotlin.String?>? varargElementType=@[FlexibleNullability] kotlin.String?
|
strs: VARARG type=kotlin.Array<out @[FlexibleNullability] kotlin.String?>? varargElementType=@[FlexibleNullability] kotlin.String?
|
||||||
SPREAD_ELEMENT
|
SPREAD_ELEMENT
|
||||||
GET_VAR 'arr: kotlin.Array<kotlin.String> declared in <root>.test' type=kotlin.Array<kotlin.String> origin=null
|
GET_VAR 'arr: kotlin.Array<kotlin.String> declared in <root>.test' type=kotlin.Array<kotlin.String> origin=null
|
||||||
VAR name:i1 type:<root>.Test [val]
|
VAR name:i1 type:<root>.Test [val]
|
||||||
@@ -76,7 +76,7 @@ FILE fqName:<root> fileName:/arrayAsVarargAfterSamArgument.kt
|
|||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
RETURN type=kotlin.Nothing from='local final fun <anonymous> (): kotlin.Unit declared in <root>.test'
|
RETURN type=kotlin.Nothing from='local final fun <anonymous> (): kotlin.Unit declared in <root>.test'
|
||||||
GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
|
GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
|
||||||
strs: VARARG type=@[FlexibleNullability] kotlin.Array<out @[FlexibleNullability] kotlin.String?>? varargElementType=@[FlexibleNullability] kotlin.String?
|
strs: VARARG type=kotlin.Array<out @[FlexibleNullability] kotlin.String?>? varargElementType=@[FlexibleNullability] kotlin.String?
|
||||||
SPREAD_ELEMENT
|
SPREAD_ELEMENT
|
||||||
GET_VAR 'arr: kotlin.Array<kotlin.String> declared in <root>.test' type=kotlin.Array<kotlin.String> origin=null
|
GET_VAR 'arr: kotlin.Array<kotlin.String> declared in <root>.test' type=kotlin.Array<kotlin.String> origin=null
|
||||||
VAR name:i3 type:<root>.Test [val]
|
VAR name:i3 type:<root>.Test [val]
|
||||||
@@ -103,7 +103,7 @@ FILE fqName:<root> fileName:/arrayAsVarargAfterSamArgument.kt
|
|||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
RETURN type=kotlin.Nothing from='local final fun <anonymous> (): kotlin.Unit declared in <root>.test'
|
RETURN type=kotlin.Nothing from='local final fun <anonymous> (): kotlin.Unit declared in <root>.test'
|
||||||
GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
|
GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
|
||||||
strs: VARARG type=@[FlexibleNullability] kotlin.Array<out @[FlexibleNullability] kotlin.String?>? varargElementType=@[FlexibleNullability] kotlin.String?
|
strs: VARARG type=kotlin.Array<out @[FlexibleNullability] kotlin.String?>? varargElementType=@[FlexibleNullability] kotlin.String?
|
||||||
CONST String type=kotlin.String value=""
|
CONST String type=kotlin.String value=""
|
||||||
VAR name:i5 type:<root>.Test [val]
|
VAR name:i5 type:<root>.Test [val]
|
||||||
CONSTRUCTOR_CALL 'public constructor <init> (r1: @[FlexibleNullability] java.lang.Runnable?, r2: @[FlexibleNullability] java.lang.Runnable?, vararg strs: @[FlexibleNullability] kotlin.String?) declared in <root>.Test' type=<root>.Test origin=null
|
CONSTRUCTOR_CALL 'public constructor <init> (r1: @[FlexibleNullability] java.lang.Runnable?, r2: @[FlexibleNullability] java.lang.Runnable?, vararg strs: @[FlexibleNullability] kotlin.String?) declared in <root>.Test' type=<root>.Test origin=null
|
||||||
@@ -119,7 +119,7 @@ FILE fqName:<root> fileName:/arrayAsVarargAfterSamArgument.kt
|
|||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
RETURN type=kotlin.Nothing from='local final fun <anonymous> (): kotlin.Unit declared in <root>.test'
|
RETURN type=kotlin.Nothing from='local final fun <anonymous> (): kotlin.Unit declared in <root>.test'
|
||||||
GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
|
GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
|
||||||
strs: VARARG type=@[FlexibleNullability] kotlin.Array<out @[FlexibleNullability] kotlin.String?>? varargElementType=@[FlexibleNullability] kotlin.String?
|
strs: VARARG type=kotlin.Array<out @[FlexibleNullability] kotlin.String?>? varargElementType=@[FlexibleNullability] kotlin.String?
|
||||||
SPREAD_ELEMENT
|
SPREAD_ELEMENT
|
||||||
GET_VAR 'arr: kotlin.Array<kotlin.String> declared in <root>.test' type=kotlin.Array<kotlin.String> origin=null
|
GET_VAR 'arr: kotlin.Array<kotlin.String> declared in <root>.test' type=kotlin.Array<kotlin.String> origin=null
|
||||||
VAR name:i6 type:<root>.Test [val]
|
VAR name:i6 type:<root>.Test [val]
|
||||||
@@ -131,7 +131,7 @@ FILE fqName:<root> fileName:/arrayAsVarargAfterSamArgument.kt
|
|||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
RETURN type=kotlin.Nothing from='local final fun <anonymous> (): kotlin.Unit declared in <root>.test'
|
RETURN type=kotlin.Nothing from='local final fun <anonymous> (): kotlin.Unit declared in <root>.test'
|
||||||
GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
|
GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
|
||||||
strs: VARARG type=@[FlexibleNullability] kotlin.Array<out @[FlexibleNullability] kotlin.String?>? varargElementType=@[FlexibleNullability] kotlin.String?
|
strs: VARARG type=kotlin.Array<out @[FlexibleNullability] kotlin.String?>? varargElementType=@[FlexibleNullability] kotlin.String?
|
||||||
SPREAD_ELEMENT
|
SPREAD_ELEMENT
|
||||||
GET_VAR 'arr: kotlin.Array<kotlin.String> declared in <root>.test' type=kotlin.Array<kotlin.String> origin=null
|
GET_VAR 'arr: kotlin.Array<kotlin.String> declared in <root>.test' type=kotlin.Array<kotlin.String> origin=null
|
||||||
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
|
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
|
||||||
@@ -160,7 +160,7 @@ FILE fqName:<root> fileName:/arrayAsVarargAfterSamArgument.kt
|
|||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
RETURN type=kotlin.Nothing from='local final fun <anonymous> (): kotlin.Unit declared in <root>.test'
|
RETURN type=kotlin.Nothing from='local final fun <anonymous> (): kotlin.Unit declared in <root>.test'
|
||||||
GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
|
GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
|
||||||
strs: VARARG type=@[FlexibleNullability] kotlin.Array<out @[FlexibleNullability] kotlin.String?>? varargElementType=@[FlexibleNullability] kotlin.String?
|
strs: VARARG type=kotlin.Array<out @[FlexibleNullability] kotlin.String?>? varargElementType=@[FlexibleNullability] kotlin.String?
|
||||||
CONST String type=kotlin.String value=""
|
CONST String type=kotlin.String value=""
|
||||||
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
|
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
|
||||||
CALL 'public open fun foo2 (r1: @[FlexibleNullability] java.lang.Runnable?, r2: @[FlexibleNullability] java.lang.Runnable?, vararg strs: @[FlexibleNullability] kotlin.String?): @[FlexibleNullability] kotlin.String? declared in <root>.Test' type=@[FlexibleNullability] kotlin.String? origin=null
|
CALL 'public open fun foo2 (r1: @[FlexibleNullability] java.lang.Runnable?, r2: @[FlexibleNullability] java.lang.Runnable?, vararg strs: @[FlexibleNullability] kotlin.String?): @[FlexibleNullability] kotlin.String? declared in <root>.Test' type=@[FlexibleNullability] kotlin.String? origin=null
|
||||||
@@ -177,7 +177,7 @@ FILE fqName:<root> fileName:/arrayAsVarargAfterSamArgument.kt
|
|||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
RETURN type=kotlin.Nothing from='local final fun <anonymous> (): kotlin.Unit declared in <root>.test'
|
RETURN type=kotlin.Nothing from='local final fun <anonymous> (): kotlin.Unit declared in <root>.test'
|
||||||
GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
|
GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
|
||||||
strs: VARARG type=@[FlexibleNullability] kotlin.Array<out @[FlexibleNullability] kotlin.String?>? varargElementType=@[FlexibleNullability] kotlin.String?
|
strs: VARARG type=kotlin.Array<out @[FlexibleNullability] kotlin.String?>? varargElementType=@[FlexibleNullability] kotlin.String?
|
||||||
SPREAD_ELEMENT
|
SPREAD_ELEMENT
|
||||||
GET_VAR 'arr: kotlin.Array<kotlin.String> declared in <root>.test' type=kotlin.Array<kotlin.String> origin=null
|
GET_VAR 'arr: kotlin.Array<kotlin.String> declared in <root>.test' type=kotlin.Array<kotlin.String> origin=null
|
||||||
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
|
TYPE_OP type=kotlin.Unit origin=IMPLICIT_COERCION_TO_UNIT typeOperand=kotlin.Unit
|
||||||
@@ -190,6 +190,6 @@ FILE fqName:<root> fileName:/arrayAsVarargAfterSamArgument.kt
|
|||||||
BLOCK_BODY
|
BLOCK_BODY
|
||||||
RETURN type=kotlin.Nothing from='local final fun <anonymous> (): kotlin.Unit declared in <root>.test'
|
RETURN type=kotlin.Nothing from='local final fun <anonymous> (): kotlin.Unit declared in <root>.test'
|
||||||
GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
|
GET_OBJECT 'CLASS IR_EXTERNAL_DECLARATION_STUB OBJECT name:Unit modality:FINAL visibility:public superTypes:[kotlin.Any]' type=kotlin.Unit
|
||||||
strs: VARARG type=@[FlexibleNullability] kotlin.Array<out @[FlexibleNullability] kotlin.String?>? varargElementType=@[FlexibleNullability] kotlin.String?
|
strs: VARARG type=kotlin.Array<out @[FlexibleNullability] kotlin.String?>? varargElementType=@[FlexibleNullability] kotlin.String?
|
||||||
SPREAD_ELEMENT
|
SPREAD_ELEMENT
|
||||||
GET_VAR 'arr: kotlin.Array<kotlin.String> declared in <root>.test' type=kotlin.Array<kotlin.String> origin=null
|
GET_VAR 'arr: kotlin.Array<kotlin.String> declared in <root>.test' type=kotlin.Array<kotlin.String> origin=null
|
||||||
|
|||||||
+6
@@ -47783,6 +47783,12 @@ public class BlackBoxCodegenTestGenerated extends AbstractBlackBoxCodegenTest {
|
|||||||
runTest("compiler/testData/codegen/box/vararg/kt46092.kt");
|
runTest("compiler/testData/codegen/box/vararg/kt46092.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("kt52146_samWithSelfTypeAndStarProjection.kt")
|
||||||
|
public void testKt52146_samWithSelfTypeAndStarProjection() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/vararg/kt52146_samWithSelfTypeAndStarProjection.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("kt581.kt")
|
@TestMetadata("kt581.kt")
|
||||||
public void testKt581() throws Exception {
|
public void testKt581() throws Exception {
|
||||||
|
|||||||
+6
@@ -48371,6 +48371,12 @@ public class IrBlackBoxCodegenTestGenerated extends AbstractIrBlackBoxCodegenTes
|
|||||||
runTest("compiler/testData/codegen/box/vararg/kt46092.kt");
|
runTest("compiler/testData/codegen/box/vararg/kt46092.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("kt52146_samWithSelfTypeAndStarProjection.kt")
|
||||||
|
public void testKt52146_samWithSelfTypeAndStarProjection() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/vararg/kt52146_samWithSelfTypeAndStarProjection.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("kt581.kt")
|
@TestMetadata("kt581.kt")
|
||||||
public void testKt581() throws Exception {
|
public void testKt581() throws Exception {
|
||||||
|
|||||||
+5
@@ -38875,6 +38875,11 @@ public class LightAnalysisModeTestGenerated extends AbstractLightAnalysisModeTes
|
|||||||
runTest("compiler/testData/codegen/box/vararg/kt46092.kt");
|
runTest("compiler/testData/codegen/box/vararg/kt46092.kt");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@TestMetadata("kt52146_samWithSelfTypeAndStarProjection.kt")
|
||||||
|
public void testKt52146_samWithSelfTypeAndStarProjection() throws Exception {
|
||||||
|
runTest("compiler/testData/codegen/box/vararg/kt52146_samWithSelfTypeAndStarProjection.kt");
|
||||||
|
}
|
||||||
|
|
||||||
@TestMetadata("kt581.kt")
|
@TestMetadata("kt581.kt")
|
||||||
public void testKt581() throws Exception {
|
public void testKt581() throws Exception {
|
||||||
runTest("compiler/testData/codegen/box/vararg/kt581.kt");
|
runTest("compiler/testData/codegen/box/vararg/kt581.kt");
|
||||||
|
|||||||
Reference in New Issue
Block a user