From 47c784f023466efcc47aa68748ac0c6633348d83 Mon Sep 17 00:00:00 2001 From: Dmitry Petrov Date: Mon, 19 Oct 2020 17:28:37 +0300 Subject: [PATCH] JVM_IR fix Java wildcard types translation Types such as 'Collection' are treated as '(kotlin.collections.MutableCollection ..kotlin.collections.Collection?)' by the front-end. When generating generic signatures, JVM BE takes lower bound (which is 'kotlin.collections.MutableCollection'). Emulate this behavior in TypeTranslator. --- .../kotlin/fir/Fir2IrTextTestGenerated.java | 5 + .../kotlin/ir/util/TypeTranslator.kt | 68 +++++---- ...legationToJavaInterfaceWithWildcardType.kt | 22 +++ ...egationToJavaInterfaceWithWildcardType.txt | 24 ++++ .../bytecodeListing/rawTypeInSignature_ir.txt | 2 +- .../ir/irText/firProblems/AllCandidates.txt | 2 +- .../typeParametersInImplicitCast.txt | 8 +- .../testData/ir/irText/stubs/builtinMap.txt | 2 +- .../ir/irText/types/javaWildcardType.kt | 22 +++ .../ir/irText/types/javaWildcardType.txt | 132 ++++++++++++++++++ ...edNullabilityInDestructuringAssignment.txt | 2 +- .../enhancedNullabilityInForLoop.txt | 8 +- .../ir/irText/types/rawTypeInSignature.txt | 18 +-- .../codegen/BytecodeListingTestGenerated.java | 5 + .../ir/IrBytecodeListingTestGenerated.java | 5 + .../kotlin/ir/IrTextTestCaseGenerated.java | 5 + 16 files changed, 283 insertions(+), 47 deletions(-) create mode 100644 compiler/testData/codegen/bytecodeListing/delegationToJavaInterfaceWithWildcardType.kt create mode 100644 compiler/testData/codegen/bytecodeListing/delegationToJavaInterfaceWithWildcardType.txt create mode 100644 compiler/testData/ir/irText/types/javaWildcardType.kt create mode 100644 compiler/testData/ir/irText/types/javaWildcardType.txt diff --git a/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/Fir2IrTextTestGenerated.java b/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/Fir2IrTextTestGenerated.java index 54a039f8d7d..35f1b713165 100644 --- a/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/Fir2IrTextTestGenerated.java +++ b/compiler/fir/fir2ir/tests/org/jetbrains/kotlin/fir/Fir2IrTextTestGenerated.java @@ -2070,6 +2070,11 @@ public class Fir2IrTextTestGenerated extends AbstractFir2IrTextTest { runTest("compiler/testData/ir/irText/types/intersectionType3_OI.kt"); } + @TestMetadata("javaWildcardType.kt") + public void testJavaWildcardType() throws Exception { + runTest("compiler/testData/ir/irText/types/javaWildcardType.kt"); + } + @TestMetadata("kt36143.kt") public void testKt36143() throws Exception { runTest("compiler/testData/ir/irText/types/kt36143.kt"); diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/TypeTranslator.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/TypeTranslator.kt index e3cc55bdb2f..c09848f00f5 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/TypeTranslator.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/TypeTranslator.kt @@ -83,55 +83,71 @@ class TypeTranslator( translateType(kotlinType, Variance.INVARIANT).type private fun translateType(kotlinType: KotlinType, variance: Variance): IrTypeProjection { - val flexibleApproximatedType = approximate(kotlinType) + val approximatedType = approximate(kotlinType) when { - flexibleApproximatedType.isError -> - return IrErrorTypeImpl(flexibleApproximatedType, translateTypeAnnotations(flexibleApproximatedType), variance) - flexibleApproximatedType.isDynamic() -> - return IrDynamicTypeImpl(flexibleApproximatedType, translateTypeAnnotations(flexibleApproximatedType), variance) + approximatedType.isError -> + return IrErrorTypeImpl(approximatedType, translateTypeAnnotations(approximatedType), variance) + approximatedType.isDynamic() -> + return IrDynamicTypeImpl(approximatedType, translateTypeAnnotations(approximatedType), variance) } - val approximatedType = flexibleApproximatedType.upperIfFlexible() - - val ktTypeConstructor = approximatedType.constructor - val ktTypeDescriptor = ktTypeConstructor.declarationDescriptor - ?: throw AssertionError("No descriptor for type $approximatedType") + val upperType = approximatedType.upperIfFlexible() + val upperTypeDescriptor = upperType.constructor.declarationDescriptor + ?: throw AssertionError("No descriptor for type $upperType") if (erasureStack.isNotEmpty()) { - if (ktTypeDescriptor is TypeParameterDescriptor) { - if (ktTypeDescriptor.containingDeclaration in erasureStack) { + if (upperTypeDescriptor is TypeParameterDescriptor) { + if (upperTypeDescriptor.containingDeclaration in erasureStack) { // This hack is about type parameter leak in case of generic delegated property // Such code has to be prohibited since LV 1.5 // For more details see commit message or KT-24643 - return approximateUpperBounds(ktTypeDescriptor.upperBounds, variance) + return approximateUpperBounds(upperTypeDescriptor.upperBounds, variance) } } } return IrSimpleTypeBuilder().apply { - this.kotlinType = flexibleApproximatedType - this.hasQuestionMark = approximatedType.isMarkedNullable + this.kotlinType = approximatedType + this.hasQuestionMark = upperType.isMarkedNullable this.variance = variance - this.abbreviation = approximatedType.getAbbreviation()?.toIrTypeAbbreviation() - when (ktTypeDescriptor) { + this.abbreviation = upperType.getAbbreviation()?.toIrTypeAbbreviation() + + when (upperTypeDescriptor) { is TypeParameterDescriptor -> { - classifier = resolveTypeParameter(ktTypeDescriptor) - annotations = translateTypeAnnotations(approximatedType, flexibleApproximatedType) + classifier = resolveTypeParameter(upperTypeDescriptor) + annotations = translateTypeAnnotations(upperType, approximatedType) } is ClassDescriptor -> { - classifier = symbolTable.referenceClass(ktTypeDescriptor) - arguments = - if (flexibleApproximatedType is RawType) - translateTypeArguments(flexibleApproximatedType.arguments) - else + // Types such as 'java.util.Collection' are treated as + // '( kotlin.collections.MutableCollection + // .. kotlin.collections.Collection? )' + // by the front-end. + // When generating generic signatures, JVM BE uses generic arguments of lower bound, + // thus producing 'java.util.Collection' from + // 'kotlin.collections.MutableCollection'. + // Construct equivalent type here. + // NB the difference is observed only when lowerTypeDescriptor != upperTypeDescriptor, + // which corresponds to mutability-flexible types such as mentioned above. + val lowerType = approximatedType.lowerIfFlexible() + val lowerTypeDescriptor = + lowerType.constructor.declarationDescriptor as? ClassDescriptor + ?: throw AssertionError("No class descriptor for lower type $lowerType of $approximatedType") + classifier = symbolTable.referenceClass(lowerTypeDescriptor) + arguments = when { + approximatedType is RawType -> translateTypeArguments(approximatedType.arguments) - annotations = translateTypeAnnotations(approximatedType, flexibleApproximatedType) + lowerTypeDescriptor != upperTypeDescriptor -> + translateTypeArguments(lowerType.arguments) + else -> + translateTypeArguments(upperType.arguments) + } + annotations = translateTypeAnnotations(upperType, approximatedType) } else -> - throw AssertionError("Unexpected type descriptor $ktTypeDescriptor :: ${ktTypeDescriptor::class}") + throw AssertionError("Unexpected type descriptor $upperTypeDescriptor :: ${upperTypeDescriptor::class}") } }.buildTypeProjection() } diff --git a/compiler/testData/codegen/bytecodeListing/delegationToJavaInterfaceWithWildcardType.kt b/compiler/testData/codegen/bytecodeListing/delegationToJavaInterfaceWithWildcardType.kt new file mode 100644 index 00000000000..6fc85406bc4 --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/delegationToJavaInterfaceWithWildcardType.kt @@ -0,0 +1,22 @@ +// FILE: delegationToJavaInterfaceWithWildcardType.kt +// WITH_SIGNATURES +interface K { + fun kf1(): Collection + fun kf2(): Collection + + fun kg1(c: Collection) + fun kg2(c: Collection) +} + +class C(j: J, k: K) : J by j, K by k + +// FILE: J.java +import java.util.*; + +public interface J { + Collection jf1(); + Collection jf2(); + + void jg1(Collection c); + void jg2(Collection c); +} \ No newline at end of file diff --git a/compiler/testData/codegen/bytecodeListing/delegationToJavaInterfaceWithWildcardType.txt b/compiler/testData/codegen/bytecodeListing/delegationToJavaInterfaceWithWildcardType.txt new file mode 100644 index 00000000000..41970b2473d --- /dev/null +++ b/compiler/testData/codegen/bytecodeListing/delegationToJavaInterfaceWithWildcardType.txt @@ -0,0 +1,24 @@ +@kotlin.Metadata +public final class C { + // source: 'delegationToJavaInterfaceWithWildcardType.kt' + public <()Ljava/util/Collection<+Ljava/lang/CharSequence;>;> method jf1(): java.util.Collection + public <()Ljava/util/Collection;> method jf2(): java.util.Collection + public @org.jetbrains.annotations.NotNull <()Ljava/util/Collection;> method kf1(): java.util.Collection + public @org.jetbrains.annotations.NotNull <()Ljava/util/Collection;> method kf2(): java.util.Collection + public <(Ljava/util/Collection<+Ljava/lang/CharSequence;>;)V> method jg1(p0: java.util.Collection): void + public <(Ljava/util/Collection<+Ljava/lang/CharSequence;>;)V> method kg1(@org.jetbrains.annotations.NotNull p0: java.util.Collection): void + public <(Ljava/util/Collection<+Ljava/lang/CharSequence;>;)V> method kg2(@org.jetbrains.annotations.NotNull p0: java.util.Collection): void + public <(Ljava/util/Collection;)V> method jg2(p0: java.util.Collection): void + public method (@org.jetbrains.annotations.NotNull p0: J, @org.jetbrains.annotations.NotNull p1: K): void + private synthetic final field $$delegate_0: J + private synthetic final field $$delegate_1: K +} + +@kotlin.Metadata +public interface K { + // source: 'delegationToJavaInterfaceWithWildcardType.kt' + public abstract @org.jetbrains.annotations.NotNull <()Ljava/util/Collection;> method kf1(): java.util.Collection + public abstract @org.jetbrains.annotations.NotNull <()Ljava/util/Collection;> method kf2(): java.util.Collection + public abstract <(Ljava/util/Collection<+Ljava/lang/CharSequence;>;)V> method kg1(@org.jetbrains.annotations.NotNull p0: java.util.Collection): void + public abstract <(Ljava/util/Collection<+Ljava/lang/CharSequence;>;)V> method kg2(@org.jetbrains.annotations.NotNull p0: java.util.Collection): void +} diff --git a/compiler/testData/codegen/bytecodeListing/rawTypeInSignature_ir.txt b/compiler/testData/codegen/bytecodeListing/rawTypeInSignature_ir.txt index ba1122afe9e..ee36bf71a3b 100644 --- a/compiler/testData/codegen/bytecodeListing/rawTypeInSignature_ir.txt +++ b/compiler/testData/codegen/bytecodeListing/rawTypeInSignature_ir.txt @@ -19,7 +19,7 @@ public final class<Ljava/lang/Object;> GenericOut { @kotlin.Metadata public final class KRaw { // source: 'rawTypeInSignature.kt' - public <(Ljava/util/List<+Ljava/lang/Object;>;Ljava/util/List;)Ljava/util/List;> method bothRawAndGeneric(p0: java.util.List, p1: java.util.List): java.util.List + public <(Ljava/util/List;Ljava/util/List;)Ljava/util/List;> method bothRawAndGeneric(p0: java.util.List, p1: java.util.List): java.util.List public method (@org.jetbrains.annotations.NotNull p0: JRaw): void public method returnsRawGenericIn(): GenericIn public method returnsRawGenericInv(): GenericInv diff --git a/compiler/testData/ir/irText/firProblems/AllCandidates.txt b/compiler/testData/ir/irText/firProblems/AllCandidates.txt index ce80173dadd..def1c01880a 100644 --- a/compiler/testData/ir/irText/firProblems/AllCandidates.txt +++ b/compiler/testData/ir/irText/firProblems/AllCandidates.txt @@ -63,7 +63,7 @@ FILE fqName: fileName:/AllCandidates.kt FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL <> ($receiver:@[FlexibleNullability] .OverloadResolutionResultsImpl<@[FlexibleNullability] A of .allCandidatesResult?>?) returnType:kotlin.Unit $receiver: VALUE_PARAMETER name: type:@[FlexibleNullability] .OverloadResolutionResultsImpl<@[FlexibleNullability] A of .allCandidatesResult?>? BLOCK_BODY - CALL 'public open fun setAllCandidates (allCandidates: @[FlexibleNullability] kotlin.collections.Collection<@[FlexibleNullability] .ResolvedCall<@[FlexibleNullability] D of .OverloadResolutionResultsImpl?>?>?): kotlin.Unit declared in .OverloadResolutionResultsImpl' type=kotlin.Unit origin=EQ + CALL 'public open fun setAllCandidates (allCandidates: @[FlexibleNullability] kotlin.collections.MutableCollection<@[FlexibleNullability] .ResolvedCall<@[FlexibleNullability] D of .OverloadResolutionResultsImpl?>?>?): kotlin.Unit declared in .OverloadResolutionResultsImpl' type=kotlin.Unit origin=EQ <1>: @[FlexibleNullability] A of .allCandidatesResult? $this: TYPE_OP type=.OverloadResolutionResultsImpl<@[FlexibleNullability] A of .allCandidatesResult?> origin=IMPLICIT_NOTNULL typeOperand=.OverloadResolutionResultsImpl<@[FlexibleNullability] A of .allCandidatesResult?> GET_VAR ': @[FlexibleNullability] .OverloadResolutionResultsImpl<@[FlexibleNullability] A of .allCandidatesResult?>? declared in .allCandidatesResult.' type=@[FlexibleNullability] .OverloadResolutionResultsImpl<@[FlexibleNullability] A of .allCandidatesResult?>? origin=null diff --git a/compiler/testData/ir/irText/regressions/typeParametersInImplicitCast.txt b/compiler/testData/ir/irText/regressions/typeParametersInImplicitCast.txt index 6e6b27a2069..bb1508f09e3 100644 --- a/compiler/testData/ir/irText/regressions/typeParametersInImplicitCast.txt +++ b/compiler/testData/ir/irText/regressions/typeParametersInImplicitCast.txt @@ -8,12 +8,12 @@ FILE fqName: fileName:/typeParametersInImplicitCast.kt : kotlin.collections.List.problematic> : @[FlexibleNullability] T of .problematic? $receiver: GET_VAR 'lss: kotlin.collections.List.problematic>> declared in .problematic' type=kotlin.collections.List.problematic>> origin=null - transform: FUN_EXPR type=kotlin.Function1.problematic>, @[EnhancedNullability] kotlin.collections.List<@[FlexibleNullability] T of .problematic?>> origin=LAMBDA - FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL <> (it:kotlin.collections.List.problematic>) returnType:@[EnhancedNullability] kotlin.collections.List<@[FlexibleNullability] T of .problematic?> + transform: FUN_EXPR type=kotlin.Function1.problematic>, @[EnhancedNullability] kotlin.collections.MutableList<@[FlexibleNullability] T of .problematic?>> origin=LAMBDA + FUN LOCAL_FUNCTION_FOR_LAMBDA name: visibility:local modality:FINAL <> (it:kotlin.collections.List.problematic>) returnType:@[EnhancedNullability] kotlin.collections.MutableList<@[FlexibleNullability] T of .problematic?> VALUE_PARAMETER name:it index:0 type:kotlin.collections.List.problematic> BLOCK_BODY - RETURN type=kotlin.Nothing from='local final fun (it: kotlin.collections.List.problematic>): @[EnhancedNullability] kotlin.collections.List<@[FlexibleNullability] T of .problematic?> declared in .problematic' + RETURN type=kotlin.Nothing from='local final fun (it: kotlin.collections.List.problematic>): @[EnhancedNullability] kotlin.collections.MutableList<@[FlexibleNullability] T of .problematic?> declared in .problematic' TYPE_OP type=kotlin.collections.List<@[FlexibleNullability] T of .problematic?> origin=IMPLICIT_NOTNULL typeOperand=kotlin.collections.List<@[FlexibleNullability] T of .problematic?> - CALL 'public/*package*/ open fun id (v: @[FlexibleNullability] kotlin.collections.List<@[FlexibleNullability] T of .ListId.id?>?): @[EnhancedNullability] kotlin.collections.List<@[FlexibleNullability] T of .ListId.id?> declared in .ListId' type=@[EnhancedNullability] kotlin.collections.List<@[FlexibleNullability] T of .problematic?> origin=null + CALL 'public/*package*/ open fun id (v: @[FlexibleNullability] kotlin.collections.MutableList<@[FlexibleNullability] T of .ListId.id?>?): @[EnhancedNullability] kotlin.collections.MutableList<@[FlexibleNullability] T of .ListId.id?> declared in .ListId' type=@[EnhancedNullability] kotlin.collections.MutableList<@[FlexibleNullability] T of .problematic?> origin=null : @[FlexibleNullability] T of .problematic? v: GET_VAR 'it: kotlin.collections.List.problematic> declared in .problematic.' type=kotlin.collections.List.problematic> origin=null diff --git a/compiler/testData/ir/irText/stubs/builtinMap.txt b/compiler/testData/ir/irText/stubs/builtinMap.txt index 050f53c637f..d96be88acc2 100644 --- a/compiler/testData/ir/irText/stubs/builtinMap.txt +++ b/compiler/testData/ir/irText/stubs/builtinMap.txt @@ -18,7 +18,7 @@ FILE fqName: fileName:/builtinMap.kt if: CONST Boolean type=kotlin.Boolean value=true then: CALL 'public final fun apply (block: @[ExtensionFunctionType] kotlin.Function1): T of kotlin.apply [inline] declared in kotlin' type=java.util.LinkedHashMap<@[FlexibleNullability] K1 of .plus?, @[FlexibleNullability] V1 of .plus?>{ kotlin.collections.LinkedHashMap<@[FlexibleNullability] K1 of .plus?, @[FlexibleNullability] V1 of .plus?> } origin=null : java.util.LinkedHashMap<@[FlexibleNullability] K1 of .plus?, @[FlexibleNullability] V1 of .plus?>{ kotlin.collections.LinkedHashMap<@[FlexibleNullability] K1 of .plus?, @[FlexibleNullability] V1 of .plus?> } - $receiver: CONSTRUCTOR_CALL 'public constructor (p0: @[FlexibleNullability] kotlin.collections.Map?) declared in java.util.LinkedHashMap' type=java.util.LinkedHashMap<@[FlexibleNullability] K1 of .plus?, @[FlexibleNullability] V1 of .plus?> origin=null + $receiver: CONSTRUCTOR_CALL 'public constructor (p0: @[FlexibleNullability] kotlin.collections.MutableMap?) declared in java.util.LinkedHashMap' type=java.util.LinkedHashMap<@[FlexibleNullability] K1 of .plus?, @[FlexibleNullability] V1 of .plus?> origin=null : @[FlexibleNullability] K1 of .plus? : @[FlexibleNullability] V1 of .plus? p0: GET_VAR ': kotlin.collections.Map.plus, V1 of .plus> declared in .plus' type=kotlin.collections.Map.plus, V1 of .plus> origin=null diff --git a/compiler/testData/ir/irText/types/javaWildcardType.kt b/compiler/testData/ir/irText/types/javaWildcardType.kt new file mode 100644 index 00000000000..5f63df1a336 --- /dev/null +++ b/compiler/testData/ir/irText/types/javaWildcardType.kt @@ -0,0 +1,22 @@ +// FILE: javaWildcardType.kt +interface K { + fun kf1(): Collection + fun kf2(): Collection + + fun kg1(c: Collection) + fun kg2(c: Collection) +} + + +class C(j: J, k: K) : J by j, K by k + +// FILE: J.java +import java.util.*; + +public interface J { + Collection jf1(); + Collection jf2(); + + void jg1(Collection c); + void jg2(Collection c); +} \ No newline at end of file diff --git a/compiler/testData/ir/irText/types/javaWildcardType.txt b/compiler/testData/ir/irText/types/javaWildcardType.txt new file mode 100644 index 00000000000..baf1c313a6a --- /dev/null +++ b/compiler/testData/ir/irText/types/javaWildcardType.txt @@ -0,0 +1,132 @@ +FILE fqName: fileName:/javaWildcardType.kt + CLASS INTERFACE name:K modality:ABSTRACT visibility:public superTypes:[kotlin.Any] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.K + FUN name:kf1 visibility:public modality:ABSTRACT <> ($this:.K) returnType:kotlin.collections.Collection + $this: VALUE_PARAMETER name: type:.K + FUN name:kf2 visibility:public modality:ABSTRACT <> ($this:.K) returnType:kotlin.collections.Collection + $this: VALUE_PARAMETER name: type:.K + FUN name:kg1 visibility:public modality:ABSTRACT <> ($this:.K, c:kotlin.collections.Collection) returnType:kotlin.Unit + $this: VALUE_PARAMETER name: type:.K + VALUE_PARAMETER name:c index:0 type:kotlin.collections.Collection + FUN name:kg2 visibility:public modality:ABSTRACT <> ($this:.K, c:kotlin.collections.Collection) returnType:kotlin.Unit + $this: VALUE_PARAMETER name: type:.K + VALUE_PARAMETER name:c index:0 type:kotlin.collections.Collection + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean [operator] declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + VALUE_PARAMETER name:other index:0 type:kotlin.Any? + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override] + overridden: + public open fun hashCode (): kotlin.Int declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override] + overridden: + public open fun toString (): kotlin.String declared in kotlin.Any + $this: VALUE_PARAMETER name: type:kotlin.Any + CLASS CLASS name:C modality:FINAL visibility:public superTypes:[.J; .K] + $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.C + CONSTRUCTOR visibility:public <> (j:.J, k:.K) returnType:.C [primary] + VALUE_PARAMETER name:j index:0 type:.J + VALUE_PARAMETER name:k index:1 type:.K + BLOCK_BODY + DELEGATING_CONSTRUCTOR_CALL 'public constructor () [primary] declared in kotlin.Any' + INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:C modality:FINAL visibility:public superTypes:[.J; .K]' + FIELD DELEGATE name:$$delegate_0 type:.J visibility:private [final] + EXPRESSION_BODY + GET_VAR 'j: .J declared in .C.' type=.J origin=null + FUN DELEGATED_MEMBER name:jf1 visibility:public modality:OPEN <> ($this:.C) returnType:@[FlexibleNullability] kotlin.collections.MutableCollection? + overridden: + public abstract fun jf1 (): @[FlexibleNullability] kotlin.collections.MutableCollection? declared in .J + $this: VALUE_PARAMETER name: type:.C + BLOCK_BODY + RETURN type=kotlin.Nothing from='public open fun jf1 (): @[FlexibleNullability] kotlin.collections.MutableCollection? declared in .C' + CALL 'public abstract fun jf1 (): @[FlexibleNullability] kotlin.collections.MutableCollection? declared in .J' type=@[FlexibleNullability] kotlin.collections.MutableCollection? origin=null + $this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:.J visibility:private [final]' type=.J origin=null + receiver: GET_VAR ': .C declared in .C.jf1' type=.C origin=null + FUN DELEGATED_MEMBER name:jf2 visibility:public modality:OPEN <> ($this:.C) returnType:@[FlexibleNullability] kotlin.collections.MutableCollection<@[FlexibleNullability] kotlin.CharSequence?>? + overridden: + public abstract fun jf2 (): @[FlexibleNullability] kotlin.collections.MutableCollection<@[FlexibleNullability] kotlin.CharSequence?>? declared in .J + $this: VALUE_PARAMETER name: type:.C + BLOCK_BODY + RETURN type=kotlin.Nothing from='public open fun jf2 (): @[FlexibleNullability] kotlin.collections.MutableCollection<@[FlexibleNullability] kotlin.CharSequence?>? declared in .C' + CALL 'public abstract fun jf2 (): @[FlexibleNullability] kotlin.collections.MutableCollection<@[FlexibleNullability] kotlin.CharSequence?>? declared in .J' type=@[FlexibleNullability] kotlin.collections.MutableCollection<@[FlexibleNullability] kotlin.CharSequence?>? origin=null + $this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:.J visibility:private [final]' type=.J origin=null + receiver: GET_VAR ': .C declared in .C.jf2' type=.C origin=null + FUN DELEGATED_MEMBER name:jg1 visibility:public modality:OPEN <> ($this:.C, c:@[FlexibleNullability] kotlin.collections.MutableCollection?) returnType:kotlin.Unit + overridden: + public abstract fun jg1 (c: @[FlexibleNullability] kotlin.collections.MutableCollection?): kotlin.Unit declared in .J + $this: VALUE_PARAMETER name: type:.C + VALUE_PARAMETER name:c index:0 type:@[FlexibleNullability] kotlin.collections.MutableCollection? + BLOCK_BODY + CALL 'public abstract fun jg1 (c: @[FlexibleNullability] kotlin.collections.MutableCollection?): kotlin.Unit declared in .J' type=kotlin.Unit origin=null + $this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:.J visibility:private [final]' type=.J origin=null + receiver: GET_VAR ': .C declared in .C.jg1' type=.C origin=null + c: GET_VAR 'c: @[FlexibleNullability] kotlin.collections.MutableCollection? declared in .C.jg1' type=@[FlexibleNullability] kotlin.collections.MutableCollection? origin=null + FUN DELEGATED_MEMBER name:jg2 visibility:public modality:OPEN <> ($this:.C, c:@[FlexibleNullability] kotlin.collections.MutableCollection<@[FlexibleNullability] kotlin.CharSequence?>?) returnType:kotlin.Unit + overridden: + public abstract fun jg2 (c: @[FlexibleNullability] kotlin.collections.MutableCollection<@[FlexibleNullability] kotlin.CharSequence?>?): kotlin.Unit declared in .J + $this: VALUE_PARAMETER name: type:.C + VALUE_PARAMETER name:c index:0 type:@[FlexibleNullability] kotlin.collections.MutableCollection<@[FlexibleNullability] kotlin.CharSequence?>? + BLOCK_BODY + CALL 'public abstract fun jg2 (c: @[FlexibleNullability] kotlin.collections.MutableCollection<@[FlexibleNullability] kotlin.CharSequence?>?): kotlin.Unit declared in .J' type=kotlin.Unit origin=null + $this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:.J visibility:private [final]' type=.J origin=null + receiver: GET_VAR ': .C declared in .C.jg2' type=.C origin=null + c: GET_VAR 'c: @[FlexibleNullability] kotlin.collections.MutableCollection<@[FlexibleNullability] kotlin.CharSequence?>? declared in .C.jg2' type=@[FlexibleNullability] kotlin.collections.MutableCollection<@[FlexibleNullability] kotlin.CharSequence?>? origin=null + FIELD DELEGATE name:$$delegate_1 type:.K visibility:private [final] + EXPRESSION_BODY + GET_VAR 'k: .K declared in .C.' type=.K origin=null + FUN DELEGATED_MEMBER name:kf1 visibility:public modality:OPEN <> ($this:.C) returnType:kotlin.collections.Collection + overridden: + public abstract fun kf1 (): kotlin.collections.Collection declared in .K + $this: VALUE_PARAMETER name: type:.C + BLOCK_BODY + RETURN type=kotlin.Nothing from='public open fun kf1 (): kotlin.collections.Collection declared in .C' + CALL 'public abstract fun kf1 (): kotlin.collections.Collection declared in .K' type=kotlin.collections.Collection origin=null + $this: GET_FIELD 'FIELD DELEGATE name:$$delegate_1 type:.K visibility:private [final]' type=.K origin=null + receiver: GET_VAR ': .C declared in .C.kf1' type=.C origin=null + FUN DELEGATED_MEMBER name:kf2 visibility:public modality:OPEN <> ($this:.C) returnType:kotlin.collections.Collection + overridden: + public abstract fun kf2 (): kotlin.collections.Collection declared in .K + $this: VALUE_PARAMETER name: type:.C + BLOCK_BODY + RETURN type=kotlin.Nothing from='public open fun kf2 (): kotlin.collections.Collection declared in .C' + CALL 'public abstract fun kf2 (): kotlin.collections.Collection declared in .K' type=kotlin.collections.Collection origin=null + $this: GET_FIELD 'FIELD DELEGATE name:$$delegate_1 type:.K visibility:private [final]' type=.K origin=null + receiver: GET_VAR ': .C declared in .C.kf2' type=.C origin=null + FUN DELEGATED_MEMBER name:kg1 visibility:public modality:OPEN <> ($this:.C, c:kotlin.collections.Collection) returnType:kotlin.Unit + overridden: + public abstract fun kg1 (c: kotlin.collections.Collection): kotlin.Unit declared in .K + $this: VALUE_PARAMETER name: type:.C + VALUE_PARAMETER name:c index:0 type:kotlin.collections.Collection + BLOCK_BODY + CALL 'public abstract fun kg1 (c: kotlin.collections.Collection): kotlin.Unit declared in .K' type=kotlin.Unit origin=null + $this: GET_FIELD 'FIELD DELEGATE name:$$delegate_1 type:.K visibility:private [final]' type=.K origin=null + receiver: GET_VAR ': .C declared in .C.kg1' type=.C origin=null + c: GET_VAR 'c: kotlin.collections.Collection declared in .C.kg1' type=kotlin.collections.Collection origin=null + FUN DELEGATED_MEMBER name:kg2 visibility:public modality:OPEN <> ($this:.C, c:kotlin.collections.Collection) returnType:kotlin.Unit + overridden: + public abstract fun kg2 (c: kotlin.collections.Collection): kotlin.Unit declared in .K + $this: VALUE_PARAMETER name: type:.C + VALUE_PARAMETER name:c index:0 type:kotlin.collections.Collection + BLOCK_BODY + CALL 'public abstract fun kg2 (c: kotlin.collections.Collection): kotlin.Unit declared in .K' type=kotlin.Unit origin=null + $this: GET_FIELD 'FIELD DELEGATE name:$$delegate_1 type:.K visibility:private [final]' type=.K origin=null + receiver: GET_VAR ': .C declared in .C.kg2' type=.C origin=null + c: GET_VAR 'c: kotlin.collections.Collection declared in .C.kg2' type=kotlin.collections.Collection origin=null + FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] + overridden: + public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in .J + public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in .K + $this: VALUE_PARAMETER name: type:kotlin.Any + VALUE_PARAMETER name:other index:0 type:kotlin.Any? + FUN FAKE_OVERRIDE name:hashCode visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.Int [fake_override] + overridden: + public open fun hashCode (): kotlin.Int [fake_override] declared in .J + public open fun hashCode (): kotlin.Int [fake_override] declared in .K + $this: VALUE_PARAMETER name: type:kotlin.Any + FUN FAKE_OVERRIDE name:toString visibility:public modality:OPEN <> ($this:kotlin.Any) returnType:kotlin.String [fake_override] + overridden: + public open fun toString (): kotlin.String [fake_override] declared in .J + public open fun toString (): kotlin.String [fake_override] declared in .K + $this: VALUE_PARAMETER name: type:kotlin.Any diff --git a/compiler/testData/ir/irText/types/nullChecks/enhancedNullabilityInDestructuringAssignment.txt b/compiler/testData/ir/irText/types/nullChecks/enhancedNullabilityInDestructuringAssignment.txt index 94a7b9ef363..752f209f441 100644 --- a/compiler/testData/ir/irText/types/nullChecks/enhancedNullabilityInDestructuringAssignment.txt +++ b/compiler/testData/ir/irText/types/nullChecks/enhancedNullabilityInDestructuringAssignment.txt @@ -193,7 +193,7 @@ FILE fqName: fileName:/enhancedNullabilityInDestructuringAssignment.kt $receiver: CALL 'public final fun withIndex (): kotlin.collections.Iterable> declared in kotlin.collections' type=kotlin.collections.Iterable)] @[EnhancedNullability] .P>> origin=null : @[NotNull(value = )] @[EnhancedNullability] .P $receiver: TYPE_OP type=kotlin.collections.List<@[NotNull(value = )] @[EnhancedNullability] .P> origin=IMPLICIT_NOTNULL typeOperand=kotlin.collections.List<@[NotNull(value = )] @[EnhancedNullability] .P> - CALL 'public open fun listOfNotNull (): @[FlexibleNullability] kotlin.collections.List<@[NotNull(value = )] @[EnhancedNullability] .P>? declared in .J' type=@[FlexibleNullability] kotlin.collections.List<@[NotNull(value = )] @[EnhancedNullability] .P>? origin=null + CALL 'public open fun listOfNotNull (): @[FlexibleNullability] kotlin.collections.MutableList<@[NotNull(value = )] @[EnhancedNullability] .P>? declared in .J' type=@[FlexibleNullability] kotlin.collections.MutableList<@[NotNull(value = )] @[EnhancedNullability] .P>? origin=null VAR name:x type:kotlin.Int [val] CALL 'public final fun component1 (): kotlin.Int [operator] declared in kotlin.collections.IndexedValue' type=kotlin.Int origin=COMPONENT_N(index=1) $this: GET_VAR 'val tmp_3: kotlin.collections.IndexedValue<@[NotNull(value = )] @[EnhancedNullability] .P> [val] declared in .test4' type=kotlin.collections.IndexedValue<@[NotNull(value = )] @[EnhancedNullability] .P> origin=null diff --git a/compiler/testData/ir/irText/types/nullChecks/enhancedNullabilityInForLoop.txt b/compiler/testData/ir/irText/types/nullChecks/enhancedNullabilityInForLoop.txt index 69ea2b09d35..3eba36ebb98 100644 --- a/compiler/testData/ir/irText/types/nullChecks/enhancedNullabilityInForLoop.txt +++ b/compiler/testData/ir/irText/types/nullChecks/enhancedNullabilityInForLoop.txt @@ -9,7 +9,7 @@ FILE fqName: fileName:/enhancedNullabilityInForLoop.kt CALL 'public abstract fun iterator (): kotlin.collections.MutableIterator [fake_override,operator] declared in kotlin.collections.MutableList' type=kotlin.collections.MutableIterator<@[NotNull(value = )] @[EnhancedNullability] .P> origin=FOR_LOOP_ITERATOR $this: TYPE_OP type=kotlin.collections.MutableList<*> origin=IMPLICIT_CAST typeOperand=kotlin.collections.MutableList<*> TYPE_OP type=kotlin.collections.List<@[NotNull(value = )] @[EnhancedNullability] .P> origin=IMPLICIT_NOTNULL typeOperand=kotlin.collections.List<@[NotNull(value = )] @[EnhancedNullability] .P> - CALL 'public open fun listOfNotNull (): @[FlexibleNullability] kotlin.collections.List<@[NotNull(value = )] @[EnhancedNullability] .P>? declared in .J' type=@[FlexibleNullability] kotlin.collections.List<@[NotNull(value = )] @[EnhancedNullability] .P>? origin=null + CALL 'public open fun listOfNotNull (): @[FlexibleNullability] kotlin.collections.MutableList<@[NotNull(value = )] @[EnhancedNullability] .P>? declared in .J' type=@[FlexibleNullability] kotlin.collections.MutableList<@[NotNull(value = )] @[EnhancedNullability] .P>? origin=null WHILE label=null origin=FOR_LOOP_INNER_WHILE condition: CALL 'public abstract fun hasNext (): kotlin.Boolean [fake_override,operator] declared in kotlin.collections.MutableIterator' type=kotlin.Boolean origin=FOR_LOOP_HAS_NEXT $this: GET_VAR 'val tmp_0: kotlin.collections.MutableIterator<@[NotNull(value = )] @[EnhancedNullability] .P> [val] declared in .testForInListUnused' type=kotlin.collections.MutableIterator<@[NotNull(value = )] @[EnhancedNullability] .P> origin=null @@ -25,7 +25,7 @@ FILE fqName: fileName:/enhancedNullabilityInForLoop.kt CALL 'public abstract fun iterator (): kotlin.collections.MutableIterator [fake_override,operator] declared in kotlin.collections.MutableList' type=kotlin.collections.MutableIterator<@[NotNull(value = )] @[EnhancedNullability] .P> origin=FOR_LOOP_ITERATOR $this: TYPE_OP type=kotlin.collections.MutableList<*> origin=IMPLICIT_CAST typeOperand=kotlin.collections.MutableList<*> TYPE_OP type=kotlin.collections.List<@[NotNull(value = )] @[EnhancedNullability] .P> origin=IMPLICIT_NOTNULL typeOperand=kotlin.collections.List<@[NotNull(value = )] @[EnhancedNullability] .P> - CALL 'public open fun listOfNotNull (): @[FlexibleNullability] kotlin.collections.List<@[NotNull(value = )] @[EnhancedNullability] .P>? declared in .J' type=@[FlexibleNullability] kotlin.collections.List<@[NotNull(value = )] @[EnhancedNullability] .P>? origin=null + CALL 'public open fun listOfNotNull (): @[FlexibleNullability] kotlin.collections.MutableList<@[NotNull(value = )] @[EnhancedNullability] .P>? declared in .J' type=@[FlexibleNullability] kotlin.collections.MutableList<@[NotNull(value = )] @[EnhancedNullability] .P>? origin=null WHILE label=null origin=FOR_LOOP_INNER_WHILE condition: CALL 'public abstract fun hasNext (): kotlin.Boolean [fake_override,operator] declared in kotlin.collections.MutableIterator' type=kotlin.Boolean origin=FOR_LOOP_HAS_NEXT $this: GET_VAR 'val tmp_1: kotlin.collections.MutableIterator<@[NotNull(value = )] @[EnhancedNullability] .P> [val] declared in .testForInListDestructured' type=kotlin.collections.MutableIterator<@[NotNull(value = )] @[EnhancedNullability] .P> origin=null @@ -48,7 +48,7 @@ FILE fqName: fileName:/enhancedNullabilityInForLoop.kt CALL 'public abstract fun iterator (): kotlin.collections.MutableIterator [fake_override,operator] declared in kotlin.collections.MutableList' type=kotlin.collections.MutableIterator<@[NotNull(value = )] @[EnhancedNullability] .P> origin=null $this: TYPE_OP type=kotlin.collections.MutableList<*> origin=IMPLICIT_CAST typeOperand=kotlin.collections.MutableList<*> TYPE_OP type=kotlin.collections.List<@[NotNull(value = )] @[EnhancedNullability] .P> origin=IMPLICIT_NOTNULL typeOperand=kotlin.collections.List<@[NotNull(value = )] @[EnhancedNullability] .P> - CALL 'public open fun listOfNotNull (): @[FlexibleNullability] kotlin.collections.List<@[NotNull(value = )] @[EnhancedNullability] .P>? declared in .J' type=@[FlexibleNullability] kotlin.collections.List<@[NotNull(value = )] @[EnhancedNullability] .P>? origin=null + CALL 'public open fun listOfNotNull (): @[FlexibleNullability] kotlin.collections.MutableList<@[NotNull(value = )] @[EnhancedNullability] .P>? declared in .J' type=@[FlexibleNullability] kotlin.collections.MutableList<@[NotNull(value = )] @[EnhancedNullability] .P>? origin=null WHILE label=null origin=WHILE_LOOP condition: CALL 'public abstract fun hasNext (): kotlin.Boolean [fake_override,operator] declared in kotlin.collections.MutableIterator' type=kotlin.Boolean origin=null $this: GET_VAR 'val iterator: kotlin.collections.MutableIterator<@[NotNull(value = )] @[EnhancedNullability] .P> [val] declared in .testDesugaredForInList' type=kotlin.collections.MutableIterator<@[NotNull(value = )] @[EnhancedNullability] .P> origin=null @@ -82,7 +82,7 @@ FILE fqName: fileName:/enhancedNullabilityInForLoop.kt CALL 'public abstract fun iterator (): kotlin.collections.MutableIterator [fake_override,operator] declared in kotlin.collections.MutableList' type=kotlin.collections.MutableIterator<@[NotNull(value = )] @[EnhancedNullability] .P> origin=FOR_LOOP_ITERATOR $this: TYPE_OP type=kotlin.collections.MutableList<*> origin=IMPLICIT_CAST typeOperand=kotlin.collections.MutableList<*> TYPE_OP type=kotlin.collections.List<@[NotNull(value = )] @[EnhancedNullability] .P> origin=IMPLICIT_NOTNULL typeOperand=kotlin.collections.List<@[NotNull(value = )] @[EnhancedNullability] .P> - CALL 'public open fun listOfNotNull (): @[FlexibleNullability] kotlin.collections.List<@[NotNull(value = )] @[EnhancedNullability] .P>? declared in .J' type=@[FlexibleNullability] kotlin.collections.List<@[NotNull(value = )] @[EnhancedNullability] .P>? origin=null + CALL 'public open fun listOfNotNull (): @[FlexibleNullability] kotlin.collections.MutableList<@[NotNull(value = )] @[EnhancedNullability] .P>? declared in .J' type=@[FlexibleNullability] kotlin.collections.MutableList<@[NotNull(value = )] @[EnhancedNullability] .P>? origin=null WHILE label=null origin=FOR_LOOP_INNER_WHILE condition: CALL 'public abstract fun hasNext (): kotlin.Boolean [fake_override,operator] declared in kotlin.collections.MutableIterator' type=kotlin.Boolean origin=FOR_LOOP_HAS_NEXT $this: GET_VAR 'val tmp_4: kotlin.collections.MutableIterator<@[NotNull(value = )] @[EnhancedNullability] .P> [val] declared in .testForInListUse' type=kotlin.collections.MutableIterator<@[NotNull(value = )] @[EnhancedNullability] .P> origin=null diff --git a/compiler/testData/ir/irText/types/rawTypeInSignature.txt b/compiler/testData/ir/irText/types/rawTypeInSignature.txt index 48c2010a76d..5b7c302c9c7 100644 --- a/compiler/testData/ir/irText/types/rawTypeInSignature.txt +++ b/compiler/testData/ir/irText/types/rawTypeInSignature.txt @@ -114,13 +114,13 @@ FILE fqName: fileName:/rawTypeInSignature.kt CALL 'public abstract fun returnsRawGenericOut (): @[FlexibleNullability] @[RawType] .GenericOut? declared in .JRaw' type=@[FlexibleNullability] @[RawType] .GenericOut? origin=null $this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:.JRaw visibility:private [final]' type=.JRaw origin=null receiver: GET_VAR ': .KRaw declared in .KRaw.returnsRawGenericOut' type=.KRaw origin=null - FUN DELEGATED_MEMBER name:returnsRawList visibility:public modality:OPEN <> ($this:.KRaw) returnType:@[FlexibleNullability] @[RawType] kotlin.collections.List? + FUN DELEGATED_MEMBER name:returnsRawList visibility:public modality:OPEN <> ($this:.KRaw) returnType:@[FlexibleNullability] @[RawType] kotlin.collections.MutableList? overridden: - public abstract fun returnsRawList (): @[FlexibleNullability] @[RawType] kotlin.collections.List? declared in .JRaw + public abstract fun returnsRawList (): @[FlexibleNullability] @[RawType] kotlin.collections.MutableList? declared in .JRaw $this: VALUE_PARAMETER name: type:.KRaw BLOCK_BODY - RETURN type=kotlin.Nothing from='public open fun returnsRawList (): @[FlexibleNullability] @[RawType] kotlin.collections.List? declared in .KRaw' - CALL 'public abstract fun returnsRawList (): @[FlexibleNullability] @[RawType] kotlin.collections.List? declared in .JRaw' type=@[FlexibleNullability] @[RawType] kotlin.collections.List? origin=null + RETURN type=kotlin.Nothing from='public open fun returnsRawList (): @[FlexibleNullability] @[RawType] kotlin.collections.MutableList? declared in .KRaw' + CALL 'public abstract fun returnsRawList (): @[FlexibleNullability] @[RawType] kotlin.collections.MutableList? declared in .JRaw' type=@[FlexibleNullability] @[RawType] kotlin.collections.MutableList? origin=null $this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:.JRaw visibility:private [final]' type=.JRaw origin=null receiver: GET_VAR ': .KRaw declared in .KRaw.returnsRawList' type=.KRaw origin=null FUN DELEGATED_MEMBER name:takesRawGenericIn visibility:public modality:OPEN <> ($this:.KRaw, g:@[FlexibleNullability] @[RawType] .GenericIn?) returnType:kotlin.Unit @@ -153,16 +153,16 @@ FILE fqName: fileName:/rawTypeInSignature.kt $this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:.JRaw visibility:private [final]' type=.JRaw origin=null receiver: GET_VAR ': .KRaw declared in .KRaw.takesRawGenericOut' type=.KRaw origin=null g: GET_VAR 'g: @[FlexibleNullability] @[RawType] .GenericOut? declared in .KRaw.takesRawGenericOut' type=@[FlexibleNullability] @[RawType] .GenericOut? origin=null - FUN DELEGATED_MEMBER name:takesRawList visibility:public modality:OPEN <> ($this:.KRaw, list:@[FlexibleNullability] @[RawType] kotlin.collections.List?) returnType:kotlin.Unit + FUN DELEGATED_MEMBER name:takesRawList visibility:public modality:OPEN <> ($this:.KRaw, list:@[FlexibleNullability] @[RawType] kotlin.collections.MutableList?) returnType:kotlin.Unit overridden: - public abstract fun takesRawList (list: @[FlexibleNullability] @[RawType] kotlin.collections.List?): kotlin.Unit declared in .JRaw + public abstract fun takesRawList (list: @[FlexibleNullability] @[RawType] kotlin.collections.MutableList?): kotlin.Unit declared in .JRaw $this: VALUE_PARAMETER name: type:.KRaw - VALUE_PARAMETER name:list index:0 type:@[FlexibleNullability] @[RawType] kotlin.collections.List? + VALUE_PARAMETER name:list index:0 type:@[FlexibleNullability] @[RawType] kotlin.collections.MutableList? BLOCK_BODY - CALL 'public abstract fun takesRawList (list: @[FlexibleNullability] @[RawType] kotlin.collections.List?): kotlin.Unit declared in .JRaw' type=kotlin.Unit origin=null + CALL 'public abstract fun takesRawList (list: @[FlexibleNullability] @[RawType] kotlin.collections.MutableList?): kotlin.Unit declared in .JRaw' type=kotlin.Unit origin=null $this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:.JRaw visibility:private [final]' type=.JRaw origin=null receiver: GET_VAR ': .KRaw declared in .KRaw.takesRawList' type=.KRaw origin=null - list: GET_VAR 'list: @[FlexibleNullability] @[RawType] kotlin.collections.List? declared in .KRaw.takesRawList' type=@[FlexibleNullability] @[RawType] kotlin.collections.List? origin=null + list: GET_VAR 'list: @[FlexibleNullability] @[RawType] kotlin.collections.MutableList? declared in .KRaw.takesRawList' type=@[FlexibleNullability] @[RawType] kotlin.collections.MutableList? origin=null FUN FAKE_OVERRIDE name:equals visibility:public modality:OPEN <> ($this:kotlin.Any, other:kotlin.Any?) returnType:kotlin.Boolean [fake_override,operator] overridden: public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in .JRaw diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/BytecodeListingTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/BytecodeListingTestGenerated.java index 398a96bcc2a..e82685ad8f5 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/BytecodeListingTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/BytecodeListingTestGenerated.java @@ -49,6 +49,11 @@ public class BytecodeListingTestGenerated extends AbstractBytecodeListingTest { runTest("compiler/testData/codegen/bytecodeListing/defaultImpls.kt"); } + @TestMetadata("delegationToJavaInterfaceWithWildcardType.kt") + public void testDelegationToJavaInterfaceWithWildcardType() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/delegationToJavaInterfaceWithWildcardType.kt"); + } + @TestMetadata("emptyMultifileFacade.kt") public void testEmptyMultifileFacade() throws Exception { runTest("compiler/testData/codegen/bytecodeListing/emptyMultifileFacade.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBytecodeListingTestGenerated.java b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBytecodeListingTestGenerated.java index 697e45dca3c..ade820bb21d 100644 --- a/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBytecodeListingTestGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/codegen/ir/IrBytecodeListingTestGenerated.java @@ -49,6 +49,11 @@ public class IrBytecodeListingTestGenerated extends AbstractIrBytecodeListingTes runTest("compiler/testData/codegen/bytecodeListing/defaultImpls.kt"); } + @TestMetadata("delegationToJavaInterfaceWithWildcardType.kt") + public void testDelegationToJavaInterfaceWithWildcardType() throws Exception { + runTest("compiler/testData/codegen/bytecodeListing/delegationToJavaInterfaceWithWildcardType.kt"); + } + @TestMetadata("emptyMultifileFacade.kt") public void testEmptyMultifileFacade() throws Exception { runTest("compiler/testData/codegen/bytecodeListing/emptyMultifileFacade.kt"); diff --git a/compiler/tests/org/jetbrains/kotlin/ir/IrTextTestCaseGenerated.java b/compiler/tests/org/jetbrains/kotlin/ir/IrTextTestCaseGenerated.java index 6bdb57edfdb..7e49c1b10a8 100644 --- a/compiler/tests/org/jetbrains/kotlin/ir/IrTextTestCaseGenerated.java +++ b/compiler/tests/org/jetbrains/kotlin/ir/IrTextTestCaseGenerated.java @@ -2069,6 +2069,11 @@ public class IrTextTestCaseGenerated extends AbstractIrTextTestCase { runTest("compiler/testData/ir/irText/types/intersectionType3_OI.kt"); } + @TestMetadata("javaWildcardType.kt") + public void testJavaWildcardType() throws Exception { + runTest("compiler/testData/ir/irText/types/javaWildcardType.kt"); + } + @TestMetadata("kt36143.kt") public void testKt36143() throws Exception { runTest("compiler/testData/ir/irText/types/kt36143.kt");