JVM_IR fix Java wildcard types translation

Types such as 'Collection<? extends CharSequence>' are treated as
'(kotlin.collections.MutableCollection<out kotlin.CharSequence!>
  ..kotlin.collections.Collection<kotlin.CharSequence!>?)'
by the front-end.
When generating generic signatures, JVM BE takes lower bound (which is
'kotlin.collections.MutableCollection<out kotlin.CharSequence!>').
Emulate this behavior in TypeTranslator.
This commit is contained in:
Dmitry Petrov
2020-10-19 17:28:37 +03:00
parent 19ed04e3fe
commit 47c784f023
16 changed files with 283 additions and 47 deletions
@@ -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");
@@ -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<? extends CharSequence>' are treated as
// '( kotlin.collections.MutableCollection<out kotlin.CharSequence!>
// .. kotlin.collections.Collection<kotlin.CharSequence!>? )'
// by the front-end.
// When generating generic signatures, JVM BE uses generic arguments of lower bound,
// thus producing 'java.util.Collection<? extends CharSequence>' from
// 'kotlin.collections.MutableCollection<out kotlin.CharSequence!>'.
// 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()
}
@@ -0,0 +1,22 @@
// FILE: delegationToJavaInterfaceWithWildcardType.kt
// WITH_SIGNATURES
interface K {
fun kf1(): Collection<out CharSequence>
fun kf2(): Collection<CharSequence>
fun kg1(c: Collection<out CharSequence>)
fun kg2(c: Collection<CharSequence>)
}
class C(j: J, k: K) : J by j, K by k
// FILE: J.java
import java.util.*;
public interface J {
Collection<? extends CharSequence> jf1();
Collection<CharSequence> jf2();
void jg1(Collection<? extends CharSequence> c);
void jg2(Collection<CharSequence> c);
}
@@ -0,0 +1,24 @@
@kotlin.Metadata
public final class<null> C {
// source: 'delegationToJavaInterfaceWithWildcardType.kt'
public <()Ljava/util/Collection<+Ljava/lang/CharSequence;>;> method jf1(): java.util.Collection
public <()Ljava/util/Collection<Ljava/lang/CharSequence;>;> method jf2(): java.util.Collection
public @org.jetbrains.annotations.NotNull <()Ljava/util/Collection<Ljava/lang/CharSequence;>;> method kf1(): java.util.Collection
public @org.jetbrains.annotations.NotNull <()Ljava/util/Collection<Ljava/lang/CharSequence;>;> 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<Ljava/lang/CharSequence;>;)V> method jg2(p0: java.util.Collection): void
public <null> method <init>(@org.jetbrains.annotations.NotNull p0: J, @org.jetbrains.annotations.NotNull p1: K): void
private synthetic final field <null> $$delegate_0: J
private synthetic final field <null> $$delegate_1: K
}
@kotlin.Metadata
public interface<null> K {
// source: 'delegationToJavaInterfaceWithWildcardType.kt'
public abstract @org.jetbrains.annotations.NotNull <()Ljava/util/Collection<Ljava/lang/CharSequence;>;> method kf1(): java.util.Collection
public abstract @org.jetbrains.annotations.NotNull <()Ljava/util/Collection<Ljava/lang/CharSequence;>;> 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
}
@@ -19,7 +19,7 @@ public final class<<T:Ljava/lang/Number;>Ljava/lang/Object;> GenericOut {
@kotlin.Metadata
public final class<null> 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/lang/Object;>;Ljava/util/List;)Ljava/util/List;> method bothRawAndGeneric(p0: java.util.List, p1: java.util.List): java.util.List
public <null> method <init>(@org.jetbrains.annotations.NotNull p0: JRaw): void
public <null> method returnsRawGenericIn(): GenericIn
public <null> method returnsRawGenericInv(): GenericInv
+1 -1
View File
@@ -63,7 +63,7 @@ FILE fqName:<root> fileName:/AllCandidates.kt
FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> ($receiver:@[FlexibleNullability] <root>.OverloadResolutionResultsImpl<@[FlexibleNullability] A of <root>.allCandidatesResult?>?) returnType:kotlin.Unit
$receiver: VALUE_PARAMETER name:<this> type:@[FlexibleNullability] <root>.OverloadResolutionResultsImpl<@[FlexibleNullability] A of <root>.allCandidatesResult?>?
BLOCK_BODY
CALL 'public open fun setAllCandidates (allCandidates: @[FlexibleNullability] kotlin.collections.Collection<@[FlexibleNullability] <root>.ResolvedCall<@[FlexibleNullability] D of <root>.OverloadResolutionResultsImpl?>?>?): kotlin.Unit declared in <root>.OverloadResolutionResultsImpl' type=kotlin.Unit origin=EQ
CALL 'public open fun setAllCandidates (allCandidates: @[FlexibleNullability] kotlin.collections.MutableCollection<@[FlexibleNullability] <root>.ResolvedCall<@[FlexibleNullability] D of <root>.OverloadResolutionResultsImpl?>?>?): kotlin.Unit declared in <root>.OverloadResolutionResultsImpl' type=kotlin.Unit origin=EQ
<1>: @[FlexibleNullability] A of <root>.allCandidatesResult?
$this: TYPE_OP type=<root>.OverloadResolutionResultsImpl<@[FlexibleNullability] A of <root>.allCandidatesResult?> origin=IMPLICIT_NOTNULL typeOperand=<root>.OverloadResolutionResultsImpl<@[FlexibleNullability] A of <root>.allCandidatesResult?>
GET_VAR '<this>: @[FlexibleNullability] <root>.OverloadResolutionResultsImpl<@[FlexibleNullability] A of <root>.allCandidatesResult?>? declared in <root>.allCandidatesResult.<anonymous>' type=@[FlexibleNullability] <root>.OverloadResolutionResultsImpl<@[FlexibleNullability] A of <root>.allCandidatesResult?>? origin=null
@@ -8,12 +8,12 @@ FILE fqName:<root> fileName:/typeParametersInImplicitCast.kt
<T>: kotlin.collections.List<T of <root>.problematic>
<R>: @[FlexibleNullability] T of <root>.problematic?
$receiver: GET_VAR 'lss: kotlin.collections.List<kotlin.collections.List<T of <root>.problematic>> declared in <root>.problematic' type=kotlin.collections.List<kotlin.collections.List<T of <root>.problematic>> origin=null
transform: FUN_EXPR type=kotlin.Function1<kotlin.collections.List<T of <root>.problematic>, @[EnhancedNullability] kotlin.collections.List<@[FlexibleNullability] T of <root>.problematic?>> origin=LAMBDA
FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> (it:kotlin.collections.List<T of <root>.problematic>) returnType:@[EnhancedNullability] kotlin.collections.List<@[FlexibleNullability] T of <root>.problematic?>
transform: FUN_EXPR type=kotlin.Function1<kotlin.collections.List<T of <root>.problematic>, @[EnhancedNullability] kotlin.collections.MutableList<@[FlexibleNullability] T of <root>.problematic?>> origin=LAMBDA
FUN LOCAL_FUNCTION_FOR_LAMBDA name:<anonymous> visibility:local modality:FINAL <> (it:kotlin.collections.List<T of <root>.problematic>) returnType:@[EnhancedNullability] kotlin.collections.MutableList<@[FlexibleNullability] T of <root>.problematic?>
VALUE_PARAMETER name:it index:0 type:kotlin.collections.List<T of <root>.problematic>
BLOCK_BODY
RETURN type=kotlin.Nothing from='local final fun <anonymous> (it: kotlin.collections.List<T of <root>.problematic>): @[EnhancedNullability] kotlin.collections.List<@[FlexibleNullability] T of <root>.problematic?> declared in <root>.problematic'
RETURN type=kotlin.Nothing from='local final fun <anonymous> (it: kotlin.collections.List<T of <root>.problematic>): @[EnhancedNullability] kotlin.collections.MutableList<@[FlexibleNullability] T of <root>.problematic?> declared in <root>.problematic'
TYPE_OP type=kotlin.collections.List<@[FlexibleNullability] T of <root>.problematic?> origin=IMPLICIT_NOTNULL typeOperand=kotlin.collections.List<@[FlexibleNullability] T of <root>.problematic?>
CALL 'public/*package*/ open fun id <T> (v: @[FlexibleNullability] kotlin.collections.List<@[FlexibleNullability] T of <root>.ListId.id?>?): @[EnhancedNullability] kotlin.collections.List<@[FlexibleNullability] T of <root>.ListId.id?> declared in <root>.ListId' type=@[EnhancedNullability] kotlin.collections.List<@[FlexibleNullability] T of <root>.problematic?> origin=null
CALL 'public/*package*/ open fun id <T> (v: @[FlexibleNullability] kotlin.collections.MutableList<@[FlexibleNullability] T of <root>.ListId.id?>?): @[EnhancedNullability] kotlin.collections.MutableList<@[FlexibleNullability] T of <root>.ListId.id?> declared in <root>.ListId' type=@[EnhancedNullability] kotlin.collections.MutableList<@[FlexibleNullability] T of <root>.problematic?> origin=null
<T>: @[FlexibleNullability] T of <root>.problematic?
v: GET_VAR 'it: kotlin.collections.List<T of <root>.problematic> declared in <root>.problematic.<anonymous>' type=kotlin.collections.List<T of <root>.problematic> origin=null
+1 -1
View File
@@ -18,7 +18,7 @@ FILE fqName:<root> fileName:/builtinMap.kt
if: CONST Boolean type=kotlin.Boolean value=true
then: CALL 'public final fun apply <T> (block: @[ExtensionFunctionType] kotlin.Function1<T of kotlin.apply, kotlin.Unit>): T of kotlin.apply [inline] declared in kotlin' type=java.util.LinkedHashMap<@[FlexibleNullability] K1 of <root>.plus?, @[FlexibleNullability] V1 of <root>.plus?>{ kotlin.collections.LinkedHashMap<@[FlexibleNullability] K1 of <root>.plus?, @[FlexibleNullability] V1 of <root>.plus?> } origin=null
<T>: java.util.LinkedHashMap<@[FlexibleNullability] K1 of <root>.plus?, @[FlexibleNullability] V1 of <root>.plus?>{ kotlin.collections.LinkedHashMap<@[FlexibleNullability] K1 of <root>.plus?, @[FlexibleNullability] V1 of <root>.plus?> }
$receiver: CONSTRUCTOR_CALL 'public constructor <init> (p0: @[FlexibleNullability] kotlin.collections.Map<out @[FlexibleNullability] K of java.util.LinkedHashMap?, @[FlexibleNullability] V of java.util.LinkedHashMap?>?) declared in java.util.LinkedHashMap' type=java.util.LinkedHashMap<@[FlexibleNullability] K1 of <root>.plus?, @[FlexibleNullability] V1 of <root>.plus?> origin=null
$receiver: CONSTRUCTOR_CALL 'public constructor <init> (p0: @[FlexibleNullability] kotlin.collections.MutableMap<out @[FlexibleNullability] K of java.util.LinkedHashMap?, out @[FlexibleNullability] V of java.util.LinkedHashMap?>?) declared in java.util.LinkedHashMap' type=java.util.LinkedHashMap<@[FlexibleNullability] K1 of <root>.plus?, @[FlexibleNullability] V1 of <root>.plus?> origin=null
<class: K>: @[FlexibleNullability] K1 of <root>.plus?
<class: V>: @[FlexibleNullability] V1 of <root>.plus?
p0: GET_VAR '<this>: kotlin.collections.Map<out K1 of <root>.plus, V1 of <root>.plus> declared in <root>.plus' type=kotlin.collections.Map<out K1 of <root>.plus, V1 of <root>.plus> origin=null
+22
View File
@@ -0,0 +1,22 @@
// FILE: javaWildcardType.kt
interface K {
fun kf1(): Collection<out CharSequence>
fun kf2(): Collection<CharSequence>
fun kg1(c: Collection<out CharSequence>)
fun kg2(c: Collection<CharSequence>)
}
class C(j: J, k: K) : J by j, K by k
// FILE: J.java
import java.util.*;
public interface J {
Collection<? extends CharSequence> jf1();
Collection<CharSequence> jf2();
void jg1(Collection<? extends CharSequence> c);
void jg2(Collection<CharSequence> c);
}
+132
View File
@@ -0,0 +1,132 @@
FILE fqName:<root> fileName:/javaWildcardType.kt
CLASS INTERFACE name:K modality:ABSTRACT visibility:public superTypes:[kotlin.Any]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.K
FUN name:kf1 visibility:public modality:ABSTRACT <> ($this:<root>.K) returnType:kotlin.collections.Collection<out kotlin.CharSequence>
$this: VALUE_PARAMETER name:<this> type:<root>.K
FUN name:kf2 visibility:public modality:ABSTRACT <> ($this:<root>.K) returnType:kotlin.collections.Collection<kotlin.CharSequence>
$this: VALUE_PARAMETER name:<this> type:<root>.K
FUN name:kg1 visibility:public modality:ABSTRACT <> ($this:<root>.K, c:kotlin.collections.Collection<out kotlin.CharSequence>) returnType:kotlin.Unit
$this: VALUE_PARAMETER name:<this> type:<root>.K
VALUE_PARAMETER name:c index:0 type:kotlin.collections.Collection<out kotlin.CharSequence>
FUN name:kg2 visibility:public modality:ABSTRACT <> ($this:<root>.K, c:kotlin.collections.Collection<kotlin.CharSequence>) returnType:kotlin.Unit
$this: VALUE_PARAMETER name:<this> type:<root>.K
VALUE_PARAMETER name:c index:0 type:kotlin.collections.Collection<kotlin.CharSequence>
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:<this> 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:<this> 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:<this> type:kotlin.Any
CLASS CLASS name:C modality:FINAL visibility:public superTypes:[<root>.J; <root>.K]
$this: VALUE_PARAMETER INSTANCE_RECEIVER name:<this> type:<root>.C
CONSTRUCTOR visibility:public <> (j:<root>.J, k:<root>.K) returnType:<root>.C [primary]
VALUE_PARAMETER name:j index:0 type:<root>.J
VALUE_PARAMETER name:k index:1 type:<root>.K
BLOCK_BODY
DELEGATING_CONSTRUCTOR_CALL 'public constructor <init> () [primary] declared in kotlin.Any'
INSTANCE_INITIALIZER_CALL classDescriptor='CLASS CLASS name:C modality:FINAL visibility:public superTypes:[<root>.J; <root>.K]'
FIELD DELEGATE name:$$delegate_0 type:<root>.J visibility:private [final]
EXPRESSION_BODY
GET_VAR 'j: <root>.J declared in <root>.C.<init>' type=<root>.J origin=null
FUN DELEGATED_MEMBER name:jf1 visibility:public modality:OPEN <> ($this:<root>.C) returnType:@[FlexibleNullability] kotlin.collections.MutableCollection<out @[FlexibleNullability] kotlin.CharSequence?>?
overridden:
public abstract fun jf1 (): @[FlexibleNullability] kotlin.collections.MutableCollection<out @[FlexibleNullability] kotlin.CharSequence?>? declared in <root>.J
$this: VALUE_PARAMETER name:<this> type:<root>.C
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun jf1 (): @[FlexibleNullability] kotlin.collections.MutableCollection<out @[FlexibleNullability] kotlin.CharSequence?>? declared in <root>.C'
CALL 'public abstract fun jf1 (): @[FlexibleNullability] kotlin.collections.MutableCollection<out @[FlexibleNullability] kotlin.CharSequence?>? declared in <root>.J' type=@[FlexibleNullability] kotlin.collections.MutableCollection<out @[FlexibleNullability] kotlin.CharSequence?>? origin=null
$this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:<root>.J visibility:private [final]' type=<root>.J origin=null
receiver: GET_VAR '<this>: <root>.C declared in <root>.C.jf1' type=<root>.C origin=null
FUN DELEGATED_MEMBER name:jf2 visibility:public modality:OPEN <> ($this:<root>.C) returnType:@[FlexibleNullability] kotlin.collections.MutableCollection<@[FlexibleNullability] kotlin.CharSequence?>?
overridden:
public abstract fun jf2 (): @[FlexibleNullability] kotlin.collections.MutableCollection<@[FlexibleNullability] kotlin.CharSequence?>? declared in <root>.J
$this: VALUE_PARAMETER name:<this> type:<root>.C
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun jf2 (): @[FlexibleNullability] kotlin.collections.MutableCollection<@[FlexibleNullability] kotlin.CharSequence?>? declared in <root>.C'
CALL 'public abstract fun jf2 (): @[FlexibleNullability] kotlin.collections.MutableCollection<@[FlexibleNullability] kotlin.CharSequence?>? declared in <root>.J' type=@[FlexibleNullability] kotlin.collections.MutableCollection<@[FlexibleNullability] kotlin.CharSequence?>? origin=null
$this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:<root>.J visibility:private [final]' type=<root>.J origin=null
receiver: GET_VAR '<this>: <root>.C declared in <root>.C.jf2' type=<root>.C origin=null
FUN DELEGATED_MEMBER name:jg1 visibility:public modality:OPEN <> ($this:<root>.C, c:@[FlexibleNullability] kotlin.collections.MutableCollection<out @[FlexibleNullability] kotlin.CharSequence?>?) returnType:kotlin.Unit
overridden:
public abstract fun jg1 (c: @[FlexibleNullability] kotlin.collections.MutableCollection<out @[FlexibleNullability] kotlin.CharSequence?>?): kotlin.Unit declared in <root>.J
$this: VALUE_PARAMETER name:<this> type:<root>.C
VALUE_PARAMETER name:c index:0 type:@[FlexibleNullability] kotlin.collections.MutableCollection<out @[FlexibleNullability] kotlin.CharSequence?>?
BLOCK_BODY
CALL 'public abstract fun jg1 (c: @[FlexibleNullability] kotlin.collections.MutableCollection<out @[FlexibleNullability] kotlin.CharSequence?>?): kotlin.Unit declared in <root>.J' type=kotlin.Unit origin=null
$this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:<root>.J visibility:private [final]' type=<root>.J origin=null
receiver: GET_VAR '<this>: <root>.C declared in <root>.C.jg1' type=<root>.C origin=null
c: GET_VAR 'c: @[FlexibleNullability] kotlin.collections.MutableCollection<out @[FlexibleNullability] kotlin.CharSequence?>? declared in <root>.C.jg1' type=@[FlexibleNullability] kotlin.collections.MutableCollection<out @[FlexibleNullability] kotlin.CharSequence?>? origin=null
FUN DELEGATED_MEMBER name:jg2 visibility:public modality:OPEN <> ($this:<root>.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 <root>.J
$this: VALUE_PARAMETER name:<this> type:<root>.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 <root>.J' type=kotlin.Unit origin=null
$this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:<root>.J visibility:private [final]' type=<root>.J origin=null
receiver: GET_VAR '<this>: <root>.C declared in <root>.C.jg2' type=<root>.C origin=null
c: GET_VAR 'c: @[FlexibleNullability] kotlin.collections.MutableCollection<@[FlexibleNullability] kotlin.CharSequence?>? declared in <root>.C.jg2' type=@[FlexibleNullability] kotlin.collections.MutableCollection<@[FlexibleNullability] kotlin.CharSequence?>? origin=null
FIELD DELEGATE name:$$delegate_1 type:<root>.K visibility:private [final]
EXPRESSION_BODY
GET_VAR 'k: <root>.K declared in <root>.C.<init>' type=<root>.K origin=null
FUN DELEGATED_MEMBER name:kf1 visibility:public modality:OPEN <> ($this:<root>.C) returnType:kotlin.collections.Collection<out kotlin.CharSequence>
overridden:
public abstract fun kf1 (): kotlin.collections.Collection<out kotlin.CharSequence> declared in <root>.K
$this: VALUE_PARAMETER name:<this> type:<root>.C
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun kf1 (): kotlin.collections.Collection<out kotlin.CharSequence> declared in <root>.C'
CALL 'public abstract fun kf1 (): kotlin.collections.Collection<out kotlin.CharSequence> declared in <root>.K' type=kotlin.collections.Collection<out kotlin.CharSequence> origin=null
$this: GET_FIELD 'FIELD DELEGATE name:$$delegate_1 type:<root>.K visibility:private [final]' type=<root>.K origin=null
receiver: GET_VAR '<this>: <root>.C declared in <root>.C.kf1' type=<root>.C origin=null
FUN DELEGATED_MEMBER name:kf2 visibility:public modality:OPEN <> ($this:<root>.C) returnType:kotlin.collections.Collection<kotlin.CharSequence>
overridden:
public abstract fun kf2 (): kotlin.collections.Collection<kotlin.CharSequence> declared in <root>.K
$this: VALUE_PARAMETER name:<this> type:<root>.C
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun kf2 (): kotlin.collections.Collection<kotlin.CharSequence> declared in <root>.C'
CALL 'public abstract fun kf2 (): kotlin.collections.Collection<kotlin.CharSequence> declared in <root>.K' type=kotlin.collections.Collection<kotlin.CharSequence> origin=null
$this: GET_FIELD 'FIELD DELEGATE name:$$delegate_1 type:<root>.K visibility:private [final]' type=<root>.K origin=null
receiver: GET_VAR '<this>: <root>.C declared in <root>.C.kf2' type=<root>.C origin=null
FUN DELEGATED_MEMBER name:kg1 visibility:public modality:OPEN <> ($this:<root>.C, c:kotlin.collections.Collection<out kotlin.CharSequence>) returnType:kotlin.Unit
overridden:
public abstract fun kg1 (c: kotlin.collections.Collection<out kotlin.CharSequence>): kotlin.Unit declared in <root>.K
$this: VALUE_PARAMETER name:<this> type:<root>.C
VALUE_PARAMETER name:c index:0 type:kotlin.collections.Collection<out kotlin.CharSequence>
BLOCK_BODY
CALL 'public abstract fun kg1 (c: kotlin.collections.Collection<out kotlin.CharSequence>): kotlin.Unit declared in <root>.K' type=kotlin.Unit origin=null
$this: GET_FIELD 'FIELD DELEGATE name:$$delegate_1 type:<root>.K visibility:private [final]' type=<root>.K origin=null
receiver: GET_VAR '<this>: <root>.C declared in <root>.C.kg1' type=<root>.C origin=null
c: GET_VAR 'c: kotlin.collections.Collection<out kotlin.CharSequence> declared in <root>.C.kg1' type=kotlin.collections.Collection<out kotlin.CharSequence> origin=null
FUN DELEGATED_MEMBER name:kg2 visibility:public modality:OPEN <> ($this:<root>.C, c:kotlin.collections.Collection<kotlin.CharSequence>) returnType:kotlin.Unit
overridden:
public abstract fun kg2 (c: kotlin.collections.Collection<kotlin.CharSequence>): kotlin.Unit declared in <root>.K
$this: VALUE_PARAMETER name:<this> type:<root>.C
VALUE_PARAMETER name:c index:0 type:kotlin.collections.Collection<kotlin.CharSequence>
BLOCK_BODY
CALL 'public abstract fun kg2 (c: kotlin.collections.Collection<kotlin.CharSequence>): kotlin.Unit declared in <root>.K' type=kotlin.Unit origin=null
$this: GET_FIELD 'FIELD DELEGATE name:$$delegate_1 type:<root>.K visibility:private [final]' type=<root>.K origin=null
receiver: GET_VAR '<this>: <root>.C declared in <root>.C.kg2' type=<root>.C origin=null
c: GET_VAR 'c: kotlin.collections.Collection<kotlin.CharSequence> declared in <root>.C.kg2' type=kotlin.collections.Collection<kotlin.CharSequence> 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 <root>.J
public open fun equals (other: kotlin.Any?): kotlin.Boolean [fake_override,operator] declared in <root>.K
$this: VALUE_PARAMETER name:<this> 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 <root>.J
public open fun hashCode (): kotlin.Int [fake_override] declared in <root>.K
$this: VALUE_PARAMETER name:<this> 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 <root>.J
public open fun toString (): kotlin.String [fake_override] declared in <root>.K
$this: VALUE_PARAMETER name:<this> type:kotlin.Any
@@ -193,7 +193,7 @@ FILE fqName:<root> fileName:/enhancedNullabilityInDestructuringAssignment.kt
$receiver: CALL 'public final fun withIndex <T> (): kotlin.collections.Iterable<kotlin.collections.IndexedValue<T of kotlin.collections.withIndex>> declared in kotlin.collections' type=kotlin.collections.Iterable<kotlin.collections.IndexedValue<@[NotNull(value = <null>)] @[EnhancedNullability] <root>.P>> origin=null
<T>: @[NotNull(value = <null>)] @[EnhancedNullability] <root>.P
$receiver: TYPE_OP type=kotlin.collections.List<@[NotNull(value = <null>)] @[EnhancedNullability] <root>.P> origin=IMPLICIT_NOTNULL typeOperand=kotlin.collections.List<@[NotNull(value = <null>)] @[EnhancedNullability] <root>.P>
CALL 'public open fun listOfNotNull (): @[FlexibleNullability] kotlin.collections.List<@[NotNull(value = <null>)] @[EnhancedNullability] <root>.P>? declared in <root>.J' type=@[FlexibleNullability] kotlin.collections.List<@[NotNull(value = <null>)] @[EnhancedNullability] <root>.P>? origin=null
CALL 'public open fun listOfNotNull (): @[FlexibleNullability] kotlin.collections.MutableList<@[NotNull(value = <null>)] @[EnhancedNullability] <root>.P>? declared in <root>.J' type=@[FlexibleNullability] kotlin.collections.MutableList<@[NotNull(value = <null>)] @[EnhancedNullability] <root>.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 = <null>)] @[EnhancedNullability] <root>.P> [val] declared in <root>.test4' type=kotlin.collections.IndexedValue<@[NotNull(value = <null>)] @[EnhancedNullability] <root>.P> origin=null
@@ -9,7 +9,7 @@ FILE fqName:<root> fileName:/enhancedNullabilityInForLoop.kt
CALL 'public abstract fun iterator (): kotlin.collections.MutableIterator<E of kotlin.collections.MutableList> [fake_override,operator] declared in kotlin.collections.MutableList' type=kotlin.collections.MutableIterator<@[NotNull(value = <null>)] @[EnhancedNullability] <root>.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 = <null>)] @[EnhancedNullability] <root>.P> origin=IMPLICIT_NOTNULL typeOperand=kotlin.collections.List<@[NotNull(value = <null>)] @[EnhancedNullability] <root>.P>
CALL 'public open fun listOfNotNull (): @[FlexibleNullability] kotlin.collections.List<@[NotNull(value = <null>)] @[EnhancedNullability] <root>.P>? declared in <root>.J' type=@[FlexibleNullability] kotlin.collections.List<@[NotNull(value = <null>)] @[EnhancedNullability] <root>.P>? origin=null
CALL 'public open fun listOfNotNull (): @[FlexibleNullability] kotlin.collections.MutableList<@[NotNull(value = <null>)] @[EnhancedNullability] <root>.P>? declared in <root>.J' type=@[FlexibleNullability] kotlin.collections.MutableList<@[NotNull(value = <null>)] @[EnhancedNullability] <root>.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 = <null>)] @[EnhancedNullability] <root>.P> [val] declared in <root>.testForInListUnused' type=kotlin.collections.MutableIterator<@[NotNull(value = <null>)] @[EnhancedNullability] <root>.P> origin=null
@@ -25,7 +25,7 @@ FILE fqName:<root> fileName:/enhancedNullabilityInForLoop.kt
CALL 'public abstract fun iterator (): kotlin.collections.MutableIterator<E of kotlin.collections.MutableList> [fake_override,operator] declared in kotlin.collections.MutableList' type=kotlin.collections.MutableIterator<@[NotNull(value = <null>)] @[EnhancedNullability] <root>.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 = <null>)] @[EnhancedNullability] <root>.P> origin=IMPLICIT_NOTNULL typeOperand=kotlin.collections.List<@[NotNull(value = <null>)] @[EnhancedNullability] <root>.P>
CALL 'public open fun listOfNotNull (): @[FlexibleNullability] kotlin.collections.List<@[NotNull(value = <null>)] @[EnhancedNullability] <root>.P>? declared in <root>.J' type=@[FlexibleNullability] kotlin.collections.List<@[NotNull(value = <null>)] @[EnhancedNullability] <root>.P>? origin=null
CALL 'public open fun listOfNotNull (): @[FlexibleNullability] kotlin.collections.MutableList<@[NotNull(value = <null>)] @[EnhancedNullability] <root>.P>? declared in <root>.J' type=@[FlexibleNullability] kotlin.collections.MutableList<@[NotNull(value = <null>)] @[EnhancedNullability] <root>.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 = <null>)] @[EnhancedNullability] <root>.P> [val] declared in <root>.testForInListDestructured' type=kotlin.collections.MutableIterator<@[NotNull(value = <null>)] @[EnhancedNullability] <root>.P> origin=null
@@ -48,7 +48,7 @@ FILE fqName:<root> fileName:/enhancedNullabilityInForLoop.kt
CALL 'public abstract fun iterator (): kotlin.collections.MutableIterator<E of kotlin.collections.MutableList> [fake_override,operator] declared in kotlin.collections.MutableList' type=kotlin.collections.MutableIterator<@[NotNull(value = <null>)] @[EnhancedNullability] <root>.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 = <null>)] @[EnhancedNullability] <root>.P> origin=IMPLICIT_NOTNULL typeOperand=kotlin.collections.List<@[NotNull(value = <null>)] @[EnhancedNullability] <root>.P>
CALL 'public open fun listOfNotNull (): @[FlexibleNullability] kotlin.collections.List<@[NotNull(value = <null>)] @[EnhancedNullability] <root>.P>? declared in <root>.J' type=@[FlexibleNullability] kotlin.collections.List<@[NotNull(value = <null>)] @[EnhancedNullability] <root>.P>? origin=null
CALL 'public open fun listOfNotNull (): @[FlexibleNullability] kotlin.collections.MutableList<@[NotNull(value = <null>)] @[EnhancedNullability] <root>.P>? declared in <root>.J' type=@[FlexibleNullability] kotlin.collections.MutableList<@[NotNull(value = <null>)] @[EnhancedNullability] <root>.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 = <null>)] @[EnhancedNullability] <root>.P> [val] declared in <root>.testDesugaredForInList' type=kotlin.collections.MutableIterator<@[NotNull(value = <null>)] @[EnhancedNullability] <root>.P> origin=null
@@ -82,7 +82,7 @@ FILE fqName:<root> fileName:/enhancedNullabilityInForLoop.kt
CALL 'public abstract fun iterator (): kotlin.collections.MutableIterator<E of kotlin.collections.MutableList> [fake_override,operator] declared in kotlin.collections.MutableList' type=kotlin.collections.MutableIterator<@[NotNull(value = <null>)] @[EnhancedNullability] <root>.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 = <null>)] @[EnhancedNullability] <root>.P> origin=IMPLICIT_NOTNULL typeOperand=kotlin.collections.List<@[NotNull(value = <null>)] @[EnhancedNullability] <root>.P>
CALL 'public open fun listOfNotNull (): @[FlexibleNullability] kotlin.collections.List<@[NotNull(value = <null>)] @[EnhancedNullability] <root>.P>? declared in <root>.J' type=@[FlexibleNullability] kotlin.collections.List<@[NotNull(value = <null>)] @[EnhancedNullability] <root>.P>? origin=null
CALL 'public open fun listOfNotNull (): @[FlexibleNullability] kotlin.collections.MutableList<@[NotNull(value = <null>)] @[EnhancedNullability] <root>.P>? declared in <root>.J' type=@[FlexibleNullability] kotlin.collections.MutableList<@[NotNull(value = <null>)] @[EnhancedNullability] <root>.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 = <null>)] @[EnhancedNullability] <root>.P> [val] declared in <root>.testForInListUse' type=kotlin.collections.MutableIterator<@[NotNull(value = <null>)] @[EnhancedNullability] <root>.P> origin=null
+9 -9
View File
@@ -114,13 +114,13 @@ FILE fqName:<root> fileName:/rawTypeInSignature.kt
CALL 'public abstract fun returnsRawGenericOut (): @[FlexibleNullability] @[RawType] <root>.GenericOut<kotlin.Number>? declared in <root>.JRaw' type=@[FlexibleNullability] @[RawType] <root>.GenericOut<kotlin.Number>? origin=null
$this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:<root>.JRaw visibility:private [final]' type=<root>.JRaw origin=null
receiver: GET_VAR '<this>: <root>.KRaw declared in <root>.KRaw.returnsRawGenericOut' type=<root>.KRaw origin=null
FUN DELEGATED_MEMBER name:returnsRawList visibility:public modality:OPEN <> ($this:<root>.KRaw) returnType:@[FlexibleNullability] @[RawType] kotlin.collections.List<kotlin.Any?>?
FUN DELEGATED_MEMBER name:returnsRawList visibility:public modality:OPEN <> ($this:<root>.KRaw) returnType:@[FlexibleNullability] @[RawType] kotlin.collections.MutableList<kotlin.Any?>?
overridden:
public abstract fun returnsRawList (): @[FlexibleNullability] @[RawType] kotlin.collections.List<kotlin.Any?>? declared in <root>.JRaw
public abstract fun returnsRawList (): @[FlexibleNullability] @[RawType] kotlin.collections.MutableList<kotlin.Any?>? declared in <root>.JRaw
$this: VALUE_PARAMETER name:<this> type:<root>.KRaw
BLOCK_BODY
RETURN type=kotlin.Nothing from='public open fun returnsRawList (): @[FlexibleNullability] @[RawType] kotlin.collections.List<kotlin.Any?>? declared in <root>.KRaw'
CALL 'public abstract fun returnsRawList (): @[FlexibleNullability] @[RawType] kotlin.collections.List<kotlin.Any?>? declared in <root>.JRaw' type=@[FlexibleNullability] @[RawType] kotlin.collections.List<kotlin.Any?>? origin=null
RETURN type=kotlin.Nothing from='public open fun returnsRawList (): @[FlexibleNullability] @[RawType] kotlin.collections.MutableList<kotlin.Any?>? declared in <root>.KRaw'
CALL 'public abstract fun returnsRawList (): @[FlexibleNullability] @[RawType] kotlin.collections.MutableList<kotlin.Any?>? declared in <root>.JRaw' type=@[FlexibleNullability] @[RawType] kotlin.collections.MutableList<kotlin.Any?>? origin=null
$this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:<root>.JRaw visibility:private [final]' type=<root>.JRaw origin=null
receiver: GET_VAR '<this>: <root>.KRaw declared in <root>.KRaw.returnsRawList' type=<root>.KRaw origin=null
FUN DELEGATED_MEMBER name:takesRawGenericIn visibility:public modality:OPEN <> ($this:<root>.KRaw, g:@[FlexibleNullability] @[RawType] <root>.GenericIn<kotlin.Number>?) returnType:kotlin.Unit
@@ -153,16 +153,16 @@ FILE fqName:<root> fileName:/rawTypeInSignature.kt
$this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:<root>.JRaw visibility:private [final]' type=<root>.JRaw origin=null
receiver: GET_VAR '<this>: <root>.KRaw declared in <root>.KRaw.takesRawGenericOut' type=<root>.KRaw origin=null
g: GET_VAR 'g: @[FlexibleNullability] @[RawType] <root>.GenericOut<kotlin.Number>? declared in <root>.KRaw.takesRawGenericOut' type=@[FlexibleNullability] @[RawType] <root>.GenericOut<kotlin.Number>? origin=null
FUN DELEGATED_MEMBER name:takesRawList visibility:public modality:OPEN <> ($this:<root>.KRaw, list:@[FlexibleNullability] @[RawType] kotlin.collections.List<kotlin.Any?>?) returnType:kotlin.Unit
FUN DELEGATED_MEMBER name:takesRawList visibility:public modality:OPEN <> ($this:<root>.KRaw, list:@[FlexibleNullability] @[RawType] kotlin.collections.MutableList<kotlin.Any?>?) returnType:kotlin.Unit
overridden:
public abstract fun takesRawList (list: @[FlexibleNullability] @[RawType] kotlin.collections.List<kotlin.Any?>?): kotlin.Unit declared in <root>.JRaw
public abstract fun takesRawList (list: @[FlexibleNullability] @[RawType] kotlin.collections.MutableList<kotlin.Any?>?): kotlin.Unit declared in <root>.JRaw
$this: VALUE_PARAMETER name:<this> type:<root>.KRaw
VALUE_PARAMETER name:list index:0 type:@[FlexibleNullability] @[RawType] kotlin.collections.List<kotlin.Any?>?
VALUE_PARAMETER name:list index:0 type:@[FlexibleNullability] @[RawType] kotlin.collections.MutableList<kotlin.Any?>?
BLOCK_BODY
CALL 'public abstract fun takesRawList (list: @[FlexibleNullability] @[RawType] kotlin.collections.List<kotlin.Any?>?): kotlin.Unit declared in <root>.JRaw' type=kotlin.Unit origin=null
CALL 'public abstract fun takesRawList (list: @[FlexibleNullability] @[RawType] kotlin.collections.MutableList<kotlin.Any?>?): kotlin.Unit declared in <root>.JRaw' type=kotlin.Unit origin=null
$this: GET_FIELD 'FIELD DELEGATE name:$$delegate_0 type:<root>.JRaw visibility:private [final]' type=<root>.JRaw origin=null
receiver: GET_VAR '<this>: <root>.KRaw declared in <root>.KRaw.takesRawList' type=<root>.KRaw origin=null
list: GET_VAR 'list: @[FlexibleNullability] @[RawType] kotlin.collections.List<kotlin.Any?>? declared in <root>.KRaw.takesRawList' type=@[FlexibleNullability] @[RawType] kotlin.collections.List<kotlin.Any?>? origin=null
list: GET_VAR 'list: @[FlexibleNullability] @[RawType] kotlin.collections.MutableList<kotlin.Any?>? declared in <root>.KRaw.takesRawList' type=@[FlexibleNullability] @[RawType] kotlin.collections.MutableList<kotlin.Any?>? 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 <root>.JRaw
@@ -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");
@@ -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");
@@ -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");