diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmGeneratorExtensions.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmGeneratorExtensions.kt index 8021a4f4e7b..4ebc62d8ce7 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmGeneratorExtensions.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/JvmGeneratorExtensions.kt @@ -12,10 +12,7 @@ import org.jetbrains.kotlin.descriptors.* import org.jetbrains.kotlin.descriptors.annotations.FilteredAnnotations import org.jetbrains.kotlin.ir.builders.declarations.addConstructor import org.jetbrains.kotlin.ir.builders.declarations.buildClass -import org.jetbrains.kotlin.ir.declarations.IrClass -import org.jetbrains.kotlin.ir.declarations.IrConstructor -import org.jetbrains.kotlin.ir.declarations.IrDeclarationOrigin -import org.jetbrains.kotlin.ir.declarations.IrFactory +import org.jetbrains.kotlin.ir.declarations.* import org.jetbrains.kotlin.ir.declarations.impl.IrExternalPackageFragmentImpl import org.jetbrains.kotlin.ir.declarations.impl.IrFactoryImpl import org.jetbrains.kotlin.ir.descriptors.IrBuiltIns @@ -112,27 +109,27 @@ class JvmGeneratorExtensions(private val generateFacades: Boolean = true) : Gene private val kotlinJvmInternalPackage = IrExternalPackageFragmentImpl(DescriptorlessExternalPackageFragmentSymbol(), JvmAnnotationNames.KOTLIN_JVM_INTERNAL) - private val flexibleNullabilityAnnotationClass = IrFactoryImpl.buildClass { - kind = ClassKind.ANNOTATION_CLASS - name = FLEXIBLE_NULLABILITY_ANNOTATION_FQ_NAME.shortName() - }.apply { - createImplicitParameterDeclarationWithWrappedDescriptor() - parent = kotlinIrInternalPackage - addConstructor { - isPrimary = true + private fun createSpecialAnnotationClass(fqn: FqName, parent: IrPackageFragment) = + IrFactoryImpl.buildClass { + kind = ClassKind.ANNOTATION_CLASS + name = fqn.shortName() + }.apply { + createImplicitParameterDeclarationWithWrappedDescriptor() + this.parent = parent + addConstructor { + isPrimary = true + } } - } - private val enhancedNullabilityAnnotationClass = IrFactoryImpl.buildClass { - kind = ClassKind.ANNOTATION_CLASS - name = ENHANCED_NULLABILITY_ANNOTATION_FQ_NAME.shortName() - }.apply { - createImplicitParameterDeclarationWithWrappedDescriptor() - parent = kotlinJvmInternalPackage - addConstructor { - isPrimary = true - } - } + private val flexibleNullabilityAnnotationClass = + createSpecialAnnotationClass(FLEXIBLE_NULLABILITY_ANNOTATION_FQ_NAME, kotlinIrInternalPackage) + + private val rawTypeAnnotationClass = + createSpecialAnnotationClass(RAW_TYPE_ANNOTATION_FQ_NAME, kotlinIrInternalPackage) + + // NB Class 'kotlin.jvm.internal.EnhancedNullability' doesn't exist anywhere in descriptors or in bytecode + private val enhancedNullabilityAnnotationClass = + createSpecialAnnotationClass(ENHANCED_NULLABILITY_ANNOTATION_FQ_NAME, kotlinJvmInternalPackage) override val flexibleNullabilityAnnotationConstructor: IrConstructor? = flexibleNullabilityAnnotationClass.constructors.single() @@ -140,11 +137,17 @@ class JvmGeneratorExtensions(private val generateFacades: Boolean = true) : Gene override val enhancedNullabilityAnnotationConstructor: IrConstructor? = enhancedNullabilityAnnotationClass.constructors.single() + override val rawTypeAnnotationConstructor: IrConstructor? = + rawTypeAnnotationClass.constructors.single() + companion object { val FLEXIBLE_NULLABILITY_ANNOTATION_FQ_NAME = IrBuiltIns.KOTLIN_INTERNAL_IR_FQN.child(Name.identifier("FlexibleNullability")) val ENHANCED_NULLABILITY_ANNOTATION_FQ_NAME: FqName = JvmAnnotationNames.ENHANCED_NULLABILITY_ANNOTATION + + val RAW_TYPE_ANNOTATION_FQ_NAME = + IrBuiltIns.KOTLIN_INTERNAL_IR_FQN.child(Name.identifier("RawType")) } } diff --git a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/AnnotationCodegen.kt b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/AnnotationCodegen.kt index 6443a223df5..84c21afb683 100644 --- a/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/AnnotationCodegen.kt +++ b/compiler/ir/backend.jvm/src/org/jetbrains/kotlin/backend/jvm/codegen/AnnotationCodegen.kt @@ -298,7 +298,8 @@ abstract class AnnotationCodegen( internal val internalAnnotations = setOf( JvmGeneratorExtensions.FLEXIBLE_NULLABILITY_ANNOTATION_FQ_NAME, - JvmGeneratorExtensions.ENHANCED_NULLABILITY_ANNOTATION_FQ_NAME + JvmGeneratorExtensions.ENHANCED_NULLABILITY_ANNOTATION_FQ_NAME, + JvmGeneratorExtensions.RAW_TYPE_ANNOTATION_FQ_NAME ) private fun getRetentionPolicy(irClass: IrClass): RetentionPolicy { diff --git a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/StubGeneratorExtensions.kt b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/StubGeneratorExtensions.kt index 47d77635cbf..886a7ea6dcd 100644 --- a/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/StubGeneratorExtensions.kt +++ b/compiler/ir/ir.tree/src/org/jetbrains/kotlin/ir/util/StubGeneratorExtensions.kt @@ -38,6 +38,9 @@ open class StubGeneratorExtensions { open val enhancedNullabilityAnnotationConstructor: IrConstructor? get() = null + open val rawTypeAnnotationConstructor: IrConstructor? + get() = null + companion object { @JvmField val EMPTY = StubGeneratorExtensions() 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 f96ab834faa..e3cc55bdb2f 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 @@ -208,6 +208,10 @@ class TypeTranslator( irAnnotations.addSpecialAnnotation(extensions.flexibleNullabilityAnnotationConstructor) } + if (flexibleType is RawType) { + irAnnotations.addSpecialAnnotation(extensions.rawTypeAnnotationConstructor) + } + return irAnnotations } diff --git a/compiler/testData/ir/irText/types/rawTypeInSignature.txt b/compiler/testData/ir/irText/types/rawTypeInSignature.txt index 5fa1a2bf5a4..48c2010a76d 100644 --- a/compiler/testData/ir/irText/types/rawTypeInSignature.txt +++ b/compiler/testData/ir/irText/types/rawTypeInSignature.txt @@ -59,23 +59,23 @@ FILE fqName: fileName:/rawTypeInSignature.kt overridden: public open fun toString (): kotlin.String declared in kotlin.Any $this: VALUE_PARAMETER name: type:kotlin.Any - FUN name:testReturnsRawGenericInv visibility:public modality:FINAL <> (j:.JRaw) returnType:@[FlexibleNullability] .GenericInv? + FUN name:testReturnsRawGenericInv visibility:public modality:FINAL <> (j:.JRaw) returnType:@[FlexibleNullability] @[RawType] .GenericInv? VALUE_PARAMETER name:j index:0 type:.JRaw BLOCK_BODY - RETURN type=kotlin.Nothing from='public final fun testReturnsRawGenericInv (j: .JRaw): @[FlexibleNullability] .GenericInv? declared in ' - CALL 'public abstract fun returnsRawGenericInv (): @[FlexibleNullability] .GenericInv? declared in .JRaw' type=@[FlexibleNullability] .GenericInv? origin=null + RETURN type=kotlin.Nothing from='public final fun testReturnsRawGenericInv (j: .JRaw): @[FlexibleNullability] @[RawType] .GenericInv? declared in ' + CALL 'public abstract fun returnsRawGenericInv (): @[FlexibleNullability] @[RawType] .GenericInv? declared in .JRaw' type=@[FlexibleNullability] @[RawType] .GenericInv? origin=null $this: GET_VAR 'j: .JRaw declared in .testReturnsRawGenericInv' type=.JRaw origin=null - FUN name:testReturnsRawGenericIn visibility:public modality:FINAL <> (j:.JRaw) returnType:@[FlexibleNullability] .GenericIn? + FUN name:testReturnsRawGenericIn visibility:public modality:FINAL <> (j:.JRaw) returnType:@[FlexibleNullability] @[RawType] .GenericIn? VALUE_PARAMETER name:j index:0 type:.JRaw BLOCK_BODY - RETURN type=kotlin.Nothing from='public final fun testReturnsRawGenericIn (j: .JRaw): @[FlexibleNullability] .GenericIn? declared in ' - CALL 'public abstract fun returnsRawGenericIn (): @[FlexibleNullability] .GenericIn? declared in .JRaw' type=@[FlexibleNullability] .GenericIn? origin=null + RETURN type=kotlin.Nothing from='public final fun testReturnsRawGenericIn (j: .JRaw): @[FlexibleNullability] @[RawType] .GenericIn? declared in ' + CALL 'public abstract fun returnsRawGenericIn (): @[FlexibleNullability] @[RawType] .GenericIn? declared in .JRaw' type=@[FlexibleNullability] @[RawType] .GenericIn? origin=null $this: GET_VAR 'j: .JRaw declared in .testReturnsRawGenericIn' type=.JRaw origin=null - FUN name:testReturnsRawGenericOut visibility:public modality:FINAL <> (j:.JRaw) returnType:@[FlexibleNullability] .GenericOut? + FUN name:testReturnsRawGenericOut visibility:public modality:FINAL <> (j:.JRaw) returnType:@[FlexibleNullability] @[RawType] .GenericOut? VALUE_PARAMETER name:j index:0 type:.JRaw BLOCK_BODY - RETURN type=kotlin.Nothing from='public final fun testReturnsRawGenericOut (j: .JRaw): @[FlexibleNullability] .GenericOut? declared in ' - CALL 'public abstract fun returnsRawGenericOut (): @[FlexibleNullability] .GenericOut? declared in .JRaw' type=@[FlexibleNullability] .GenericOut? origin=null + RETURN type=kotlin.Nothing from='public final fun testReturnsRawGenericOut (j: .JRaw): @[FlexibleNullability] @[RawType] .GenericOut? declared in ' + CALL 'public abstract fun returnsRawGenericOut (): @[FlexibleNullability] @[RawType] .GenericOut? declared in .JRaw' type=@[FlexibleNullability] @[RawType] .GenericOut? origin=null $this: GET_VAR 'j: .JRaw declared in .testReturnsRawGenericOut' type=.JRaw origin=null CLASS CLASS name:KRaw modality:FINAL visibility:public superTypes:[.JRaw] $this: VALUE_PARAMETER INSTANCE_RECEIVER name: type:.KRaw @@ -87,82 +87,82 @@ FILE fqName: fileName:/rawTypeInSignature.kt FIELD DELEGATE name:$$delegate_0 type:.JRaw visibility:private [final] EXPRESSION_BODY GET_VAR 'j: .JRaw declared in .KRaw.' type=.JRaw origin=null - FUN DELEGATED_MEMBER name:returnsRawGenericIn visibility:public modality:OPEN <> ($this:.KRaw) returnType:@[FlexibleNullability] .GenericIn? + FUN DELEGATED_MEMBER name:returnsRawGenericIn visibility:public modality:OPEN <> ($this:.KRaw) returnType:@[FlexibleNullability] @[RawType] .GenericIn? overridden: - public abstract fun returnsRawGenericIn (): @[FlexibleNullability] .GenericIn? declared in .JRaw + public abstract fun returnsRawGenericIn (): @[FlexibleNullability] @[RawType] .GenericIn? declared in .JRaw $this: VALUE_PARAMETER name: type:.KRaw BLOCK_BODY - RETURN type=kotlin.Nothing from='public open fun returnsRawGenericIn (): @[FlexibleNullability] .GenericIn? declared in .KRaw' - CALL 'public abstract fun returnsRawGenericIn (): @[FlexibleNullability] .GenericIn? declared in .JRaw' type=@[FlexibleNullability] .GenericIn? origin=null + RETURN type=kotlin.Nothing from='public open fun returnsRawGenericIn (): @[FlexibleNullability] @[RawType] .GenericIn? declared in .KRaw' + CALL 'public abstract fun returnsRawGenericIn (): @[FlexibleNullability] @[RawType] .GenericIn? declared in .JRaw' type=@[FlexibleNullability] @[RawType] .GenericIn? 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.returnsRawGenericIn' type=.KRaw origin=null - FUN DELEGATED_MEMBER name:returnsRawGenericInv visibility:public modality:OPEN <> ($this:.KRaw) returnType:@[FlexibleNullability] .GenericInv? + FUN DELEGATED_MEMBER name:returnsRawGenericInv visibility:public modality:OPEN <> ($this:.KRaw) returnType:@[FlexibleNullability] @[RawType] .GenericInv? overridden: - public abstract fun returnsRawGenericInv (): @[FlexibleNullability] .GenericInv? declared in .JRaw + public abstract fun returnsRawGenericInv (): @[FlexibleNullability] @[RawType] .GenericInv? declared in .JRaw $this: VALUE_PARAMETER name: type:.KRaw BLOCK_BODY - RETURN type=kotlin.Nothing from='public open fun returnsRawGenericInv (): @[FlexibleNullability] .GenericInv? declared in .KRaw' - CALL 'public abstract fun returnsRawGenericInv (): @[FlexibleNullability] .GenericInv? declared in .JRaw' type=@[FlexibleNullability] .GenericInv? origin=null + RETURN type=kotlin.Nothing from='public open fun returnsRawGenericInv (): @[FlexibleNullability] @[RawType] .GenericInv? declared in .KRaw' + CALL 'public abstract fun returnsRawGenericInv (): @[FlexibleNullability] @[RawType] .GenericInv? declared in .JRaw' type=@[FlexibleNullability] @[RawType] .GenericInv? 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.returnsRawGenericInv' type=.KRaw origin=null - FUN DELEGATED_MEMBER name:returnsRawGenericOut visibility:public modality:OPEN <> ($this:.KRaw) returnType:@[FlexibleNullability] .GenericOut? + FUN DELEGATED_MEMBER name:returnsRawGenericOut visibility:public modality:OPEN <> ($this:.KRaw) returnType:@[FlexibleNullability] @[RawType] .GenericOut? overridden: - public abstract fun returnsRawGenericOut (): @[FlexibleNullability] .GenericOut? declared in .JRaw + public abstract fun returnsRawGenericOut (): @[FlexibleNullability] @[RawType] .GenericOut? declared in .JRaw $this: VALUE_PARAMETER name: type:.KRaw BLOCK_BODY - RETURN type=kotlin.Nothing from='public open fun returnsRawGenericOut (): @[FlexibleNullability] .GenericOut? declared in .KRaw' - CALL 'public abstract fun returnsRawGenericOut (): @[FlexibleNullability] .GenericOut? declared in .JRaw' type=@[FlexibleNullability] .GenericOut? origin=null + RETURN type=kotlin.Nothing from='public open fun returnsRawGenericOut (): @[FlexibleNullability] @[RawType] .GenericOut? declared in .KRaw' + 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] kotlin.collections.List? + FUN DELEGATED_MEMBER name:returnsRawList visibility:public modality:OPEN <> ($this:.KRaw) returnType:@[FlexibleNullability] @[RawType] kotlin.collections.List? overridden: - public abstract fun returnsRawList (): @[FlexibleNullability] kotlin.collections.List? declared in .JRaw + public abstract fun returnsRawList (): @[FlexibleNullability] @[RawType] kotlin.collections.List? declared in .JRaw $this: VALUE_PARAMETER name: type:.KRaw BLOCK_BODY - RETURN type=kotlin.Nothing from='public open fun returnsRawList (): @[FlexibleNullability] kotlin.collections.List? declared in .KRaw' - CALL 'public abstract fun returnsRawList (): @[FlexibleNullability] kotlin.collections.List? declared in .JRaw' type=@[FlexibleNullability] kotlin.collections.List? origin=null + 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 $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] .GenericIn?) returnType:kotlin.Unit + FUN DELEGATED_MEMBER name:takesRawGenericIn visibility:public modality:OPEN <> ($this:.KRaw, g:@[FlexibleNullability] @[RawType] .GenericIn?) returnType:kotlin.Unit overridden: - public abstract fun takesRawGenericIn (g: @[FlexibleNullability] .GenericIn?): kotlin.Unit declared in .JRaw + public abstract fun takesRawGenericIn (g: @[FlexibleNullability] @[RawType] .GenericIn?): kotlin.Unit declared in .JRaw $this: VALUE_PARAMETER name: type:.KRaw - VALUE_PARAMETER name:g index:0 type:@[FlexibleNullability] .GenericIn? + VALUE_PARAMETER name:g index:0 type:@[FlexibleNullability] @[RawType] .GenericIn? BLOCK_BODY - CALL 'public abstract fun takesRawGenericIn (g: @[FlexibleNullability] .GenericIn?): kotlin.Unit declared in .JRaw' type=kotlin.Unit origin=null + CALL 'public abstract fun takesRawGenericIn (g: @[FlexibleNullability] @[RawType] .GenericIn?): 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.takesRawGenericIn' type=.KRaw origin=null - g: GET_VAR 'g: @[FlexibleNullability] .GenericIn? declared in .KRaw.takesRawGenericIn' type=@[FlexibleNullability] .GenericIn? origin=null - FUN DELEGATED_MEMBER name:takesRawGenericInv visibility:public modality:OPEN <> ($this:.KRaw, g:@[FlexibleNullability] .GenericInv?) returnType:kotlin.Unit + g: GET_VAR 'g: @[FlexibleNullability] @[RawType] .GenericIn? declared in .KRaw.takesRawGenericIn' type=@[FlexibleNullability] @[RawType] .GenericIn? origin=null + FUN DELEGATED_MEMBER name:takesRawGenericInv visibility:public modality:OPEN <> ($this:.KRaw, g:@[FlexibleNullability] @[RawType] .GenericInv?) returnType:kotlin.Unit overridden: - public abstract fun takesRawGenericInv (g: @[FlexibleNullability] .GenericInv?): kotlin.Unit declared in .JRaw + public abstract fun takesRawGenericInv (g: @[FlexibleNullability] @[RawType] .GenericInv?): kotlin.Unit declared in .JRaw $this: VALUE_PARAMETER name: type:.KRaw - VALUE_PARAMETER name:g index:0 type:@[FlexibleNullability] .GenericInv? + VALUE_PARAMETER name:g index:0 type:@[FlexibleNullability] @[RawType] .GenericInv? BLOCK_BODY - CALL 'public abstract fun takesRawGenericInv (g: @[FlexibleNullability] .GenericInv?): kotlin.Unit declared in .JRaw' type=kotlin.Unit origin=null + CALL 'public abstract fun takesRawGenericInv (g: @[FlexibleNullability] @[RawType] .GenericInv?): 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.takesRawGenericInv' type=.KRaw origin=null - g: GET_VAR 'g: @[FlexibleNullability] .GenericInv? declared in .KRaw.takesRawGenericInv' type=@[FlexibleNullability] .GenericInv? origin=null - FUN DELEGATED_MEMBER name:takesRawGenericOut visibility:public modality:OPEN <> ($this:.KRaw, g:@[FlexibleNullability] .GenericOut?) returnType:kotlin.Unit + g: GET_VAR 'g: @[FlexibleNullability] @[RawType] .GenericInv? declared in .KRaw.takesRawGenericInv' type=@[FlexibleNullability] @[RawType] .GenericInv? origin=null + FUN DELEGATED_MEMBER name:takesRawGenericOut visibility:public modality:OPEN <> ($this:.KRaw, g:@[FlexibleNullability] @[RawType] .GenericOut?) returnType:kotlin.Unit overridden: - public abstract fun takesRawGenericOut (g: @[FlexibleNullability] .GenericOut?): kotlin.Unit declared in .JRaw + public abstract fun takesRawGenericOut (g: @[FlexibleNullability] @[RawType] .GenericOut?): kotlin.Unit declared in .JRaw $this: VALUE_PARAMETER name: type:.KRaw - VALUE_PARAMETER name:g index:0 type:@[FlexibleNullability] .GenericOut? + VALUE_PARAMETER name:g index:0 type:@[FlexibleNullability] @[RawType] .GenericOut? BLOCK_BODY - CALL 'public abstract fun takesRawGenericOut (g: @[FlexibleNullability] .GenericOut?): kotlin.Unit declared in .JRaw' type=kotlin.Unit origin=null + CALL 'public abstract fun takesRawGenericOut (g: @[FlexibleNullability] @[RawType] .GenericOut?): 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.takesRawGenericOut' type=.KRaw origin=null - g: GET_VAR 'g: @[FlexibleNullability] .GenericOut? declared in .KRaw.takesRawGenericOut' type=@[FlexibleNullability] .GenericOut? origin=null - FUN DELEGATED_MEMBER name:takesRawList visibility:public modality:OPEN <> ($this:.KRaw, list:@[FlexibleNullability] kotlin.collections.List?) returnType:kotlin.Unit + 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 overridden: - public abstract fun takesRawList (list: @[FlexibleNullability] kotlin.collections.List?): kotlin.Unit declared in .JRaw + public abstract fun takesRawList (list: @[FlexibleNullability] @[RawType] kotlin.collections.List?): kotlin.Unit declared in .JRaw $this: VALUE_PARAMETER name: type:.KRaw - VALUE_PARAMETER name:list index:0 type:@[FlexibleNullability] kotlin.collections.List? + VALUE_PARAMETER name:list index:0 type:@[FlexibleNullability] @[RawType] kotlin.collections.List? BLOCK_BODY - CALL 'public abstract fun takesRawList (list: @[FlexibleNullability] kotlin.collections.List?): kotlin.Unit declared in .JRaw' type=kotlin.Unit origin=null + CALL 'public abstract fun takesRawList (list: @[FlexibleNullability] @[RawType] kotlin.collections.List?): 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] kotlin.collections.List? declared in .KRaw.takesRawList' type=@[FlexibleNullability] kotlin.collections.List? origin=null + list: GET_VAR 'list: @[FlexibleNullability] @[RawType] kotlin.collections.List? declared in .KRaw.takesRawList' type=@[FlexibleNullability] @[RawType] kotlin.collections.List? 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